entertime:=currenttime>091000 and currenttime<145000;
exittime:=currenttime>145500;
buycond:=entertime and high >= highest;
buyshortcond:=entertime and low <= lowest;
if tbuyholdingex('84408','ZN06',1)=0 and tsellholdingex('84408','ZN06',1)=0 and buycond then begin
TBUY(1,sv,MKT,0,0,'84408','ZN06');
end
今天利用tbuyholdingex,tsellholdingex判断是否持仓,交易的两个品种橡胶与锌,都在上午11:22:10出现了重复开仓的问题。
好像在这个时间点,tbuyholdingex读出的仓位是“0”,因此出现了重复开仓。
请问有没有其他的方法来稳定的控制不要重复出现开仓的问题?
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 参考问题15
解决方案参考以下两点:
1、使用走完K线模式运行模型,这样检测模型信号间隔时间较长,前面发出的开仓信号后有足够的时间成交
2、如果非要在固定轮询模式运行,请使用TTYPE函数,判断上一次开平仓类型,通过增加这个条件进行过滤。
TBUY(1 and ttype(1)<>1,sv,MKT,0,0,'84408','ZN06');
你要是多账户操作,对于楼主新手用户,不要使用直接使用账户名字,而应该使用账户组。
此外多帐户下,tbuyholdingex等操作都是不建议新手用户的做法。
正版用户以及正式实盘都超过半年了,交易额相当大了,不能称为新手了。
关键是解决多账户下,突破系统如何避免重复开仓的问题:
1、突破系统,一旦满足突破的条件后,突破的条件总是满足,因此必须用另外的条件来判断避免重复开仓。
2、一般突破系统开仓后,都是利用仓位信息来判断是否重复开仓了。因此仓位的读取函数holding,tholding,tbuyholdingex,ttype等非常重要。
3、holding只能用在模拟中,tholding只能用在单账户、单品种中。
4、tbuyholdingex在绝大多数时间情况下是正确的,但是每天总有1-2次读出的仓位信息是错误的,造成每天1-2次的重复开仓。
5、dynainfo(4)\dynainfo(5)\dynainfo(6)好像也存在每天1-2次不正确的情况。
6、当然这种不正确很可能是网络断线引起的,断线的情况下读出的仓位是“零”,因此一旦账户接通,可能立即就对某些账户开仓了。
7、有时这种断线的情况可能造成只对某些账户开仓。因为只有这些账户是接通的。而后面的账户接通后,由于程序判断已经有仓位,反而不再开仓了,因此有些账户就没有仓位。
这都是实盘遇到的问题,在模拟的情况下是没有的,请尽快分析解决。
还请楼主有点耐心的看看我前面帖子给你的回复,不清除你前面描述的重复开单问题的具体原因,但是本帖中你的重复开仓一定是我所说的情况造成
此外,楼主并不了解后台的运行机理,磨刀不误砍柴工,建议楼主看看 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题4,使用一些调试手段来探索后台的运行机理。