[英]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 日起的收盤價:
它們通過“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.