我需要 pine 脚本上的代码,将一些值从最大到最小排序,然后在表中显示例如前 5 个值以及相关的 var_names。
我举了一个我需要的 jpeg 的简单示例。
您可以使用自定义函数对数组进行排序。
声明自定义对象类型(例如 https://it.wikipedia.org/wiki/Bubble_sort):
type typeTest
string name
float level
创建排序功能
bubbleSort(arr) =>
n = array.size(arr) -1
for i = 0 to n - 1
for j = 0 to n-i-1
if array.get(arr , j).level > array.get(arr , j+1).level
temp = array.get(arr,j)
array.set(arr , j , array.get(arr , j + 1))
array.set(arr , j + 1 , temp)
arr
这是一个例子:
array.push(arrayTest, typeTest.new("test1", 1.51))
array.push(arrayTest, typeTest.new("test2", 2.55))
array.push(arrayTest, typeTest.new("test3", -6.13))
array.push(arrayTest, typeTest.new("test4", 9.22))
array.push(arrayTest, typeTest.new("test5", -3.98))
arrayTestSorted = bubbleSort(arrayTest)
如果要改变排序顺序,可以修改if语句中的比较运算符。使用 < to sort the elements in descending order.
代替 >这是完整的代码:
//@version=5
indicator("Il mio script")
type typeTest
string name
float level
var arrayTest = array.new<typeTest>()
bubbleSort(arr) =>
n = array.size(arr) -1
for i = 0 to n - 1
for j = 0 to n-i-1
if array.get(arr , j).level > array.get(arr , j+1).level
temp = array.get(arr,j)
array.set(arr , j , array.get(arr , j + 1))
array.set(arr , j + 1 , temp)
arr
array.push(arrayTest, typeTest.new("test1", 1.51))
array.push(arrayTest, typeTest.new("test2", 2.55))
array.push(arrayTest, typeTest.new("test3", -6.13))
array.push(arrayTest, typeTest.new("test4", 9.22))
array.push(arrayTest, typeTest.new("test5", -3.98))
arrayTestSorted = bubbleSort(arrayTest)
//just for plotting somethin
plot(close)