30周期均线
仓位:每次固定ss手,ss为变量,默认5,范围5到20
开多:以下123同时满足
1收盘价格在30周期均线之上;
2并且当前均线值大于之前第三个均线值,当前k线的实体大于N跳合约最小变动价,N默认为15,范围10到30,且影线长度小于等于实体的15%;
3收盘价减掉当前均线值小于等于M跳合约最小变动价,M默认为15,范围10到40;
平仓:满足下面任何一个条件都清仓
1收盘价低于30周期均线
2开仓之后最高值回撤2%
3低于开仓k线最低价
INPUT:ss(5,5,20,1),N(15,10,30,1),M(15,10,40,1);
ma30:ma(c,30);
syx:=if(c>=o,h-c,h-o);//上影线
xyx:=if(c>=o,o-l,c-l);//下影线
stx:=abs(c-o);//实体线
bcd1:=c>ma30 ;
bcd2:= ma30>ref(ma30,3) and stx>=N*MINDIFF and (xyx+syx)<=stx*0.15;
bcd3:=(c-ma30)<=M*MINDIFF;
scd1:=c<ma30;
scd2:=(HHV(H,ENTERBARS)-CLOSE)/HHV(H,ENTERBARS)>=0.02;//从开仓后的高点回落了2%
scd3:=c<ref(l,ENTERBARS+1);
buy(bcd1 and bcd2 and bcd3 and holding=0,ss,market);
sell(scd1 or scd2 or scd3,holding,market);
持仓:holding;
资产:ASSET;
具体条件1-3和你文字描述里的顺序一致。但是我看了下你这个开仓条件很苛刻,要同时满足 信号很少或者没有。
请看看下面这个,我用下面这个最简单的,也不能回测,这是怎么回事
ma60:ma(c,60);
MA360:MA(C,360);
bcd1:=c>MA360 ;//收盘价格在60周期均线之上;
bcd2:=C> ma60;
scd1:=c<ma60;
buy(bcd1 and bcd2 AND holding=0,10,market);
sell(scd1 ,holding,market);
持仓:holding;
资产:ASSET;
这个能回测的啊。我本地可以的。你是不是没有这个周期的数据。 你方便截图我看下吗?