我正在使用talib技术分析库计算macd。我使用AAPL数据计算macd(8,17,9),但talib值与google和yahoo finance完全不同。这里是我的javascript(我复制了自2015年8月21日以来的最后一个aapl关闭数据):

var talib = require('./node_modules/talib/build/Release/talib');
var marketData = { open: [], close: [106.2199999999999989,
 112.6500000000000057,
 115.0100000000000051,
 116.5000000000000000,
 117.1599999999999966,
 116,
 115.1500000000000057,
 115.2399999999999949,
 113.5498999999999938,
 119.6901000000000010,
 115.5199999999999960,
 115.1700000000000017,
 115.4000000000000057,
 114.6400000000000006,
 118.4350000000000023,
 121.4599999999999937,
 122.3700000000000045,
 122.9899999999999949,
 123.3199999999999932,
 122.8900000000000006,
 124.4800000000000040,
 125.1599999999999966,
 125.2199999999999989,
 130.7500000000000000,
 132.0699999999999932],high: [], low: [], volume: [] };
 talib.execute({
    name: "MACD",
    startIdx: 0,
    endIdx: marketData.close.length - 1,
    inReal: marketData.close,
    optInFastPeriod: 8,
    optInSlowPeriod: 17,
    optInSignalPeriod: 9
}, function (result) {
   console.log(result);
});

雅虎和谷歌金融2005-08-21的macd值为-2.73,talib值为3.83,随着macd数据的增多,macd值有很大的不同。我做错什么了?我还注意到Talib SMA和EMA给出了相同的结果。顺便说一句,在谷歌图表中反转macd的慢周期和快周期,不会改变图表…雅虎做到了。

最佳答案

25个数据点不足以得到好的结果。EMA级数(macd基于多组ema级数)的计算是递归的。在计算均线/平均市盈率时,我想至少使用一年的收盘价数据。
技术指标软件的烟幕测试可能相当困难,因为你必须确定你使用的是完全相同的数据集,确保你开始使用的初始启动值,等等,与参考系统/计算是一样的。
就获取数据而言,雅虎显然是一个选择。markit还提供an api功能,可以返回历史价格。

07-25 23:17