您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

抛物线转向公式照搬后编译不起???? [开拓者 TB]

  • 咨询内容: 抛物线转向公式ParabolicSAR复制粘贴后编译不起,不知道什么原因???显示return语句返回值不符。

    //------------------------------------------------------------------------
    // 简称: ParabolicSAR
    // 名称: 求抛物线转向
    // 类别: 用户函数
    // 类型: 内建函数
    // 输出: 数值型
    //------------------------------------------------------------------------

    Params
            Numeric AfStep(0.02);
            Numeric AfLimit(0.2);
            NumericRef oParClose;
            NumericRef oParOpen;
            NumericRef oPosition;
            NumericRef oTransition;
    Vars
            NumericSeries Af(0);       
            NumericSeries ParOpen(0);
            NumericSeries Position(0);       
            NumericSeries HHValue(0);
            NumericSeries LLValue(0);
    Begin
            If (CurrentBar == 0)
            {
                    Position = 1 ;
                    oTransition = 1 ;
                    Af = AfStep ;
                    HHValue = High ;
                    LLValue = Low ;
                    oParClose = LLValue ;
                    ParOpen = oParClose + Af * ( HHValue - oParClose) ;
                    If (ParOpen > Low)
                    {
                            ParOpen = Low ;
                    }
            }Else
            {       
                    oTransition = 0 ;       
                    If (High > HHValue[1])
                    {
                            HHValue = High;
                    }Else
                    {
                            HHValue = HHValue[1];
                    }
                   
                    If (Low < LLValue[1])
                    {
                            LLValue = Low;
                    }Else
                    {
                            LLValue = LLValue[1];
                    }
                   
                    If ( Position[1] == 1)
                    {
                            If ( Low <= ParOpen[1])
                            {
                                    Position = -1 ;
                                    oTransition = -1 ;                               
                                    oParClose = HHValue ;
                                    HHValue = High ;
                                    LLValue  = Low ;
           
                                    Af = AfStep ;
                                    ParOpen = oParClose + Af * ( LLValue - oParClose ) ;
                                           
                                    If (ParOpen < High)
                                    {
                                            ParOpen = High ;
                                    }
                                   
                                    If (ParOpen < High[1])
                                    {
                                            ParOpen = High[1] ;
                                    }
                            }Else
                            {
                                    Position = Position[1];
                                    oParClose = ParOpen[1] ;                                       
                                    If (HHValue > HHValue[1] and Af[1] < AfLimit )
                                    {
                                            If(Af[1]+AfStep > AfLimit)
                                            {
                                                    Af = AfLimit ;
                                            }Else
                                            {
                                                    Af = Af[1]+AfStep;
                                            }                               
                                           
                                    }Else
                                    {
                                            Af = Af[1];
                                    }       
                                    ParOpen = oParClose + Af * ( HHValue - oParClose ) ;                               
           
                                    If (ParOpen > Low)
                                    {
                                            ParOpen = Low ;
                                    }
                                   
                                    If (ParOpen > Low[1])
                                    {
                                            ParOpen = Low[1];
                                    }
                            }
                    }Else
                    {
                            If (High >= ParOpen[1])
                            {
                                    Position = 1 ;
                                    oTransition = 1 ;
                                   
                                    oParClose = LLValue ;
                                    HHValue = High ;
                                    LLValue  = Low ;
                                   
                                    Af = AfStep ;
                                    ParOpen = oParClose + Af * ( HHValue - oParClose) ;
                                    If (ParOpen > Low)
                                    {
                                            ParOpen = Low ;
                                    }
                                   
                                    If (ParOpen > Low[1])
                                    {
                                            ParOpen = Low[1];
                                    }
                            }Else
                            {
                                    Position = Position[1];
                                    oParClose = ParOpen[1];
                                           
                                    If (LLValue < LLValue[1] And Af[1] < AfLimit )
                                    {
                                            If(Af[1]+AfStep > AfLimit)
                                            {
                                                    Af = AfLimit ;
                                            }Else
                                            {
                                                    Af = Af[1]+AfStep;
                                            }
                                    }Else
                                    {
                                            Af = Af[1];
                                    }
                                    ParOpen = oParClose + Af * ( LLValue - oParClose ) ;
           
                                    If (ParOpen < High)
                                    {
                                            ParOpen = High ;
                                    }
                                   
                                    If (ParOpen < High[1])
                                    {
                                            ParOpen = High[1] ;
                                    }
                            }
                    }       
            }       
           
            oParOpen = ParOpen;
            oPosition = Position;
            Return True;
    End

    //------------------------------------------------------------------------
    // 编译版本        GS2010.12.08
    // 版权所有        TradeBlazer Software 2003-2010
    // 更改声明        TradeBlazer Software保留对TradeBlazer平
    //                        台每一版本的TradeBlazer公式修改和重写的权利
    //------------------------------------------------------------------------

     

  • TB技术人员: 亲 你这是函数 不是公式

     

  • TB客服: 学习了,多谢!!!

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容