我是这个领域的新生,我想用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)