系统交易论坛 - 开拓者期货自动交易平台's Archiver

jlwangsdu 发表于 2010-7-27 17:00

zigzag指标

请教代码中3个注释的地方,看不懂。
Params
        Numeric RetracePct(5);
Vars       
        NumericSeries SwingPrice;
        Numeric NewSwingPrice;
        NumericSeries PreBar(0);
        NumericSeries UpDn(0);
        Bool SaveSwing(False);
        Bool NewTL(False);
        Bool UpdateTL(False);
begin
        If (CurrentBar > 0)
        {
                UpDn = UpDn[1];
                PreBar = PreBar[1];
                SwingPrice = SwingPrice[1];
        }Else
        {
                SwingPrice = Close;
        }
               
        NewSwingPrice = SwingHigh( 1, Close, 1,2) ;       
        If (NewSwingPrice <> InvalidNumeric)
        {
                If (NewSwingPrice <> -1) //这里-1是什么意思?
                {
                        If(UpDn <=0 && NewSwingPrice >= SwingPrice * (1+RetracePct*0.01))
                        {
                                UpDn = 1;
                                NewTL = True;
                                SaveSwing = True;
                        }Else If(UpDn == 1 && NewSwingPrice >= SwingPrice)
                        {
                                UpdateTL = True;
                                SaveSwing = True;
                        }
                }Else //最后一个大括号是不是应该放在此else前面?
                {
                        NewSwingPrice = SwingLow( 1, Close, 1, 2 ) ;
                        If (NewSwingPrice <> -1)
                        {
                                If(UpDn >=0 && NewSwingPrice <= SwingPrice * (1-RetracePct*0.01))
                                {
                                        UpDn = -1;
                                        NewTL = True;
                                        SaveSwing = True;
                                }Else If(UpDn == -1 && NewSwingPrice <= SwingPrice)
                                {
                                        UpdateTL = True;
                                        SaveSwing = True;
                                }
                        }
                }
               
                If(SaveSwing )
                {
                        SwingPrice = NewSwingPrice;
                        PreBar = CurrentBar;
                }
               
                If( NewTL)
                {
                        PlotNumeric("ZigZag",SwingPrice,-1,1);
                }Else If(UpdateTL)
                {
                        If (UpDn == UpDn[1])
                        {
                                Unplot("ZigZag",PreBar - PreBar[1]+1);
                                PlotNumeric("ZigZag",SwingPrice,-1,1);                               
                        }Else //这个else语句感觉没必要啊,如果UpdateTL成立,UpDn一定等于UpDn[1]吧?
                        {
                                PlotNumeric("ZigZag",SwingPrice,-1,1);                       
                        }
                }               
        }
End

lh948 发表于 2010-7-28 09:02

当SwingHigh( 1, Close, 1,2)取不到波峰值时,返回-1

jlwangsdu 发表于 2010-7-28 09:49

这么重要的信息TB应该在帮助文件说明,而且最后一个else语句个人觉得还是没必要存在。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.