[PEL] 复制代码
variable:maxprofit:=0,P1:=0,P2:=0;//有仓位时最大获利幅度 //普通开仓
input:m1(4,1,100,10),m2(8,1,100,10),m3(16,1,100,10),m4(32,1,100,10);
bbi:(ma(close,m1)+ma(close,m2)+ma(close,m3)+ma(close,m4))/4;
input:ss(5,1,100,1);//开仓手数;
平空开多X:=cross(c,bbi) ;
平多开空X:=cross(bbi,c);
平空开多:=REF(平空开多X,1);
平多开空:=REF(平多开空X,1);
if 平空开多 then begin
if holding<>0 then maxprofit:=0;
sellshort(holding<0,HOLDING,LIMITR,O);
buy(holding=0,ss,LIMITR,O);
end
if 平多开空 then
begin
if holding<>0 then maxprofit:=0;
sell(holding>0,HOLDING,LIMITR,O);
buyshort(holding=0,SS,LIMITR,O);
end
IF P1<>0 AND h>=P1 AND HOLDING=0 AND NUMPROFIT(1)>0 and c>bbi THEN 止盈后开多:BUY(1,SS,MARKETR);
IF P2<>0 AND L<=P2 AND HOLDING=0 AND NUMPROFIT(1)>0 and c<bbi THEN 止盈后开空:BUYSHORT(1,SS,MARKETR);
//判断当前持仓状态下的最大盈利
win:=0; win2:=0;
if holding > 0 and enterbars >= 0 then
begin
P2:=0;
win:=(h-enterprice); //记录最大盈利点数
if win>=maxprofit then BEGIN maxprofit:=win; P1:=H;END
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
tr1:win;
t2:maxprofit;
if holding < 0 and enterbars >= 0 then
begin
P1:=0;
win:=(enterprice-l); //记录最大盈利点数
if win >= maxprofit then BEGIN maxprofit:=win;P2:=L; END
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
浮动盈亏点数:win;
最大盈利:maxprofit;
浮动盈亏幅度:100*win/AVGENTERPRICE;
//出现浮动亏损比如2%平仓
多止损:sell(浮动盈亏幅度 < -2,0,marketr);
if win2 >= 30 and win > 0 then
begin
多止赢:sell(1, 0,marketr);
end
//出现浮动亏损比如2%平仓
空止损:sellshort(浮动盈亏幅度 < -2,0,marketr);
IF win2 >=30 and win > 0 THEN
BEGIN
空止赢:sellshort(1, 0,marketr);
END
if holding=0 then maxprofit:=0;
持仓:holding;
P1S:P1,NODRAW;
P2S:P2,NODRAW;