您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

非当前商品的挂单情况怎么查寻 [开拓者 TB]

  • 咨询内容: 最近刚开始研究bt代码,有个疑惑,A_xxxx的代码大部分都针对于当前商品,那默认的商品0就是当前商品,但商品1怎么办?
    当发出买入商品1的指令后我希望能获得商品1的未成交委托单的数量,当全部成交后才希望触发商品0的相关指令
    商品0能用A_GetOpenOrderCount()来获取了未成交委托单数量,但商品1的怎么获取?大家请帮帮我

     

  • TB技术人员: data1.a_getopenordercount

     

  • TB客服:
    小米 发表于 2016-3-16 11:28
    data1.a_getopenordercount

    感谢斑竹大大的解惑,后来试着编了一段代码模拟运行了下但又产生了新的疑惑
    我的思路是这样的:满足条件一后对商品1进行开仓买入,然后判断商品1是否成交,一旦成交就买入商品0,不成交就根据最新的买一价来决定是否撤单。
    我编的代码如下:
    1. ……
    2. If(con1)
    3. {
    4.    data1.A_SendOrder(Enum_Buy,Enum_Entry,1,myprice1;
    5.    If (data1.A_GetOpenOrderCount()==0)
    6.    {data0.A_SendOrder(Enum_Buy,Enum_Entry,1,myprice0;
    7.     }
    8. }
    9. Else
    10. {
    11. ……
    12. }
    复制代码1、实际运行的结果却是商品1和商品0同时进行挂单了,哪怕商品1未成交,商品0还是一起挂单了,无法起到判断作用,我应该怎么修改?
    2、还有一个疑问,如果在商品1挂单后,系统在做后续判断的过程中con1又满足触发条件了,这时候系统是继续执行上一次指令还是转向新的一个触发指令亦或是两边一起执行?

     

  • 网友回复:
    TB_KKYY 发表于 2016-3-17 08:53
    感谢斑竹大大的解惑,后来试着编了一段代码模拟运行了下但又产生了新的疑惑
    我的思路是这样的 ...
    1. if(con1 && barstatus==2 && getglovalvar(0)==0)
    2. {
    3.      data1.a_sendorder();
    4.       setglobalvar(0,1);
    5. }
    6. if(data1.a_buyposition>0 && a_getopenordercount==0 && barstatus==2 && getglobalvar(1)==0)
    7. {
    8.       a_sendorder();
    9.       setglobalvar(1,1);
    10. }
    复制代码使用a_sendorder是需在限制在最后K线上执行的,以及要使用全局变量来配合控制发单的次数,否则会有重复发单 的问题。
    上例中已经给出的全局变量在下单 时的控制,但仍需要自己加上全局变量的初始化以及清零 ,以为下一次的交易做准备 。
    不太建议一来就开始使用A_XXXX函数啊。。A_XXX的策略不能在图表上显示信号,不那么直观。
    而且需要自己做更多的控制,是比较复杂的,需要对TB的编程 以及机制有更多的了解后方好着手。

 

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

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


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

相关文章

    没有相关内容