TA-Lib 是一个用于 Java、C++、.Net 等的金融/市场/OHLC 技术分析库。其中有大约 158 个技术函数(EMA、MAMA、MACD、SMA 等),每个都有一个关联的回溯函数
public static int EmaLookback(int optInTimePeriod)
每个函数的 Lookback 似乎返回准确计算每个函数所需的最小处理长度。startIdx 到 endIdx 等于 Lookback。
Core.RetCode retcode = Core.Ema(startIdx, endIdx, double inReal, optInTimePeriod, ref outBegIdx, ref outNBElement, double outReal)
其中一些函数使用一个名为
Globals.unstablePeriod[0x17]
如果这在任何方面都不正确,请纠正我。现在的问题...
对于所有条目,数组不稳定期[] 初始化为 0。这是应该发生的事情吗,如果不是,我在 TA-Lib 的哪里可以找到初始化它的代码或数据?
我们正在编写的代码只需要数组 outReal[0](或任何其他“outArray[]”)中的单个最新元素。有没有办法返回单个元素(a),或者 startIdx 和 endIdx 之间的差值是否必须等于 Lookback(b)?
一个)
int startIdx = this.ohlcArray.IdxCurrent;
int endIdx = startIdx;
// call to TA Routine goes here
b)
int lookBack = Core.EmaLookback(optInTimePeriod) - 1;
int startIdx = this.ohlcArray.IdxCurrent;
int endIdx = startIdx + lookBack;
// call to TA Routine goes here
retcode = Core.Ema(startIdx, endIdx, inReal, optInTimePeriod, ref outBegIdx, ref outNBElement, outReal);
为什么当 startIdx 等于 0 时,对于第一个 outArray[0] 元素,这些例程返回 0?
因为我得到了如此奇怪的结果。startIdx 应该在最早的日期还是最新的日期?意思是你应该从过去(startIdx)到现在(endIdx),还是从现在(startIdx)到最旧的日期(endIdx)?我猜我正在向后计算(b)
a) 2000 (startIdx) - 2003 (endIdx),
或
b) 2003 (startIdx) - 2000 (endIdx)