请教下,能否帮忙优化一下代码:
方案:长中短三个周期,①三个收盘价都超过均线则开多 ②三个收盘价都低于均线则开空
异常点:当短周期,中周期都已经向上突破了均线时,此时长周期一直在均线附近上下波动,导致2min之内重复发了4个开仓信号,k线图标上面也随之的出现信号,消失信号4次(走完之后,k线上面最终只显示了一个信号),导致结果是:应该只开1个多,但是开了4个多仓。代码里面的条件MarketPosition <> 1也没有起到限制开仓一手的作用。
代码如下:
------------------------------------------------------------------------------------------------
Params
Numeric length(20);
Vars
Series<Numeric> p_ma;
Numeric cc;
Global Numeric sum_cc;
Events
OnBar(ArrayRef<Integer> indexs)
{
sum_cc=0;
range[0:DataCount-1]
{
p_ma = Average(c,length);
PlotNumeric("P_ma",p_ma);
if(c > p_ma)
{
cc = 1;
}
Else
{
cc = -1;
}
sum_cc = sum_cc + cc;
}
Commentary("sum_cc="+text(sum_cc));
If(sum_cc > 1 and MarketPosition <> 1)
{
buy(1,C);
}
Else if(sum_cc < -1 and MarketPosition <> -1)
{
SellShort(1,C);
}
}
你这又偷价又信号闪烁,重新学一学开发吧,基本等于瞎写