以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  关于Tsubmit和Tisremain  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=4116)

--  作者:paulshen
--  发布时间:2010/11/25 17:13:13
--  关于Tsubmit和Tisremain

我的交易公式如下,用的是3分钟周期,高频扫描:

//指令 1
if OT and B_SL and Tholding<0 then begin  //止损
 TSellshort(1,0,lmt,BPR);
end
//指令 2

if OT and BO and Tsubmit(0)=0 and Tisremain(0)=0 and Tholding=0 then begin //止损后的开多
 TBuy(1,OAT,lmt,BPR);
end

//指令 3

if OT and BC and BO and Tsubmit(0)=0 and Tisremain(0)=0 and THolding<0 then begin //反手
 TSellshort(1,0,mkt),orderqueue;
 TBuy(1,OAT,mkt),orderqueue;
end

上面试图用Tsubmit和Tisremain阻止重复开仓。

 

运行的实际结果是不起作用,还是会出现重复开仓,即反手后(指令3),指令2又被执行。Tholding2也试过了。

 

今天还出现了另一个问题,在debugfile输出的记录中,Tsubmit(0)在没有未成交委托的情况下,返回非0值。而Tisremain始终为0,即使在反手的平和开中间(平掉后,开仓尚未执行完)。

 

请帮忙看看什么问题,是否我的用法有问题。

 

另外,就像我在群里提过的,建议对每条指令和各种参数,在各种可能的状态下,都做一下实盘测试


--  作者:admin
--  发布时间:2010/11/25 17:45:45
--  

Tisremain的返回结果依赖成交回报的数据,如果你在高频扫描时,是会因为有成交回报的返回时间限制的

建议你如果在高频交易时,不要依赖THOLDING和Tisremain等具有成交回报结果后才能变化函数,而是需要自行使用全局变量数据库记录标志,通过标志来处理重复下单的问题。

请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题15


--  作者:paulshen
--  发布时间:2010/11/25 20:49:11
--  关于Tsubmit和Tisremain
嗯,谢谢。看来只有用全局变量了。
--  作者:paulshen
--  发布时间:2010/11/29 15:55:58
--  
用全局变量完美的解决了这个问题。金子塔很强大,希望你们能够尽快发展壮大!
[此贴子已经被作者于2010-11-29 15:56:07编辑过]