以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  平仓后反手不执行的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=48311)

--  作者:lcgs005
--  发布时间:2013/1/31 15:29:35
--  平仓后反手不执行的问题

如下代码希望实现平空后反手开多,实际运行时,只执行平空,未执行反手开多,无论是K线走完模式还是1秒轮循均是这样,

 

if a then begin
tsellshort(仓位>0,0,mkt);
tbuy(仓位=0,1,mkt)
end


--  作者:王锋
--  发布时间:2013/1/31 16:17:33
--  
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题15
--  作者:lcgs005
--  发布时间:2013/1/31 16:33:02
--  

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

 

有关这部分的用户详细讨论,详见http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=2775

 

清注意上述代码使用了市价委托,如在CTP接口上模拟交易,请注意一定要在上期所品种下进行

 

THOLING与THODING2的不同:THOLING会返回我们当前的可用持仓,发出平仓指令之后,即便没有成交,持仓也会被扣掉,故如果用THOLING做为开仓条件,会有前次平仓没有成交而马上开仓带来的资金不足情况,如果用户需要知道当前自己的实际持仓,那么请用THODING2,他不会因为你的挂单未成交而导致的实际持仓被扣情况。


--  作者:lcgs005
--  发布时间:2013/1/31 18:02:39
--  

if bp > 0 and THOLDING>0 then

begin

tSELL(1,0,MKT),ORDERQUEUE;

tBUYSHORT(1, 1,MKT),ORDERQUEUE;

end

谢谢,看来红色这句是关键

[此贴子已经被作者于2013-1-31 18:03:21编辑过]