//30分钟K线
N:=BARSLAST(DATE<>REF(DATE,1))+1;//当天开盘以来共有多少根K线
C1:=REF(CLOSE,N);//前1天收
C2:=REF(CLOSE,(N+8));//前2天收
C3:=REF(CLOSE,(N+16));//前3天收
C4:=REF(CLOSE,(N+24));//前4天收
C5:=REF(CLOSE,(N+32));//前5天收
MAC:(C1+C2+C3+C4+C5)/5;
BUY(HOLDING=0 && CLOSE>=MAC && (EXITBARS+1)>0,1);
SELL(HOLDING>0 && ((CLOSE-ENTERPRICE)>30 || CLOSE<MAC),1);
BUYSHORT(HOLDING=0 && CLOSE<=MAC && (EXITBARS+1)>0,1);
SELLSHORT(HOLDING<0 && ((ENTERPRICE-CLOSE)>30 || CLOSE>MAC),1);
加入“(EXITBARS+1)>0”语句是为了在同一个K线上有平仓则不会再开仓,但是策略测试中没有成交。
去除“(EXITBARS+1)>0”语句后,策略测试正常了,但是在某些K线下同时会有平仓和开仓信号。
请问,如何解决这个问题,是EXITBARS参数使用问题吗?
您可以把策略加载到图表上看下,是否满足了开仓条件
比如输出下 a:开仓条件,看下a是否输出为1
[此贴子已经被作者于2020/6/2 16:59:32编辑过]
加了语句A:(HOLDING=0 && CLOSE>=MAC && (EXITBARS+1)>0);
A始终为0。去掉“(EXITBARS+1)>0)”语句A才能为1.
那么,问题在哪?
(EXITBARS+1)>=0 改成大于等于0试试,策略我加载到图表上可以的
此主题相关图片如下:1111.png

[此贴子已经被作者于2020/6/2 17:26:12编辑过]
不行啊,我把程序放在300股指连续指数里面,30分钟K线,还是出现某些K线上同时存在平仓和开仓的现象。
请继续帮忙!
调整下开平仓顺序,您再试试;
N:BARSLAST(DATE<>REF(DATE,1))+1;//当天开盘以来共有多少根K线
C1:=REF(CLOSE,N);//前1天收
C2:=REF(CLOSE,(N+8));//前2天收
C3:=REF(CLOSE,(N+16));//前3天收
c4:=REF(CLOSE,(N+24));//前4天收
C5:=REF(CLOSE,(N+32));//前5天收
MAC:(C1+C2+C3+c4+C5)/5;
BUYSHORT(HOLDING=0 && CLOSE<=MAC && EXITBARS>=-1,1);
SELLSHORT(HOLDING<0 && ((ENTERPRICE-CLOSE)>30 || CLOSE>MAC),1);
BUY(HOLDING=0 && CLOSE>=MAC && EXITBARS>=-1 ,1,marketr);
SELL(HOLDING>0 && ((CLOSE-ENTERPRICE)>30 || CLOSE<MAC),1,marketr);