以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  后台回测没结果的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166649)

--  作者:zwdqx
--  发布时间:2018/11/23 17:46:17
--  后台回测没结果的问题


--  作者:zwdqx
--  发布时间:2018/11/23 17:49:04
--  
我的后台策略是固定间隔,想等周线运行结束开仓,所以加了个 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

--  作者:zwdqx
--  发布时间:2018/11/25 14:25:41
--  
查到了,上面是有成交的。我用以下策略在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


--  作者:FireScript
--  发布时间:2018/11/26 9:33:52
--  
 你是说后台回测没结果?你要想办法验证下开仓条件是否有触发。可以单独看下: tj1 and tj2  这个条件能否触发。我简单测试了几个品种,这个条件似乎比较难触发。另外你毕竟引用了日线数据,日线数据也额外补充下。

--  作者:zwdqx
--  发布时间:2018/11/26 21:49:49
--  
开仓条件是有触发的,但是我想优化一下数据。回测没有记录。
--  作者:zwdqx
--  发布时间:2018/11/28 2:48:14
--  
能帮忙看一下是什么原因没有回测记录吗?
--  作者:FireScript
--  发布时间:2018/11/28 9:43:05
--  

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));//条件测试输出

你可以给出你的品种以及你说的条件成立的周期。