首页 > 解决方案 > array.median() 函数返回错误结果

问题描述

新的array.median()函数计算了错误的结果。

在下面的示例脚本中,PineScript 计算的中位数是 12.20
正确的结果应该是 10.90

此脚本演示了 PineScript 中的错误行为

//@version=4
study("Median test")

// Define array
a = array.new_float()

// Fill array with values
array.push(a,0.6)
array.push(a,12.2)
array.push(a,6)
array.push(a,5.6)
array.push(a,4.1)
array.push(a,8.9)
array.push(a,5)
array.push(a,0.5)
array.push(a,0.2)
array.push(a,14.2)
array.push(a,6.2)
array.push(a,10)
array.push(a,2.5)
array.push(a,5)
array.push(a,9.7)
array.push(a,63)
array.push(a,2.3)
array.push(a,13)
array.push(a,23)
array.push(a,10.9)
array.push(a,13.7)
array.push(a,0.6)
array.push(a,26.4)
array.push(a,49)
array.push(a,40.3)
array.push(a,44)
array.push(a,25.9)
array.push(a,3.6)
array.push(a,3)
array.push(a,48)
array.push(a,38.3)
array.push(a,6.7)
array.push(a,82.4)
array.push(a,82)
array.push(a,31.9)
array.push(a,20.8)
array.push(a,1.6)
array.push(a,15.8)
array.push(a,40.2)
array.push(a,0.8)
array.push(a,41.9)
array.push(a,33.1)
array.push(a,30.8)
array.push(a,1.4)
array.push(a,24.5)
array.push(a,8.9)
array.push(a,3.9)
array.push(a,18.5)
array.push(a,8.2)

// Calculate the median
// The median calculated by PineScript is 12.20 and is wrong.
// The correct median is 10.90
// When the median is calculated in Excel or an online resource like these below, the result is 10.90
// http://www.alcula.com/calculators/statistics/median/
// https://www.calculatorsoup.com/calculators/statistics/mean-median-mode.php
med = array.median(a) 

// Plot the median
plot(med, title="Wrong median")

正确的结果可以通过在 Excel 中计算中位数来验证,或者像 http://www.alcula.com/calculators/statistics/median/这样的在线工具
https://www.calculatorsoup.com/calculators/statistics/mean-中值模式.php

如果您想自己计算,这是脚本中的数据集

0.6
12.2
6
5.6
4.1
8.9
5
0.5
0.2
14.2
6.2
10
2.5
5
9.7
63
2.3
13
23
10.9
13.7
0.6
26.4
49
40.3
44
25.9
3.6
3
48
38.3
6.7
82.4
82
31.9
20.8
1.6
15.8
40.2
0.8
41.9
33.1
30.8
1.4
24.5
8.9
3.9
18.5
8.2

标签: pine-script

解决方案


推荐阅读