以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  这段代码居然有信号消失问题,求助  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=80880)

--  作者:pdkqh88
--  发布时间:2015/7/13 20:19:32
--  这段代码居然有信号消失问题,求助

如下,代码运行在IF07上,图表上叠加了IF08,周期为15秒。

出现连续开仓,跟踪发现信号消失导致。

比如,当天的第30根K的时候出现了开多信号,下了多单,但是但运行到第32根K的时候,第30根K处的信号居然消失了,重新在第32根K处出现开多信号,然后就出现连续开仓了,如果开了持仓校正的话,就会来回折腾。

这只是举个例子,不一定就是第30根K,随时都有可能出现,但是并不是每次都会消失。

很多天了一直没琢磨出问题出在哪儿,各位帮忙看看。

 

DATA1:=CALLSTOCK(\'IF08\',VTCLOSE,12);
EMAV:=EMA(VDATA1,3);
EMAD:=EMA(EMAV-REF(EMAV,1),3);
BARNUM:=BARSLAST((DATE <> REF(DATE,1)));
IF BARNUM>=20 THEN BARNUM:=20;
THRES:=MA(ABS(EMAD),BARNUM);

MyBuyCon:=CROSS(REF(EMAD,1),0-REF(THRES,1));
MySellCon:=CROSS(REF(THRES,1),REF(EMAD,1)));

手数:=1;
开仓时间:=TIME>OPENTIME(1)+NMIN*100 AND TIME<CLOSETIME(2)-NMIN*100;
平仓时间:=TIME>=CLOSETIME(2)-NMIN*100;
 
//交易条件:
开多平空条件:=MyBuyCon and 开仓时间 and holding<=0;
开空平多条件:=MySellCon and 开仓时间 and holding>=0;

//交易系统
收盘平多:sell(平仓时间 and holding>0,0,thisclose),ORDERQUEUE;
收盘平空:sellshort(平仓时间 and holding<0,0,thisclose),ORDERQUEUE;

 

平空:sellshort(开多平空条件 and holding<0,手数,LIMITR,OPEN),ORDERQUEUE;
平多:sell(开空平多条件 and holding>0,手数,LIMITR,OPEN),ORDERQUEUE;
开空:buyshort(开空平多条件 and holding=0,手数,LIMITR,OPEN),ORDERQUEUE;
开多:buy(开多平空条件 and holding=0,手数,LIMITR,OPEN),ORDERQUEUE;


--  作者:pdkqh88
--  发布时间:2015/7/13 20:28:46
--  

头两行贴错了,是这样:

DATA1:=CALLSTOCK(\'IF08\',VTCLOSE,12);
EMAV:=EMA(DATA1,3);


--  作者:十世
--  发布时间:2015/7/14 8:41:14
--  
下次碰到这种情况的时候,你把  开多平空条件:=MyBuyCon and 开仓时间 and holding<=0;中的  MyBuyCon   开仓时间  holding  分别当作变量输出,看看闪烁时是哪个变量的值发生变化导致不满足开多条件
--  作者:yukizzc
--  发布时间:2015/7/14 9:00:47
--  

图表k线数量有么有发生变化,可以右键时间轴,限制好起止时间。

同时代码里加上一个debugfile语句实时记录下3楼说的这几个中间变量值方便盘后去复盘。


--  作者:pdkqh88
--  发布时间:2015/7/14 20:38:59
--  

好的。

但是我在盘中盯着了,确实看到信号消失。


--  作者:yukizzc
--  发布时间:2015/7/14 21:33:49
--  

按照我上面方法试下,ema和你本地起止的k有关系的,不同开始时间得到的结果会有一定出入。

另外不要光看信号消失,这个对解决问题没有多大帮助,必须把中间变量都输出,可以用复盘分笔回放模式找下是哪个变量变了