tbuy(1,1,lmt,stkindi(HY2,'Formula3.bprice',0,0)+0.2,0,AccountID,HY2);
tSell(TISPRVREMAIN(1)=0,1,mkt,0,0,AccountID,HY1);
若HY2开多的委托单交易成功,则平掉HY1
这样不行的,你如果米有tuby时候,上一笔委托也是成功的,那么直接就执行tsell了
你或者取判断hy2是否有持仓,如果有持仓了,那么就执行tsell
那么我如何表示持仓比上一次执行多了一手?
类似于
NextBuyHold:tbuyholdingex(AccountID,HY2,1);
a:=NextBuyHold;
If a<NextBuyHold then begin
tsell
end
if tholding>EXTGBDATA( 'num') then
利用全局变量记录num来和tholding走判断
可是代码效果不如预期
相关行如下:
NextBuyHold:tbuyholdingex(AccountID,HY2,1);
EXTGBDATASET('Num',NEXTBUYHOLD);
tbuy(1,1,lmt,stkindi(HY2,'Formula3.bprice',0,0)+0.2,0,AccountID,HY2);
tSell(NEXTBUYHOLD>EXTGBDATA('Num'),1,mkt,0,0,AccountID,HY1);
TCANCELEX(NEXTBUYHOLD=EXTGBDATA('Num'),1,AccountID,HY2);
这样的情况下,运行时会不停地开仓和撤单(但是最终成交的数量大于0),不会平仓
EXTGBDATASET('Num',NEXTBUYHOLD);
这句话只能执行一次,你再用一个全局变量去控制执行一次
NextBuyHold:tbuyholdingex(AccountID,HY2,1);
if...
tbuy(1,1,lmt,stkindi(HY2,'Formula3.bprice',0,0)+0.2,0,AccountID,HY2);
EXTGBDATASET('Num',0);
tSell(EXTGBDATA('Num')=0 and TISPRVREMAIN(1)=0,1,mkt,0,0,AccountID,HY1);
TCANCELEX(EXTGBDATA('Num')=0 and TISPRVREMAIN(1),1,AccountID,HY2);
end
这样的运行结果是若HY1持仓为10手,则这10手很快就平仓,但是HY2开仓成功的数量很少,远没有10手
需求是若HY2开多成功1手则平仓1手HY1,若未成功则撤单