求助: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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容