设为首页收藏本站

 找回密码
 注册
查看: 2987|回复: 7
打印 上一主题 下一主题

求助:4.3.2版本函数错误 [复制链接]

Rank: 3Rank: 3

精华
0
UID
3884
积分
154
帖子
29
主题
10
阅读权限
40
注册时间
2009-3-22
最后登录
2013-6-15
跳转到指定楼层
1#
发表于 2012-12-24 22:51:35 |只看该作者 |倒序浏览

原公式
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.最终目标文件编译错误

恳请大侠们帮助,谢谢

Rank: 3Rank: 3

精华
0
UID
3884
积分
154
帖子
29
主题
10
阅读权限
40
注册时间
2009-3-22
最后登录
2013-6-15
2#
发表于 2012-12-24 23:01:08 |只看该作者
简称: 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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2012-12-24 23:12:07 |只看该作者
公式里有用到用户自定义的函数,要先编译函数,再编译公式应用方可

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
4#
发表于 2012-12-25 00:55:53 |只看该作者
小米 发表于 2012-12-24 23:12
公式里有用到用户自定义的函数,要先编译函数,再编译公式应用方可

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

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
5#
发表于 2012-12-25 00:56:48 |只看该作者
我在用户函数 如果用到 TransMinsData  也会出现相同的问题  

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2012-12-25 09:08:10 |只看该作者
月夜微凉 发表于 2012-12-25 00:55
如何查看 有没有 升级到最新版本??? 上周我把Nopain的公式( 求5Min的均线) 校检时没有出现问题,, ...


在软件上方的帮助----关于tradeblazer ,查看软件版本号。当前最新版本号是4.3.2

不光是当前最新版本,在去年升级到V4后就会有W0201此错误提示了。

请确认一下transminsdata函数是在什么时间公布。如果是在2011年4月之前,那会是使用V3编写的,可能会与现在的有所不同。
您可以按v4上的语法需求修改一下公式即可。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
3884
积分
154
帖子
29
主题
10
阅读权限
40
注册时间
2009-3-22
最后登录
2013-6-15
7#
发表于 2012-12-25 20:39:30 |只看该作者
通过公式验证,谢谢

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
8#
发表于 2012-12-25 22:03:50 |只看该作者
小米 发表于 2012-12-25 09:08
在软件上方的帮助----关于tradeblazer ,查看软件版本号。当前最新版本号是4.3.2

不光是当前最新版本, ...

懂了。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-16 03:26

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部