Мой C# взвешенный скользящий средний результат отличается от TradingView, как TradingView рассчитывает WMA? - PullRequest
0 голосов
/ 02 апреля 2020

Финансовые графики на TradingView предоставляют взвешенное скользящее среднее (WMA) значение, основанное на серии прошлых курсов акций.

I Мы написали метод C# (показанный ниже) для вычисления этих значений WMA, чтобы они точно совпадали с результатами на TradingView при тех же данных о цене акций.

После тестирования моего сценария I верю Я правильно рассчитываю WMA и проверил свои результаты на другом онлайн-калькуляторе WMA .

Моя проблема в том, что мои результаты немного отличаются от результатов TradingView, обычно отличаются на третьем десятичном знаке точности для каждого значения WMA.

Чтобы привести пример из реальной жизни, вот набор из 10 цен закрытия для Apple с 1 апреля 2020 года:

  1. 15:00 - 241,30
  2. 14:59 - $ 241,01
  3. 14:58 - $ 241,04
  4. 14:57 - $ 241,01
  5. 14:56 - 241,00
  6. 2 : 55 вечера - 241,15
  7. 2: 54 вечера - 241,47
  8. 14:53 - 241,35
  9. 14:52 - 241,61

Они входят в мой скрипт через объект «Цены» (который может содержать больше ценовых значений, чем на самом деле необходимо, таким образом, дополнительные параметры «startIndex» и «howManyPeriods»):

 public static decimal WeightedMovingAverage(Prices prices, int startIndex = 0, decimal howManyPeriods = -1)
    {
        // Get the correct number of periods
        if (howManyPeriods < 1) howManyPeriods = prices.Count - startIndex;

        // Loop through calculations for the WMA
        decimal numerator = 0, denominator = 0;
        for (int i = 0; i < howManyPeriods; i++)
        {
            Price price = prices[i + startIndex];
            numerator += price.Value * (howManyPeriods - i);
            denominator += i + 1;
        }
        return numerator / denominator;
    }

В этом примере эти 10 значений дают результат WMA 241.16272727 .

Функция TradingView wma Функция Pine возвращает 241.16324727

Это небольшая разница в 0.00052 ... но это большая проблема для меня, потому что я использую этот результат для других математических операций, и разница становится увеличенной и, следовательно, не sable.

Я не могу найти объяснение разницы, и это привело меня к полной остановке.

Я сомневаюсь, что это ошибка округления в Pine, поскольку их руководство пользователя указывает:

Внутренняя точность чисел с плавающей точкой в ​​Pine составляет 1e-10

Единственная документация Я нашел в TradingView или Pine на точно, как они рассчитывают свой WMA, похоже, идеально соответствует моему сценарию, поэтому у меня нет идей и я ищу помощь. Надеюсь, я просто упускаю что-то очевидное!

Мое лучшее предположение - у Пайна есть альтернативное уравнение WMA, но я не смог его найти.

Любая помощь или идеи будут с благодарностью!

1 Ответ

0 голосов
/ 03 апреля 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...