股票策略(买入并持有) - 我的代码中是否存在任何逻辑错误?

时间:2017-11-26 03:54:00

标签: r logic

我是这个领域的新生,我想用R语言测试我的简单策略。我的策略是,首先,我通过过去4年的历史价格获得平均价格,然后在价格低于平均价格时买入股票并持有它。现在,我继续购买,直到当前价格高于平均价格,然后我卖掉它们(我的代码在我的卖出条件下更加复杂)。战略将随着时间的推移而变化。

Ex:买...买...买......卖* 3 ...买...卖* 1 ........(到现在为止)

所以这里的问题是:代码中是否存在任何逻辑错误? while和if函数是否放在正确的位置?

## 980days = 4years(Working Days)
setwd("C:/Users/XXX/Desktop/Learn/R/XX/TW50")
library(quantmod)
library(xts)
STK <- as.xts(read.zoo("2409.txt", header = TRUE, sep = ',' ))
closeprice <- Cl(STK)
st <- mean( closeprice[nrow(STK)-979]:closeprice[nrow(STK)])
STK <- as.matrix(STK)

##profit
PL <- setNames(rep(0, 980), rownames(STK)[(nrow(STK)-979):nrow(STK)]) 
long <- 0 ##Buy
n <- 0 ##Stock Quantity

m = nrow(STK)-979
while (m < nrow(STK)){
##Buy(accumulate)    
if(Cl(STK)[m] <= (st*0.97)){
        long = long + as.numeric(Cl(STK)[m])
        n = n+1}
##Sell(All)
while(Cl(STK)[m] >= (st*1.03) && (Cl(STK)[m]-Cl(STK)[(m-1)]) < 0 
      && Cl(STK)[(m-1)] > Cl(STK)[(m-2):(m-3)] && m < nrow(STK)) {
      PL[m-(nrow(STK)-979)] = as.numeric(Cl(STK)[m])*n - long    
      long = 0; n = 0
      m = m+1
      }
    m = m+1
}    

plot(cumsum(PL), type="l", col="red", lwd=2)

0 个答案:

没有答案