gpt4 book ai didi

.NET:无法从 TA-Lib 获得正确的 RSI 和 MACD 值

转载 作者:行者123 更新时间:2023-12-04 12:31:11 25 4
gpt4 key购买 nike

我正在尝试使用 TA-Lib 进行技术分析。我下载了 .NET 的 TA-Lib-Core Nuget 包。不幸的是,我找不到任何 API 文档,所以一些方法参数有点神秘。

我下载了 2016 年 4 月 12 日和 2017 年 4 月 12 日之间 AMD 的历史数据 here .

这是我用于 RSI 和 MACD 计算的内容:

int outBegIdx1, outNBElement1;
double[] outReal = new double[data.Count];

int outBegIdx2, outNBElement2;
double[] outMACD = new double[data.Count];
double[] outMACDSignal = new double[data.Count];
double[] outMACDHist = new double[data.Count];

TicTacTec.TA.Library.Core.Rsi(0, data.Count - 1, data.Select(x => x.Close).ToArray(), 14, out outBegIdx1, out outNBElement1, outReal);
TicTacTec.TA.Library.Core.Macd(0, data.Count - 1, data.Select(x => (float)x.Close).ToArray(), 12, 26, 9, out outBegIdx2, out outNBElement2, outMACD, outMACDSignal, outMACDHist);

我正在将结果与 TradingView 的 AMD 页面进行比较 here .要查看 RSI 和 MACD 值,请单击顶部的“指标”并选择它们。此外,您应该查看 1 年日线图。

问题是 TA-Lib 输出的结果大不相同,我不确定我是否正确使用了这些 API。我看到的是 RSI 的 65.34 和 MACD 直方图的 0.0431,而不是 TradingView 的 39.42 和 -0.2165。

请注意 data[0]有 4/12/2016 的收盘价,而最后一个元素是 4/12/2017。我也不知道是什么 outBegIdxoutNBElement参数代表。

如何返回正确的值?

最佳答案

Here is解释*变量含义的文档。简而言之,您的数组对应于这样的原始数据:

for (int i = 0; i < outNbElement; i++){
qDebug() << "Result for day #" << outBegIdx+i << ": outMACD: " << outMACD[i]
<< " outMACDSignal: " << outMACDSignal[i]
<< "outMACDHist: " << outMACDHist[i];
}

例如,MACD (12,26,9) 将返回 data.Count - 33 (如果我没记错的话,它将是 -33)数组中的输出值作为输入数据的前 33 个值将用于初始化 MACD 使用的 EMA。例如,如果您正在寻找 10 天 MA(移动平均线)并将 10 天数据传递给 TA-Lib,您应该期望输出数组中只有 1 天结果值(最后一天),因为前 9 天被用来初始化,此时 10 天 MA 还没有准备好。我不确定 MACD(12,26,9) 的确切值是 33 - 您可能会在指标 Lookback 的帮助下找到确切值职能。在 C++ API 中有这样的东西,它们也必须在 C# API 中的某个地方。考虑回溯值,您甚至可以为结果数组分配更少的空间。无论如何,当您传出分配与原始数据相同大小并依赖于 out* 的数组时,您是安全的。索引来迭代它。

如果 TA-Libs 移动平均线的结果与某些网站的结果显着不同,这通常是您开始计算时的影响。例如,在您引用的网站上,我看到 MACD 指标是针对一年中的第 1 个月计算的。如果他们像 TA-Lib 那样只使用去年的数据来计算它,他们就无法得到这个 MACD 数据。必须浪费一些数据的 Bcs 来初始化移动平均线。这意味着他们更早开始了 MACD 计算。例如 3 年前(或他们拥有的所有数据)并仅显示过去 12 个月的结果。例如,如果您切换到 ALL 周期而不是 1y,您会看到在一开始的一小段图表中缺少指标值。这就是他们实际开始计算这种规模的 MACD 的地方。
我会尝试提供 TA-Lib 3 年的数据期,并将其去年与网站进行比较。他们的结果应该足够收敛了。

当您 100% 确定 TA-Lib 的指标和网站的指标是根据相同的数据计算的,那么您应该期望您的结果相同或略有不同。这个小的差异可能是由于指标的不同实现。例如 MACD(12,26,9) 在其公式中使用因子 2/(12+1), 2/(26+1), 2/(9+1)。值 2/27 可以实时计算并与所有可用的进动一起使用。或者它可以四舍五入到 0.074。或者你可以引用你的实现中的一些书,发现他们推荐 0.075 就像 Technical Analysis of Stock Trends, Tenth Edition by Robert D. Edwards,W.H.C. . TA-Lib 会实时计算这些值,但 could be forced通过一些 C++ API 技巧使用硬编码 (0.075, 0.15, 0.2)。

关于.NET:无法从 TA-Lib 获得正确的 RSI 和 MACD 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com