这个需要做全局变量来记录
首先定义初始手数为1手:
variable:ss=1;
然后在平仓语句内判断盈亏,然后亏损之后就加倍手数:
if 平多条件 and holding>0 then begin
sell(1,0,market);
if numprofit(1)<0 then ss:=ss*2;
end
if 平空条件 and holding<0 then begin
sellshort(1,0,market);
if numprofit(1)<0 then ss:=ss*2;
end
开仓语句里面的下单手数写ss即可
是不是其他也有定义为ss的变量,那么改上面所有的ss即可,比如sss之类的,
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA :=EMA(DIFF,M);
MACD :=2*(DIFF-DEA);
手数:=ss;
//交易条件
开多平空条件:=CROSS(MACD,0);//开多平空条件
开空平多条件:=CROSS(0,MACD);//开空平多条件
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
variable:ss=1;
if CROSS(0,MACD) and holding>0 then begin
sell(1,0,market);
if numprofit(1)<0 then sss:=s*2;
end
if CROSS(MACD,0) and holding<0 then begin
sellshort(1,0,market);
if numprofit(1)<0 then sss:=s*2;
end
variable:sss=1;
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA :=EMA(DIFF,M);
MACD :=2*(DIFF-DEA);
手数:=ss;
//交易条件
开多平空条件:=CROSS(MACD,0);//开多平空条件
开空平多条件:=CROSS(0,MACD);//开空平多条件
//交易系统
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
if CROSS(0,MACD) and holding>0 then begin
sell(1,0,market);
if numprofit(1)<0 then sss:=s*2;
end
if CROSS(MACD,0) and holding<0 then begin
sellshort(1,0,market);
if numprofit(1)<0 then sss:=s*2;
end
老师,我整理一下思路,
我的思路是,当MACD死叉的时候开多,金叉的时候开空,
开始自动化后,第一次出现信号后,开一手,盈利的话下次出现信号继续一手,亏损的话,在原来的手数基础上再加开上次手数的2倍,
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA :=EMA(DIFF,M);
MACD :=2*(DIFF-DEA);
手数:=ss;
//交易条件
开多平空条件:=CROSS(MACD,0);//开多平空条件
开空平多条件:=CROSS(0,MACD);//开空平多条件
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);