Костюмируйте индикаторы из фондовых инструментов - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь реализовать ряд технических индикаторов и добавить их в всплывающие индикаторы из стандартных инструментов. Если я импортирую highcharts/indicators/indicators-all, я получаю десятки индикаторов, поэтому я решил импортировать только те, которые мне нужны, но пока я не смог этого достичь, если я импортирую highcharts/indicators/indicators, я получу только SMA, я попытался импортировать другие технические индикаторы через highcharts/indicators/indicators-INDICATOR-NAME, но это не сработало.

Кроме того, я хотел бы создать технический индикатор / функцию, такую ​​как линейная регрессия (из этого примера ) и прикрепите их к всплывающим индикаторам.

function getLinearRegression(xData, yData) {
  var sumX = 0,
    sumY = 0,
    sumXY = 0,
    sumX2 = 0,
    linearData = [],
    linearXData = [],
    linearYData = [],
    n = xData.length,
    alpha,
    beta,
    i,
    x,
    y;

  // Get sums:
  for (i = 0; i < n; i++) {
    x = xData[i];
    y = yData[i];
    sumX += x;
    sumY += y;
    sumXY += x * y;
    sumX2 += x * x;
  }

  // Get slope and offset:
  alpha = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
  if (isNaN(alpha)) {
    alpha = 0;
  }
  beta = (sumY - alpha * sumX) / n;

  // Calculate linear regression:
  for (i = 0; i < n; i++) {
    x = xData[i];
    y = alpha * x + beta;

    // Prepare arrays required for getValues() method
    linearData[i] = [x, y];
    linearXData[i] = x;
    linearYData[i] = y;
  }

  return {
    xData: linearXData,
    yData: linearYData,
    values: linearData
  };
}

Возможно ли это?

Live Demo


РЕДАКТИРОВАТЬ

Чтобы добавить специфицированный c технический индикатор, вы должны добавить в качестве старшего индикатора импорта / индикаторы / ИМЯ (highcharts/indicators/ema, highcharts/indicators/rsi например)

1 Ответ

1 голос
/ 20 апреля 2020

Эта функция не реализована в стандартных инструментах, но она может быть очень полезна, поэтому вы можете создать новый запрос функции здесь: https://github.com/highcharts/highcharts/issues/new/choose

Обходной путь:

Все ряды индикаторов из опций графика добавляются в фондовые инструменты, поэтому вы можете настроить chart.options.plotOptions, например, в load событие:

chart: {
  events: {
    load: function() {
      var plotOptions = this.options.plotOptions,
        filteredSeries = {};

      Highcharts.objectEach(plotOptions, function(option, key) {
        if (!option.params || key === 'dema' || key === 'customlinearregression') {
          filteredSeries[key] = option;
        }
      });

      this.options.plotOptions = filteredSeries;
    }
  }
}

Демонстрационная версия: https://jsfiddle.net/BlackLabel/xwec9hr7/2/

Полезный пример: https://www.highcharts.com/stock/demo/stock-tools-custom-gui

Код ссылки: https://github.com/highcharts/highcharts/blob/371424be0b168de96aa6a58b81ce0b2b7f40d5c5/ts/annotations/popup.ts#L783

...