k線圖macd的計算方法
data資料格式:
var data = history_list.map(function (value) {
return [value.Open, value.Close, value.Low, value.High];
});
計算diff方法:
build_diff_data (m_short, m_long, data) {
var result = [];
var pre_emashort = 0;
var pre_emalong = 0;
for (var i = 0, len = data.length; i < len; i++) {
var ema_short = data[i][1];
var ema_long = data[i][1];
if (i != 0) {
ema_short = (1.0 / m_short) * data[i][1] + (1 - 1.0 / m_short) * pre_emashort;
ema_long = (1.0 / m_long) * data[i][1] + (1 - 1.0 / m_long) * pre_emalong;
}
pre_emashort = ema_short;
pre_emalong = ema_long;
var diff = ema_short - ema_long;
result.push(diff);
}
return result;
}
build_diff_data(12,26,data);
計算dea方法:
build_dea_data (m, diff) {
var result = [];
var pre_ema_diff = 0;
for (var i = 0, len = diff.length; i < len; i++) {
var ema_diff = diff[i];
if (i != 0) {
ema_diff = (1.0 / m) * diff[i] + (1 - 1.0 / m) * pre_ema_diff;
}
pre_ema_diff = ema_diff;
result.push(ema_diff);
}
return result;
}
build_dea_data (9,diff);
計算macd方法:
build_macd_data (data, diff, dea) {
var result = [];
for (var i = 0, len = data.length; i < len; i++) {
var macd = 2 * (diff[i] - dea[i]);
result.push(macd);
}
return result;
}
build_macd_data (data, diff, dea);