我将程序移植到后台运行模式时,有一段通过读取持仓来判断是否有仓位,决定后续赋值和操作的实例,但在通过函数读取账户仓位时,中间有时间差,所以在这个时间差中,金字塔系统默认账户未返回数据时,函数返回值为0,如果账户返回数据确是没有仓位返回值也是0,在这时间差中(可能是1秒),我如何区分是仓位确是为0,还是有仓位(如10手)只是在账户返回持仓10手信息的瞬间,返回值也为0?请老师帮助解惑,谢谢!
Myholding:=THOLDING(); //当前持仓
Lasthold:=EXTGBDATA(‘Lastholding'); //储存在全局变量中的持仓
If Myholding<>Lasthold Then
EXTGBDATASET('Lastholding',Myholding); //更新实际持仓
If EXTGBDATA('Lastholding')=0 Then EXTGBDATASET('NumEnter',0);
If EXTGBDATA('Lastholding')<>0 Then EXTGBDATASET('NumEnter',1);
以上实例由于Myholding:=THOLDING()这个语句, 在执行的瞬间,信息未返回取到的账户实际持仓之前(假如持仓为10手),Myholding的暂时返回值为0,等到账户返回真实持仓10手后,Myholding为10,但在这之前,系统已经为 EXTGBDATASET('NumEnter',0)赋值为0 了。有什么方法解决这个时间差问题,请老师帮忙解答,谢谢!
因为对于持仓的真实判断,是要去交易柜台查持仓的,所以或多或少都会有一定的延迟.
如果真是成交了,这个时间差很短的,推荐您忽略不计.
当然,也可以用一个全局变量,跟在BUY后面,直接记录开仓手数(这就不需要去柜台查持仓,也没有任何时间差;---此种可能过一段时间需要去柜台查持仓,将本地的记录与柜台里的做同步)
区分未取到账户仓位或账户信息无效时候的0返回值,和真实仓位为0时返回的0值
这个,还真是不会,顶顶帖求教高手.
能不能另外设置一个变量 如果这个变量和你的X都为0 就认为X是第一种
如果这个变量为1 X为0 那么就认为X是第二种
使用一个变量来记录仓位状态即可,在李凯学堂的标准模板里即是用position来判断持仓情况,而不是使用holding函数