M1:=(STKINDI('','MACD.MACD1',0,6,-1)-STKINDI('','MACD.MACD1',0,6,-2))/ABS(STKINDI('','MACD.MACD1',0,6,-1)-STKINDI('','MACD.MACD1',0,6,-2));//日周期方向参数1
M2:=STKINDI('','MACD.MACD1',0,6,-1)/ABS(STKINDI('','MACD.MACD1',0,6,-1)); //日周期方向参数2
M3:=(STKINDI('','MACD.MACD1',0,5,-1)-STKINDI('','MACD.MACD1',0,5,-2))/ABS(STKINDI('','MACD.MACD1',0,5,-1)-STKINDI('','MACD.MACD1',0,5,-2));//小时周期方向参数3
M4:=STKINDI('','MACD.MACD1',0,6,-1)/ABS(STKINDI('','MACD.MACD1',0,6,-1)); //小时周期方向参数4
P:=HOLDING; //交易系统持仓量
N:=10; //总资产分投几个品种
S:=10; //每手几吨
T:=1000; //当前净自有资产(W)
UL:=4; //最多
DL:=M1+M2+M3+M4; //实际
R1:=(2*DL)/UL; //仓位系数
R2:=IFELSE(ABS(R1)>=1,R1/ABS(R1),R1); //调节参数
RS:=T*10000*5*R2/N; //合理仓位
RSS:=ROUND(RS/(C*S)); //合理手数,四舍五入
IF (RSS>0 AND P<=0) THEN BEGIN SELLSHORT(1,0,MARKET);
END
IF (RSS<0 AND P>=0) THEN BEGIN SELL(1,0,MARKET); //清理方向与合理持仓相反的持仓
END
TS:=RSS-P; //调整手数
IF (TS>=0 AND P>=0) THEN BEGIN BUY(1,TS, MARKET); //调整持仓
END
IF (TS>=0 AND P<0 AND TS<=ABS(P)) THEN BEGIN SELLSHORT(1,TS,MARKET);
END
IF (TS>=0 AND P<0 AND TS>ABS(P)) THEN BEGIN SELLSHORT(1,ABS(P),MARKET);
BUY(1,(TS-ABS(P)), MARKET);
END
IF (TS<0 AND P>0 AND ABS(TS)<=P) THEN BEGIN SELL(1,ABS(TS),MARKET); //调整持仓
END
IF (TS<0 AND P>0 AND ABS(TS)>P) THEN BEGIN SELL(1,P,MARKET);
BUYSHORT(1,(ABS(TS)-P),MARKET);
END
IF (TS<0 AND P<=0) THEN BEGIN BUYSHORT(1,ABS(TS),MARKET);
END