老师这为什么不能达到止损的目标,为什么空止损(zs) 多止损(ZS) 这是直线,我的目标是移动止损的,麻烦老师看一下
VARIABLE:ZS=0,HH=0;//声明全局变量ZS、HL
MA5:=MA(C,5);
MA20:=MA(C,20);
ATR:=MA(H-L,20);//市场平均波动幅度
BUYCOND:=CROSS(MA5,MA20);//平空开多条件
SELLCOND:=CROSS(MA20,MA5);//平多开空条件
IF HOLDING>0 THEN BEGIN
多止损:ZS;
IF L<ZS THEN SELL(1,1,LIMITR,MIN(O,ZS)-MINDIFF);
ELSE IF SELLCOND THEN SELL(1,1,LIMITR,C);
END
IF HOLDING<0 THEN BEGIN
空止损:ZS;
IF H>ZS THEN SELLSHORT(1,1,LIMITR,MAX(O,ZS)+MINDIFF);
ELSE IF BUYCOND THEN SELLSHORT(1,1,LIMITR,C);
END
IF HOLDING=0 AND BUYCOND THEN BEGIN//多头开仓
BUY(1,1,LIMITR,C);
IF H>HH THEN BEGIN
HH:=H;//HL开仓后的最有利价位,刚买入时,最有利价位为开仓价
ZS:=HH-2*ATR;
END
END
IF HOLDING=0 AND SELLCOND THEN BEGIN//空头开仓
BUYSHORT(1,1,LIMITR,C);
IF L<HH THEN BEGIN
HH:=L;
ZS:=HH+2*ATR;
END
END
VARIABLE:ZS=0,HH=0;//声明全局变量ZS、HL
MA5:=MA(C,5);
MA20:=MA(C,20);
ATR:=MA(H-L,20);//市场平均波动幅度
BUYCOND:=CROSS(MA5,MA20);//平空开多条件
SELLCOND:=CROSS(MA20,MA5);//平多开空条件
IF HOLDING>0 THEN BEGIN
IF L<ZS THEN SELL(1,1,LIMITR,MIN(O,ZS)-MINDIFF);
ELSE IF SELLCOND THEN SELL(1,1,LIMITR,C);
END
IF HOLDING<0 THEN BEGIN
IF H>ZS THEN SELLSHORT(1,1,LIMITR,MAX(O,ZS)+MINDIFF);
ELSE IF BUYCOND THEN SELLSHORT(1,1,LIMITR,C);
END
IF HOLDING=0 AND BUYCOND THEN BEGIN//多头开仓
BUY(1,1,LIMITR,C);
IF H>HH THEN BEGIN
HH:=H;//HL开仓后的最有利价位,刚买入时,最有利价位为开仓价
ZS:=HH-2*ATR;
END
END
IF HOLDING=0 AND SELLCOND THEN BEGIN//空头开仓
BUYSHORT(1,1,LIMITR,C);
IF L<HH THEN BEGIN
HH:=L;
ZS:=HH+2*ATR;
END
END
多止损:ZS;
空止损:ZS;
ZS应该是红色的线,不是黄色的才是

此主题相关图片如下:bdfc263f-82e8-432a-9ab7-2005e57aa243.jpg
这个是全局变量啊,只有在上面条件满足的时候才会有数值变化,条件不满足就一直是上一次改变时候的值
全局我是董啊,但是为什么加上这两家会变成曲线,我是想改成不要现在加的这两句,麻烦老师了
VARIABLE:ZS=c,HL=c;//声明全局变量ZS、HL
MA5:=MA(C,5);
MA20:=MA(C,20);
ATR:=MA(H-L,20);//市场平均波动幅度
BUYCOND:=CROSS(MA5,MA20);//平空开多条件
SELLCOND:=CROSS(MA20,MA5);//平多开空条件
IF HOLDING>0 THEN BEGIN
多止损:ZS;
IF L<ZS THEN SELL(1,1,LIMITR,MIN(O,ZS)-MINDIFF);
ELSE IF SELLCOND THEN SELL(1,1,LIMITR,C);
END
IF HOLDING<0 THEN BEGIN
空止损:ZS;
IF H>ZS THEN SELLSHORT(1,1,LIMITR,MAX(O,ZS)+MINDIFF);
ELSE IF BUYCOND THEN SELLSHORT(1,1,LIMITR,C);
END
IF HOLDING=0 AND BUYCOND THEN BEGIN//多头开仓
BUY(1,1,LIMITR,C);
ZS:=C-2*ATR;
HL:=C;//HL开仓后的最有利价位,刚买入时,最有利价位为开仓价
END
IF HOLDING=0 AND SELLCOND THEN BEGIN//空头开仓
BUYSHORT(1,1,LIMITR,C);
ZS:=C+2*ATR;
HL:=C;
END
IF HOLDING>0 AND ENTERBARS>0 AND H>HL THEN BEGIN//最高价抬升,止损位相应地抬升
HL:=H;
ZS:=HL-2*ATR;
END
IF HOLDING<0 AND ENTERBARS>0 AND L<HL THEN BEGIN//最低价下降,止损位相应地下移
HL:=L;
ZS:=L+2*ATR;
END
这种条件满足后才赋值的全局变量,是一条随着k线变化的曲线才是奇怪的问题好吗。全局变量条件满足之后才会赋值,你既然了解为什么还有这样的问题?
[此贴子已经被作者于2013/10/30 11:22:53编辑过]
我奇怪的是我把这两句都去掉,
IF HOLDING>0 AND ENTERBARS>0 AND H>HL THEN BEGIN//最高价抬升,止损位相应地抬升 HL:=H;
ZS:=HL-2*ATR;
END
IF HOLDING<0 AND ENTERBARS>0 AND L<HL THEN BEGIN//最低价下降,止损位相应地下移
HL:=L;
ZS:=L+2*ATR;
END
和有这两句的表达的意思是一样,H>HL ,赋值给 HL:=H;,你可能会说条件的问题,我只要开仓我就开始记录最高价了,不去记录收盘价,道理是一样的,但是结果是不一样,所以还是麻烦老师帮我改一下,不要下面两句,你可能会说结果又差异,但是我觉得应该是不会差别很大,麻烦了,,谢谢
还有就是你给我改的时候不管什么时候都会画出止损线来,我想要的是有多单,和空单的时候画线,麻烦;老师了
而且atr是一个变动的值,(这种条件满足后才赋值的全局变量,是一条随着k线变化的曲线才是奇怪的问题好吗。全局变量条件满足之后才会赋值,你既然了解为什么还有这样的问题?)对于你这种看法我是同意,但你可以给我解释一下,为什么atr在变动,zs不动,希望老师好好看一下