再次请教老师,我的交易模块是根据不同的情况开仓下单,各种不同情况对应不同的平仓方式,所以每种情况根据全局变量设置了开关“开多状态”“和“开多次数”、'YDZS'。当某个开仓条件满足时候,if 后面执行完开多开空后接着给这些开关变量赋不同值,然后对应不同的平仓条件平仓,平仓完成后再对这些变量赋值为0。
但是发现完成一次完整的开平仓时,但只有“开多次数“”的赋值是正确的,开仓的时候‘’开多状态‘’这个变量有的会赋值,有的不会,平仓、止损的时候,全部不能赋值(同一个IF语句下的“开多次数”赋值了。。。),然后这个YDZS,就一直不能赋值。。。
所以导致我的部分模块一直就不能自行。
麻烦老师帮忙看看这些模块这样写是有什么问题
[PEL] 复制代码 /交易条件
VARIABLE:开多次数=0 ,开空次数=0;
VARIABLE:YDZY=0; //移动止盈总开关,1为开,0为关
VARIABLE:HIGHPRICE=0,LOWPRICE=100000; //保存开仓后的最高价、最低价
VARIABLE:开多状态=0,开空状态=0;
DHCDS:=3;
KHCDS:=3; //多、空单回撤点数
DYLDS:=10;
KYLDS:=10; //多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓
手数:=1;
//开多
IF (大趋势=3 OR 大趋势=2) AND 震荡多=1 AND 开多次数=0 THEN BEGIN //大趋势空开多
趋卖市开多:BUY(HOLDING=0,手数,LIMIT,C-1*MINDIFF);
开多次数:=1;
YDZY=1;
开多状态:=3;
END
IF 大趋势=5 AND 开多次数=0 AND (震荡多=1 OR (确认多=1 AND 趋势=1)) THEN BEGIN //震荡市开
震荡市开多:BUY( HOLDING=0,手数,LIMIT,C-1*MINDIFF);
开多次数:=1;
IF 趋势=1 then begin
开多状态=1;
end
else begin
开多状态=3;
YDZY=1;
END
end
//止盈
//多单移动止盈
IF YDZY=1 and 开多状态=3 THEN BEGIN
IF H>HIGHPRICE THEN BEGIN //每周期判断是否创新高
HIGHPRICE:=H;
IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过6点
多移止盈1:SELL( HOLDING>0,HOLDING,MARKET);
开多次数:=0;
YDZY=0;
开多状态=0;
END
END
END
END
//止损
IF C<前低点 and holding>1 then BEGIN
多单止损:SELL(1,holding,MARKET);
开多次数:=0;
开多状态=0;
YDZY=0;
END
IF C<多头止损价 AND HOLDING>0 THEN BEGIN
多止损:SELL(1,holding,MARKET);
开多次数:=0;
开多状态=0;
YDZY=0;
END
END
|