P:100; //帐户总资产(W)
N:=4; //总资产分散几个合约品种
S:=MULTIPLIER; //该合约乘数即每手几吨
F:=ROUND(P); //防乌龙指阀值
HD1:=HOLDING; //帐户品种现有持仓
…..
…..
…..
以上省略部分为算法部分
HS:=…; //省略的是算法计算的帐户某品种应该持有的理论整数手数
If (ABS(HD1)>ABS(HS) or ABS(HD1)<ABS(HS)) then
begin
TF:=ABS(HS*10*2/10000); //调整仓位阀值(价差低于手续费不作调整)
T1:=ABS(HS)<F AND HS>=0 AND HD1<0;
T2:=ABS(HS)<F AND HS<=0 AND HD1>0;
SELLSHORT(T1,ABS(HD1),MARKETR);
SELL(T2,HD1,MARKETR); //清理相反方向持仓
HD2:=HOLDING; //重新检查现在帐户品种持仓
TS:=HS-HD2; //此时应该调整手数
T3:=ABS(TS)>TF AND ABS(HS)<F AND HS>=0 AND HS>HD2;
T4:=ABS(TS)>TF AND ABS(HS)<F AND HS>=0 AND HS<HD2;
T5:=ABS(TS)>TF AND ABS(HS)<F AND HS<=0 AND HS<HD2;
T6:=ABS(TS)>TF AND ABS(HS)<F AND HS<=0 AND HS>HD2;
BUY(T3,TS,MARKETR);
SELL(T4,ABS(TS),MARKETR);
BUYSHORT(T5,ABS(TS),MARKETR);
SELLSHORT(T6,TS,MARKETR);
End
版主好!有一个问题想请教一下:以上这段程序我实际模拟试过,大部分时间里运行是正常的,但不知为何偶尔会不正常,主要表现在有时某一品种会出现HS(理论持仓)为正(多仓),但实际持仓HOLDING为负(空仓)而程序却不调整,手工强行调整为正后,持仓同步却即时又调整回来为负,又或者反之HS为负,而HOLDING为正同样这一现象,究竟我的程序出了什么问题呢?可否帮我指正并修改过来?谢谢了!