网络延迟引起的重复下单,可以有效避免吗? [开拓者 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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容