您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

同一根K线同时满足开空开多条件的时候出现问题 [金字塔]

  • 咨询内容:

    程序运行于后台1秒钟轮询,开仓语句如下: 

     

    IF  THOLDING=0 AND THOLDING2=0 AND 开多1 THEN 
         开多A:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND 开空1 THEN 
         开空A:TBUYSHORT(1,手数,LMT,BP1);

     

     IF  THOLDING=0 AND THOLDING2=0 AND 开多2 THEN 
         开多B:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND 开空2 THEN 
         开空B:TBUYSHORT(1,手数,LMT,BP1); 

    在某些情况下可能出现既满足开空A,又满足开多B的情况,按道理我在开仓之前用THOLDING=0 AND THOLDING2=0进行了限制

    如果前面已经开仓,无论是否成交后面都不应该再继续开仓. 而实际情况不是这样的, 如果前面开仓,后面还会继续开, 资金不够的

    话会报告资金不足, 但是如果资金有多的,就会出现多空双开的情况

    而图表K线走完模式下不会出现这个问题,所以很明显这个应该是THOLDING出了问题,它没能及时变更数值,对于这种情况该怎么办?

     

  • 金字塔客服:

    1,仔细理解下THODLING和THOLIDNG2的机制,只有成交后才会返回值

     代码从上往下运行,来了tick可能条件同时满足。报单后未及时成交导致值没有返回是很正常的情况

     

    条件里加个未成交判断

     

  • 用户回复:

    THODLING2是成交了才生效,THODLING不是订单发出以后就立即生效了吗? 如果都是成交了才生效那么THODLING2存在的意义何在?

    你说检查未成交单,你看我这样改可以解决问题吗?

     

     IF  THOLDING=0 AND THOLDING2=0 AND TREMAINQTY(0,'','')=0  AND 开多1 THEN 
         开多A:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND TREMAINQTY(0,'','')=0  AND 开空1 THEN 
         开空A:TBUYSHORT(1,手数,LMT,BP1); 

     IF  THOLDING=0 AND THOLDING2=0 AND TREMAINQTY(0,'','')=0 AND 开多2 THEN 
         开多B:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND TREMAINQTY(0,'','')=0 AND 开空2 THEN 
         开空B:TBUYSHORT(1,手数,LMT,BP1); 

     

  • 网友回复:

    http://www.weistock.com/bbs/dispbbs.asp?BoardID=2&ID=49371&skin=0 看下这个帖子

     

    TISREMAIN( ) 用这个函数比较好,具体情况实际验证下。也有可能一比tick过来值未刷新的情况,另外勾选下高频

     

  • 网友回复:

    从我观察应该不是属于tick过来值未刷新,就是因为同时满足条件前面的开仓没有立即成交而后面的又开了,我改成这样,你看如何?

     IF  THOLDING=0 AND THOLDING2=0 AND TISREMAIN(0)=0 AND 开多1 THEN 
         开多A:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND TISREMAIN(0)=0 AND 开空1 THEN 
         开空A:TBUYSHORT(1,手数,LMT,BP1); 

     IF  THOLDING=0 AND THOLDING2=0 AND TISREMAIN(0)=0 AND 开多2 THEN 
         开多B:TBUY(1,手数,LMT,SP1);
     IF  THOLDING=0 AND THOLDING2=0 AND TISREMAIN(0)=0 AND 开空2 THEN 
         开空B:TBUYSHORT(1,手数,LMT,BP1); 


    如果这样还不行,我干脆加个变量,在开仓之前置为0,只要经过一个开平条件就把它设置为1, 然后每次开仓前检查它是不是为0

     

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容