平多条件:从开仓后的最高值回撤5个ATR OR 开仓损失率达到设定值平空条件:从开仓后的最低值回撤5个ATR OR 开仓损失率达到设定值
代码:
平多条件:=(HHv(c,enterbars+1)-c)>=5*ATR or (enterprice-c)/enterprice>=(最大损失率/1000);
平空条件:=(c-LLv(c,enterbars+1))>=5*ATR or (C-enterprice)/enterpirce>=(最大损失率/1000);
//如果当前是没有持仓的状态
IF holding=0 THEN BEGIN
//多头进场
IF 开多条件 THEN BEGIN
BUY(1,1,market);
END
//空头进场
IF 开空条件 THEN BEGIN
BUYSHORT(1,1,market);
END
END
aa:=ref(平多条件,1);
IF holding>0 and aa then begin
SELL(aa,HOLDING,market);
end
bb:=ref(平空条件,1);
IF holding<0 and bb then begin
SELLshort(bb,HOLDING,market);
end
此代码在图表测试过程中,经常出现开平仓出现在同一根K线上的情况,导致测试结果严重失真,如下图:

此主题相关图片如下:未命名.bmp

请教版主,这代码是哪儿出了问题??!!万分感谢。
不明白失真在哪里?条件不满足但是有信号?还是不好看就觉得失真了?
开仓和平仓在同一根K线上,不是反手的,就是开了就平掉,和止损止盈条件不符,我估计是代码错了,可我换了thisclose,market,nextopen,还是存在这种情况。
开仓是对的,就是不知道怎么刚开就在同一K线上就平了。
平多条件:=(HHv(c,enterbars+1)-c)>=5*ATR or (enterprice-c)/enterprice>=(最大损失率/1000);
平空条件:=(c-LLv(c,enterbars+1))>=5*ATR or (C-enterprice)/enterpirce>=(最大损失率/1000);
把这两句写在开仓语句和平仓语句之间
平仓条件调到开仓后也不行,还是存在这问题。版主,请帮忙看看,是不是代码哪儿有逻辑错误?
aa:=ref(平多条件,1);
IF holding>0 and aa and enterbars>0 then begin
SELL(aa,HOLDING,market);
end
bb:=ref(平空条件,1);
IF holding<0 and bb and enterbars>0 then begin
SELLshort(bb,HOLDING,market);
end