我的后台策略是固定间隔,想等周线运行结束开仓,所以加了个 WEEKDAY()=5 and CURRENTTIME>=145500,能不能这样写?
if tj1 and tj2 and WEEKDAY()=5 and CURRENTTIME>=145500 and tbuyholding(0)=0 THEN begin
tbuy(1,10000/close,mkt);
end
查到了,上面是有成交的。我用以下策略在1分钟线后台回测,得不到数据,不知道错在哪里,请帮忙看一下。macd00:stkindi('','macd.macd1',0,6);macd01:stkindi('','macd.macd1',0,6,-1);
macd00z:stkindi('','macd.macd1',0,7);
macd01z:stkindi('','macd.macd1',0,7,-1);
macd02z:stkindi('','macd.macd1',0,7,-2);
diff00:=stkindi('','macd.diff',0,6);//日macd值
diff01:=stkindi('','macd.diff',0,6,-1);
zvol:callstock(stklabel,vtvol,7);
zc:callstock(stklabel,vtclose,7);
tj1:macd00z>macd01z and last(macd01z<macd02z,2,0) and macd00>macd01;
tj2:zvol>1.1*ref(zvol,1) and zc>1.03*ref(zc,1) and zc<1.09*ref(zc,1);
if tj1 and tj2 and WEEKDAY()=5 and CURRENTTIME>=145500 and tbuyholding(0)=0 THEN begin
tbuy(1,10000/close,mkt);
end
if c>1.10*tavgenterpriceex('','') and tbuyholding(1)>0 then BEGIN
tsell(1,0,mkt);
end
if c>1.07*tavgenterpriceex('','') and tbuyholding(1)>0 then BEGIN
tsell(1,0,mkt);
end
if c>1.05*tavgenterpriceex('','') and tbuyholding(1)>0 then BEGIN
tsell(1,0,mkt);
end
if (diff00<diff01 or c<0.96*tavgenterpriceex('','')) and CURRENTTIME>=145500 and tbuyholding(1)>0 then BEGIN
tsell(1,0,mkt);
end
你是说后台回测没结果?你要想办法验证下开仓条件是否有触发。可以单独看下:
tj1 and tj2 这个条件能否触发。我简单测试了几个品种,这个条件似乎比较难触发。另外你毕竟引用了日线数据,日线数据也额外补充下。
开仓条件是有触发的,但是我想优化一下数据。回测没有记录。
tj2:zvol>1.1*ref(zvol,1) and zc>1.03*ref(zc,1) and zc<1.09*ref(zc,1);
1.你这里小引大引用的是周线周期,一旦不成立 在小周期K上整整一周内都不可能成立的。比如你是1分钟,而这个条件大周期上次成立是上上周,那么你小周期1分钟数据量至少要好几周的才行。这个量非常大
2.最主要的是你这个条件真的好难成立。 你可以把除交易代码之外的部分加载到图表上看看能成立多少次。
macd00:=stkindi('','macd.macd1',0,6);
macd01:=stkindi('','macd.macd1',0,6,-1);
macd00z:=stkindi('','macd.macd1',0,7);
macd01z:=stkindi('','macd.macd1',0,7,-1);
macd02z:=stkindi('','macd.macd1',0,7,-2);
diff00:=stkindi('','macd.diff',0,6);//日macd值
diff01:=stkindi('','macd.diff',0,6,-1);
zvol:=callstock(stklabel,vtvol,7);
zc:=callstock(stklabel,vtclose,7);
tj1:macd00z>macd01z and last(macd01z<macd02z,2,0) and macd00>macd01;
tj2:zvol>1.1*ref(zvol,1) and zc>1.03*ref(zc,1) and zc<1.09*ref(zc,1);
cond:tj1 and tj2;
MSGOUT(cond,NUMTOSTR(BARPOS,0));//条件测试输出
你可以给出你的品种以及你说的条件成立的周期。