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

网络延迟引起的重复下单,可以有效避免吗? [开拓者 TB]

  • 咨询内容: If(A_BuyPosition>0 and A_GetOpenOrderCount==0 and C<=upline-N)
                    {
                    price=Close-off*minpoint;
                    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,price);
                    A_SendOrder(Enum_Sell,Enum_Entry,lots,price);
                    Return;
                    }

    就是这样一个简单的语句,但是模拟时候有发现,有时一次信号会成交很多次(测试时lots设置为1)。
    个人觉得应该是网络问题,因为只是偶尔出现,比如一天测试下来只在某时段出现一两次

    这个可以用技术手段避免吗?我就想说不管是改写法还是加别的函数,能把这个问题处理下。谢谢大家

     

  • TB技术人员: 没法避免。。
    你所说的重复发单的情况,事实上在最优的网络情况下也会发生的。
    必须委托单 从客户端走互联网到交易所,撮合成交后的回报再走互联网到客户端,这一流程是一定需要时间的。。
    以经验来看,流程需要时间是超过了一个tick的时间 。
    所以,发单 后不加以辅助控制的话,在再一个行情tick到来时,仓位还没有变化,若其它条件仍是满足,则会再次发出委托 。
    在使用a_sendorder时,除了仓位的判断控制,一定要加上全局变量配合控制发单次数的。
    具体请参考F1帮助 文档---策略进阶里的模板

     

  • TB客服:
    小米 发表于 2016-1-6 10:35
    没法避免。。
    你所说的重复发单的情况,事实上在最优的网络情况下也会发生的。
    必须委托单 从客户端走互联 ...

    谢谢
    不过因为刚开始学,所以有的地方感觉有点复杂
    能不能简单说下解决的思路?

     

  • 网友回复:
    小米 发表于 2016-1-6 10:35
    没法避免。。
    你所说的重复发单的情况,事实上在最优的网络情况下也会发生的。
    必须委托单 从客户端走互联 ...

    另外我想了个简单的思路,想请小米版主看看这样是否有效

    就是在条件语句后部,加入时间的限制,这样能不能减少这种情况?
    比如我觉得20秒出一个tick足够应付所有情况,我再条件中加入  second==0 , second==20 , second=40
    这样的条件
    就是到了这个秒数,才出信号,这样能不能有效减少此类情况?

     

  • 网友回复:
    mey16601600 发表于 2016-1-6 11:53
    另外我想了个简单的思路,想请小米版主看看这样是否有效

    就是在条件语句后部,加入时间的限制,这样能不 ...

    首先,在1分钟以上的周期是读不到second的值的。
    其次,普通 行情下,1秒钟可有二个tick。这二个tick的second值是一样的。那同样没法控制得到发单 次数。。
    建议还是使用模板给出的全局变量来控制一下吧

 

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

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


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

相关文章

    没有相关内容