MA1:=MA(CLOSE,1);
MA2:=o5,LINETHICK0;
variable:maxprofit=0;//有仓位时最大获利幅度
//开多
IF CROSS(MA1,MA2) THEN
BEGIN
SELLSHORT( HOLDING<0,HOLDING,market); //平空操作
BUY( HOLDING=0,1,market);//开多操作
maxprofit:=0;
END//平仓
SELL(CROSS(MA2,MA1) and HOLDING>0,HOLDING,market);//平多
BUYSHORT(CROSS(MA2,MA1) and HOLDING=0,1,market); //开空操作
//判断当前持仓状态下的最大盈利
问题请教:开多和平空是不是要分开写,再加一个循环。谢谢
编译下来:o5未定义
有,我没有显示。他不是问题。只要循环不存在问题就行,谢谢!
用IF BEGIN
END的写法好,通用性强
MA1:=MA(CLOSE,1)*ml;
MA2:=o5*ml,LINETHICK0;
variable:maxprofit=0;//有仓位时最大获利幅度
//开多
IF CROSS(MA1,MA2) THEN
BEGIN
SELLSHORT( HOLDING<0,HOLDING,market); //平空操作
BUY( HOLDING=0,1,market);//开多操作
maxprofit:=0;
END//平仓
SELL(CROSS(MA2,MA1) and HOLDING>0,HOLDING,market);//平多
BUYSHORT(CROSS(MA2,MA1) and HOLDING=0,1,market); //开空操作
//判断当前持仓状态下的最大盈利
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);
//出现最高盈利后,回落到盈利的60%平仓出场
//止赢:SELL(win2 >=60 and openprofit > 0, 0);
请老师给指导一下这段程序是否存在问题(O5可以随便设一下,我自己设置好的就不说);