以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  为什么这不能达到移动止损的目标  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=58158)

--  作者:lxihua5201
--  发布时间:2013/10/30 10:50:13
--  为什么这不能达到移动止损的目标
老师这为什么不能达到止损的目标,为什么空止损(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 

--  作者:jinzhe
--  发布时间:2013/10/30 10:58:36
--  

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;


--  作者:lxihua5201
--  发布时间:2013/10/30 11:03:42
--  
老师:多止损:ZS;空止损:ZS;这应该是曲线,但是老师改的出来的不是曲线,我用的是ATR:=MA(H-L,20);来作为止损曲线的
--  作者:lxihua5201
--  发布时间:2013/10/30 11:06:29
--  
ZS应该是红色的线,不是黄色的才是
图片点击可在新窗口打开查看此主题相关图片如下:bdfc263f-82e8-432a-9ab7-2005e57aa243.jpg
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2013/10/30 11:07:10
--  
这个是全局变量啊,只有在上面条件满足的时候才会有数值变化,条件不满足就一直是上一次改变时候的值
--  作者:lxihua5201
--  发布时间:2013/10/30 11:10:35
--  
全局我是董啊,但是为什么加上这两家会变成曲线,我是想改成不要现在加的这两句,麻烦老师了
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


--  作者:jinzhe
--  发布时间:2013/10/30 11:22:18
--  
这种条件满足后才赋值的全局变量,是一条随着k线变化的曲线才是奇怪的问题好吗。全局变量条件满足之后才会赋值,你既然了解为什么还有这样的问题?
[此贴子已经被作者于2013/10/30 11:22:53编辑过]

--  作者:lxihua5201
--  发布时间:2013/10/30 11:29:27
--  
我奇怪的是我把这两句都去掉,
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;,你可能会说条件的问题,我只要开仓我就开始记录最高价了,不去记录收盘价,道理是一样的,但是结果是不一样,所以还是麻烦老师帮我改一下,不要下面两句,你可能会说结果又差异,但是我觉得应该是不会差别很大,麻烦了,,谢谢


--  作者:lxihua5201
--  发布时间:2013/10/30 12:29:33
--  
还有就是你给我改的时候不管什么时候都会画出止损线来,我想要的是有多单,和空单的时候画线,麻烦;老师了
--  作者:lxihua5201
--  发布时间:2013/10/30 12:57:00
--  
而且atr是一个变动的值,(这种条件满足后才赋值的全局变量,是一条随着k线变化的曲线才是奇怪的问题好吗。全局变量条件满足之后才会赋值,你既然了解为什么还有这样的问题?)
对于你这种看法我是同意,但你可以给我解释一下,为什么atr在变动,zs不动,希望老师好好看一下