簡體   English   中英

我的 C# 加權移動平均線結果與 TradingView 不同,TradingView 如何計算 WMA?

[英]My C# Weighted Moving Average result is different than TradingView's, how does TradingView calculate WMA?

TradingView上的財務圖表根據一系列過去的股票價格提供加權移動平均(WMA)值。

我編寫了一個 C# 方法(如下所示)來計算這些 WMA 值,因此在給定相同的股票價格數據的情況下,它們與 TradingView 上的結果完全相同。

在測試了我的腳本之后,我相信我正確地計算了 WMA,並且已經在另一個在線 WMA 計算器上驗證了我的結果。

我的問題是我的結果與 TradingView 的結果略有不同,通常在每個 WMA 值的小數點后第三位精度有所不同。

舉一個現實生活中的例子,以下是一組 10 個蘋果自 2020 年 4 月 1 日起的收盤價:

  1. 下午 3:00 - 241.30 美元
  2. 下午 2:59 - 241.01 美元
  3. 下午 2:58 - 241.04 美元
  4. 下午 2:57 - 241.01 美元
  5. 下午 2:56 - 241.00 美元
  6. 下午 2:55 - 241.15 美元
  7. 下午 2:54 - 241.47 美元
  8. 下午 2:53 - 241.35 美元
  9. 下午 2:52 - 241.61 美元
  10. 下午 2:51 - 241.57 美元

它們通過“Prices”對象進入我的腳本(它可以包含比實際需要更多的價格值,因此額外的“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的小差異……但這對我來說是一個大問題,因為我將此結果用於其他數學運算,並且差異被放大,因此無法使用。

我找不到對差異的解釋,這讓我停下了腳步。

我懷疑這是 Pine 中的舍入錯誤,因為他們的用戶手冊指定:

Pine 中浮點數的內部精度為 1e-10

我從 TradingView 或 Pine 找到的關於他們如何計算 WMA 的唯一文檔似乎與我的腳本完美匹配,所以我沒有想法,正在尋求幫助。 希望我只是錯過了一些明顯的東西!

我最好的猜測是 Pine 有一個替代的 WMA 方程,但我一直沒能找到它。

任何幫助或想法將不勝感激!

計算參見 v4 refman: https ://www.tradingview.com/pine-script-reference/v4/#fun_wma

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM