Финансовые графики на TradingView предоставляют взвешенное скользящее среднее (WMA) значение, основанное на серии прошлых курсов акций.
I Мы написали метод C# (показанный ниже) для вычисления этих значений WMA, чтобы они точно совпадали с результатами на TradingView при тех же данных о цене акций.
После тестирования моего сценария I верю Я правильно рассчитываю WMA и проверил свои результаты на другом онлайн-калькуляторе WMA .
Моя проблема в том, что мои результаты немного отличаются от результатов TradingView, обычно отличаются на третьем десятичном знаке точности для каждого значения WMA.
Чтобы привести пример из реальной жизни, вот набор из 10 цен закрытия для Apple с 1 апреля 2020 года:
- 15:00 - 241,30
- 14:59 - $ 241,01
- 14:58 - $ 241,04
- 14:57 - $ 241,01
- 14:56 - 241,00
- 2 : 55 вечера - 241,15
- 2: 54 вечера - 241,47
- 14:53 - 241,35
- 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, но я не смог его найти.
Любая помощь или идеи будут с благодарностью!