UNPKG

@dickyindra/klinecharts

Version:

Lightweight k-line chart built with html5 canvas

109 lines (95 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http:*www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * trix * * TR=收盘价的N日指数移动平均的N日指数移动平均的N日指数移动平均; * TRIX=(TR-昨日TR)/昨日TR*100; * MATRIX=TRIX的M日简单移动平均; * 默认参数N设为12,默认参数M设为9; * 默认参数12、9 * 公式:MTR:=EMA(EMA(EMA(CLOSE,N),N),N) * TRIX:(MTR-REF(MTR,1))/REF(MTR,1)*100; * TRMA:MA(TRIX,M) * */ var _default = { name: 'TRIX', shortName: 'TRIX', calcParams: [12, 9], plots: [{ key: 'trix', title: 'TRIX: ', type: 'line' }, { key: 'maTrix', title: 'MATRIX: ', type: 'line' }], calcTechnicalIndicator: function calcTechnicalIndicator(dataList, _ref) { var params = _ref.params; var closeSum = 0; var ema1; var ema2; var oldTr; var ema1Sum = 0; var ema2Sum = 0; var trixSum = 0; var result = []; dataList.forEach(function (kLineData, i) { var trix = {}; var close = kLineData.close; closeSum += close; if (i >= params[0] - 1) { if (i > params[0] - 1) { ema1 = (2 * close + (params[0] - 1) * ema1) / (params[0] + 1); } else { ema1 = closeSum / params[0]; } ema1Sum += ema1; if (i >= params[0] * 2 - 2) { if (i > params[0] * 2 - 2) { ema2 = (2 * ema1 + (params[0] - 1) * ema2) / (params[0] + 1); } else { ema2 = ema1Sum / params[0]; } ema2Sum += ema2; if (i >= params[0] * 3 - 3) { var tr; var trixValue = 0; if (i > params[0] * 3 - 3) { tr = (2 * ema2 + (params[0] - 1) * oldTr) / (params[0] + 1); trixValue = (tr - oldTr) / oldTr * 100; } else { tr = ema2Sum / params[0]; } oldTr = tr; trix.trix = trixValue; trixSum += trixValue; if (i >= params[0] * 3 + params[1] - 4) { trix.maTrix = trixSum / params[1]; trixSum -= result[i - (params[1] - 1)].trix; } } } } result.push(trix); }); return result; } }; exports.default = _default;