比如账户800988有空单17手
登陆时,刚登上的瞬间,持仓信息为空,1.5秒左右才出现17手持仓
实盘和模拟单一样
相关代码如下:
if not(islastbar) then exit;
ac:='800988';
buyhold:=tbuyholdingex(ac,stklabel,1);
sellhold:=tsellholdingex(ac,stklabel,1);
leixing:=taccount2(2,ac);
debugfile('c:\canwei.txt','leixing='&numtostr(leixing,0)&' buyhold='&numtostr(buyhold,0)&' sellhold=%.0f',sellhold);
然后手工登陆账户,就可以发现:
taccount2(2,ac) = 2 时(表示登陆成功了),buyhold 和 sellhold 依然为0 ,1.5秒后才转为正常。
调试记录如下:
2012-08-28 14:12:25.921 leixing=0 buyhold=0 sellhold=0 //未登陆
2012-08-28 14:12:26.421 leixing=0 buyhold=0 sellhold=0
2012-08-28 14:12:26.921 leixing=0 buyhold=0 sellhold=0
2012-08-28 14:12:27.421 leixing=0 buyhold=0 sellhold=0
2012-08-28 14:12:28.437 leixing=255 buyhold=0 sellhold=0 //登陆中
2012-08-28 14:12:28.921 leixing=2 buyhold=0 sellhold=0 //登陆后
2012-08-28 14:12:29.421 leixing=2 buyhold=0 sellhold=0
2012-08-28 14:12:29.921 leixing=2 buyhold=0 sellhold=0
2012-08-28 14:12:30.921 leixing=2 buyhold=0 sellhold=17 // 转为正常
2012-08-28 14:12:31.421 leixing=2 buyhold=0 sellhold=17
2012-08-28 14:12:31.921 leixing=2 buyhold=0 sellhold=17
2012-08-28 14:12:32.421 leixing=2 buyhold=0 sellhold=17
2012-08-28 14:12:32.921 leixing=2 buyhold=0 sellhold=17
这种对实盘的影响主要表现在账户中断后自动重连的瞬间
重连成功的那一刻,持仓信息和实际的持仓信息不一致,导致模型(后台模型,用了tsellholdingex和tbuyholdingex控制下单)判断账户里没持仓,然后重新下单,造成重复开仓
希望可以改进成 :等buyhold和sellhold的取值正确后,才让taccount2(2,ac)等于相应的类型值。
建议收到
目前VBA的版本2.93已经解决,下个版本才能全部解决全部的
VBA?跟VBA有关系?
算了,能解决就好
用vba的有福了。