多策略你那个代码不完全可行的。多策略之间不能直接进行通信的。需要一个全局的协调。
a策略从发信号到成交,再到最后市值数据更新,这个中间终归是有耗时(大概率比程序运行耗时长)的。如果其他策略在这个中间发信号,那直接就控制不住的,尤其你还是股票,可能还存在回报非主推之类的问题。
有一个现成 代码比较复杂,并且有副作用:有未成交时候 所有信号都会被屏蔽的。
参考以下代码,但是我的建议是如何不能理解代码逻辑,最好不要用。很可能操作不好。
[PEL] 复制代码 input:y(50000,1,20000000,1); //持仓限额
zh:=''; //账户
_str:='_limit';
num1:=100;
uncompleted:tisremainex(1,zh,''); //后台监控所有品种是否有开仓未成交单
账户市值:TACCOUNT(28);//账户栏的浮动持仓市值
//没有开仓未成交时候 始终同步最新的市值
if uncompleted=0 then
begin
extgbdataset(_str,账户市值);
end
cond_add:=c<o and 账户市值<y and extgbdata(_str)+c*num1<y and tglobalsubmitex(1,zh,'',0)=0;
if cond_add then
begin
tbuy(tbuyholdingex(zh,'',1)=0,num1,lmt,close,0,zh);
//开仓时候无论是否成交,把拟成交的市值直接加到全局变量的值中,等没有未成交后 11行位置代码会更新最新市值
extgbdataset(_str,extgbdata(_str)+c*num1);
end
你可以使用简单的开仓测试下。 |