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

求助:4.3.2版本函数错误 [开拓者 TB]

  

  • 咨询内容:
    原公式
    Params
            Numeric Length(14);
    Vars
            Numeric oDMIPlus( 0 );
            Numeric oDMIMinus( 0 );
            Numeric oDMI( 0 );
            Numeric oADX( 0 );
            Numeric oADXR( 0 );
            Numeric oVolty( 0 );
    Begin
            DirMovement(Length, oDMIPlus, oDMIMinus, oDMI, oADX, oADXR, oVolty ) ;
            PlotNumeric( "DMI+" ,oDMIPlus);
            PlotNumeric( "DMI-" ,oDMIMinus);
            PlotNumeric( "ADX" ,oADX);
                    PlotNumeric( "20" ,20);
    End
    1.error lnk2001: unresolved externals symbol "bool_cdecl f_dirmovement(class CSysfuncbase *, class std::basic_strind<char,struct std::char_traits<char>,class std::allocator<char>>const &,double,double,&,double &,double &,double &,double &,
    2.fatal error lnk1120: 1 unresolved externals
    3.最终目标文件编译错误

    恳请大侠们帮助,谢谢

     

  • TB技术人员: 简称: DirMovement
    // 名称: DirMovement
    // 类别: 用户函数
    // 类型: 用户函数
    // 输出: 布尔型
    //------------------------------------------------------------------------

        Params
                Numeric Length(14);
                NumericRef oDMIPlus;
                NumericRef oDMIMinus;
                NumericRef oDMI;
                NumericRef oADX;
                NumericRef oADXR;
                NumericRef oVolty;
        Vars
                NumericSeries sDMI;
                NumericSeries sADX;
                NumericSeries sVolty;
                Numeric PlusDM;
                Numeric MinusDM;
                Numeric UpperMove;
                Numeric LowerMove;
                Numeric SumPlusDM(0);
                Numeric SumMinusDM(0);
                Numeric SumTR(0);
                NumericSeries AvgPlusDM;
                NumericSeries AvgMinusDM;
                Numeric SF;                        // smoothing factor
                Numeric Divisor;
                Numeric i;
                NumericSeries TRValue;
        Begin
                SF = 1/length;
                TRValue = TrueRange;
                If(CurrentBar == Length)
                {
                        for i = 0 To Length - 1
                        {
                                PlusDM = 0 ;
                                MinusDM = 0 ;
                                UpperMove = High[i] - High[ i + 1 ] ;
                                LowerMove = Low[ i + 1 ] - Low[i] ;
                                if (UpperMove > LowerMove and UpperMove > 0 )
                                {
                                        PlusDM = UpperMove;
                                }else if (LowerMove > UpperMove and LowerMove > 0)
                                {
                                        MinusDM = LowerMove ;
                                }
                                SumPlusDM = SumPlusDM + PlusDM ;
                                SumMinusDM = SumMinusDM + MinusDM ;
                                SumTR = SumTR + TRValue[i] ;
                        }
                        AvgPlusDM = SumPlusDM / Length ;
                        AvgMinusDM = SumMinusDM / Length ;
                        sVolty = SumTR / Length ;
                }Else if(CurrentBar > Length)
                {
                        PlusDM = 0 ;
                        MinusDM = 0 ;
                        UpperMove = High - High[1] ;
                        LowerMove = Low[1] - Low ;
                        if (UpperMove > LowerMove and UpperMove > 0 )
                        {
                                PlusDM = UpperMove;
                        }else if (LowerMove > UpperMove and LowerMove > 0 )
                        {
                                MinusDM = LowerMove ;
                        }
                        AvgPlusDM = AvgPlusDM[1] + SF * ( PlusDM - AvgPlusDM[1] ) ;
                        AvgMinusDM = AvgMinusDM[1] + SF * ( MinusDM - AvgMinusDM[1] ) ;
                        sVolty = sVolty[1] + SF * ( TRValue  - sVolty[1] ) ;
                }Else
                {
                        oDMIPlus = InvalidNumeric;
                        oDMIMinus = InvalidNumeric;
                        oDMI = InvalidNumeric;
                        oADX = InvalidNumeric;
                        oADXR = InvalidNumeric;
                        oVolty = InvalidNumeric;
                        Return True;
                }
               
                if (sVolty > 0)
                {
                        oDMIPlus = 100 * AvgPlusDM / sVolty ;
                        oDMIMinus = 100 * AvgMinusDM / sVolty ;
                }else
                {
                        oDMIPlus = 0 ;
                        oDMIMinus = 0 ;
                }

                Divisor = oDMIPlus + oDMIMinus ;
                if (Divisor > 0)
                {
                        sDMI = 100 * Abs( oDMIPlus - oDMIMinus ) / Divisor;
                }else
                {
                        sDMI = 0 ;
                }

                if(CurrentBar > 0)
                {
                        if (CurrentBar <= Length)
                        {
                                sADX = Cum( sDMI ) / CurrentBar ;
                                oADXR = ( sADX + sADX[ CurrentBar - 1 ] ) * 0.5 ;
                        }else  
                        {
                                sADX = sADX[1] + SF * ( sDMI - sADX[1] ) ;
                                oADXR = ( sADX + sADX[ Length - 1 ] ) * 0.5 ;
                        }
                }
                oVolty = sVolty;
                oDMI = sDMI;
                oADX = sADX;
                Return True;
        End

     

  • TB客服: 公式里有用到用户自定义的函数,要先编译函数,再编译公式应用方可

     

  • 网友回复:
    小米 发表于 2012-12-24 23:12
    公式里有用到用户自定义的函数,要先编译函数,再编译公式应用方可

    如何查看 有没有 升级到最新版本??? 上周我把Nopain的公式( 求5Min的均线) 校检时没有出现问题,,,但是我今天再次用到TransMinsData  这公式 校检时就提示 : FOR、WHILE、IF、ELSE中包含序列函数,可能存在潜在的逻辑错误,请确认代码无误,  错误号:W0201    错误类型都是  用户公式   

     

  • 网友回复: 我在用户函数 如果用到 TransMinsData  也会出现相同的问题

 

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

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容