You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TradingView的Pine Script中对20个变量进行动态升序排序

Pine Script 20个变量动态升序排序实现方案

Pine Script v5内置了成熟的数组操作API,直接通过数组实现排序是性能最优、出错率最低的方案,无需自行编写排序逻辑,具体实现如下:

实现步骤

  • 第一步:将20个待排序变量存入数组
    首先声明和变量类型匹配的数组,将所有变量依次写入数组,示例代码如下:
    //@version=5
    indicator("20变量排序示例", overlay=false)
    
    // 此处为示例20个变量,可替换为你自己的业务变量
    val1 = ta.sma(close, 5)
    val2 = ta.sma(close, 10)
    val3 = ta.sma(close, 15)
    val4 = ta.sma(close, 20)
    val5 = ta.sma(close, 25)
    val6 = ta.sma(close, 30)
    val7 = ta.sma(close, 35)
    val8 = ta.sma(close, 40)
    val9 = ta.sma(close, 45)
    val10 = ta.sma(close, 50)
    val11 = ta.sma(close, 55)
    val12 = ta.sma(close, 60)
    val13 = ta.sma(close, 65)
    val14 = ta.sma(close, 70)
    val15 = ta.sma(close, 75)
    val16 = ta.sma(close, 80)
    val17 = ta.sma(close, 85)
    val18 = ta.sma(close, 90)
    val19 = ta.sma(close, 95)
    val20 = ta.sma(close, 100)
    
    // 声明浮点型数组,填入所有待排序变量
    sort_arr = array.new_float()
    array.push(sort_arr, val1)
    array.push(sort_arr, val2)
    array.push(sort_arr, val3)
    array.push(sort_arr, val4)
    array.push(sort_arr, val5)
    array.push(sort_arr, val6)
    array.push(sort_arr, val7)
    array.push(sort_arr, val8)
    array.push(sort_arr, val9)
    array.push(sort_arr, val10)
    array.push(sort_arr, val11)
    array.push(sort_arr, val12)
    array.push(sort_arr, val13)
    array.push(sort_arr, val14)
    array.push(sort_arr, val15)
    array.push(sort_arr, val16)
    array.push(sort_arr, val17)
    array.push(sort_arr, val18)
    array.push(sort_arr, val19)
    array.push(sort_arr, val20)
    
  • 第二步:执行升序排序
    Pine Script v5的array.sort()方法默认就是升序排序,直接调用即可完成动态排序:
    // 升序排序,无需额外传参
    array.sort(sort_arr)
    
    若后续需要改为降序,仅需补充参数order.descending即可。
  • 第三步:读取排序后的结果
    数组下标从0开始计数,排序完成后可以通过下标读取任意顺位的数值:
    // 示例:读取排序后最小的3个值和最大的3个值
    min_1st = array.get(sort_arr, 0)
    min_2nd = array.get(sort_arr, 1)
    min_3rd = array.get(sort_arr, 2)
    max_1st = array.get(sort_arr, 19)
    max_2nd = array.get(sort_arr, 18)
    max_3rd = array.get(sort_arr, 17)
    
    // 示例:将结果输出到TradingView数据窗口
    plotchar(min_1st, "排序后第1小值", "")
    plotchar(min_2nd, "排序后第2小值", "")
    plotchar(min_3rd, "排序后第3小值", "")
    plotchar(max_1st, "排序后第1大值", "")
    plotchar(max_2nd, "排序后第2大值", "")
    plotchar(max_3rd, "排序后第3大值", "")
    

注意事项

  • 若你的变量存在na空值,排序时空值会被统一排在最后,如需提前过滤空值,可以在变量写入数组前用na()方法判断,仅将非空值存入数组
  • 如果你使用的是Pine Script v4版本,没有内置array.sort()方法,建议升级到v5版本,兼容性和功能覆盖度更高
  • 每次K线更新时,数组会重新写入最新的变量值、重新执行排序,天然满足动态更新的需求

内容的提问来源于stack exchange,提问作者rohan sawant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:21:02