求助: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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容