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

Pine Script技术问询:如何在降序表格中显示MA变量名而非数值

按MA数值降序显示变量名的Pine Script修改方案

原代码仅存储了MA的数值,排序后无法对应回原变量名,需要通过关联存储名称与数值的方式解决。以下是修改后的完整代码:

//@version=5
indicator("MA Rank Display", overlay=true)

// 示例:定义ma1到ma9的移动平均线(可替换为你自己的MA计算逻辑)
ma1 = ta.sma(close, 5)
ma2 = ta.sma(close, 10)
ma3 = ta.sma(close, 20)
ma4 = ta.sma(close, 30)
ma5 = ta.sma(close, 50)
ma6 = ta.sma(close, 60)
ma7 = ta.sma(close, 100)
ma8 = ta.sma(close, 150)
ma9 = ta.sma(close, 200)

// 定义结构体,关联MA名称和对应数值
struct MAData
    name string
    value float

// 创建结构体数组,填充MA数据
maArray = array.new<MAData>()
array.push(maArray, MAData("ma1", ma1[1]))
array.push(maArray, MAData("ma2", ma2[1]))
array.push(maArray, MAData("ma3", ma3[1]))
array.push(maArray, MAData("ma4", ma4[1]))
array.push(maArray, MAData("ma5", ma5[1]))
array.push(maArray, MAData("ma6", ma6[1]))
array.push(maArray, MAData("ma7", ma7[1]))
array.push(maArray, MAData("ma8", ma8[1]))
array.push(maArray, MAData("ma9", ma9[1]))

// 按MA数值降序排序数组
array.sort(maArray, (a, b) => b.value - a.value)

// 创建表格并填充排序后的MA名称
var table maDisplay = table.new(position.top_right, 1, 10)
table.cell(maDisplay, 0, 0, "MA Rank (Desc)")
for i = 0 to array.size(maArray) - 1
    maItem = array.get(maArray, i)
    table.cell(maDisplay, 0, i + 1, maItem.name)

关键修改说明:

  • 结构体定义:用MAData结构体同时存储MA的变量名和数值,确保排序后两者的对应关系不丢失
  • 数组填充:将每个MA的名称字符串(如"ma1")和延迟一期的数值(ma1[1])存入数组
  • 自定义排序:通过array.sort的比较函数,按MA数值从大到小排序
  • 表格渲染:遍历排序后的数组,提取每个元素的name字段显示,替换原有的数值输出

内容的提问来源于stack exchange,提问作者Babu Ramasamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:40:49