
等级: 标准版
- 注册:
- 2022-11-14
- 曾用名:
|
为解决信号闪烁引发重复下单问题
麻烦老师帮加三个条件:
一、同一份合约中如有持仓禁止下单。
二、平仓信号出现时,同一份合约不论多空全部平仓。
三、先平后开。
单策略多品种,这样设置不会影响到其他运行正常的品种吧
{交易条件}
开多条件:= AA AND BB;
平多条件:= CC;
开空条件:= DD AND EE ;
平空条件:= FF;
{交易系统}
variable:maxprofit=0;//有仓位时最大获利幅度
平空:SELLSHORT(平空条件 ,手数,MARKET); //平空信号
if 开多条件 and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,MARKET); //开多信号
maxprofit:=0;
end
平多:SELL(平多条件 ,手数,MARKET); //平多信号
if 开空条件 and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,MARKET); //开空信号
maxprofit:=0;
end
//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
win:=(c-enterprice)/enterprice*100; //记录最大盈利
if win>maxprofit then
maxprofit:=win;
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
win:=(enterprice-c)/enterprice*100; //记录最大盈利
if win > maxprofit then
maxprofit:=win;
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
多止损:SELL(win < -1,0,limit,c);
//出现最高盈利后,回落到盈利的60%平仓出场
多止赢:SELL(win2 >= 95 and openprofit > 0, 0,limit,c);
空止损:SELLSHORT(win < -1,0,limit,c);
空止赢:SELLSHORT(win2 >= 95 and openprofit > 0, 0,limit,c);
持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
|
|