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);

猜你喜欢

转载自blog.csdn.net/qq_33040483/article/details/79395954