你让我看应该是问题15吧:
15、有关后台自动交易THOLDING的使用
初学者在使用后台自动交易时,通常认为将函数前简单加T就可以,但实际不行的,比如:
tSELL(bp and THOLDING>0,0,LMT,C);
tSELLSHORT(sp and THOLDING<0,0,LMT,C);
tBUY(bk and THOLDING=0,1,LMT,C);
tBUYSHORT(sk and THOLDING=0, 1,LMT,C);
在图表交易系统上这样改过来的代码
THOLDING与图表HOLDING最大的不同在于,THOLDING是与你真实持仓一致的函数,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,BUY执行过后立即变化。
由于我们前面的代码在执行了平仓操作后,THOLDING不会马上变成0,故会导致TBUY的THOLDING=0条件不被成立,导致没有反手信号。
正确的反手写法
if bp > 0 and THOLDING>0 then
begin
tSELL(1,0,MKT),ORDERQUEUE;
tBUYSHORT(1, 1,MKT),ORDERQUEUE;
end
if sp > 0 and THOLDING<0 then
begin
tSELLSHORT(1,0,MKT),ORDERQUEUE;
tBUY(1,1,MKT),ORDERQUEUE;
end
清注意上述代码使用了市价委托,如在CTP接口上模拟交易,请注意一定要在上期所品种下进行
==============
admin,你说的是这条吧?嗯,我再好好看看。有个问题:
按照上面说的,由于我的开仓指令判断了Tholding, 平仓指令没有执行完前,应该没有发出才对,怎么会出现平仓刚发出,立刻就发出开仓指令呢?