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

如何在Pine Script中比较数组元素?摆动指标的价时单元对比需求

Pine Script:摆动价格/时间单元的数组比较实现

前提说明

你已经创建了存储摆动价格单元的Swing_PriceUnits数组和时间单元的Swing_TimeUnits数组,接下来需要实现指定的三个摆动单元比较逻辑:

  • 价格单元判断:第三个摆动的价格单元 > 第二个摆动的价格单元,且第二个摆动的价格单元 > 第一个摆动的价格单元
  • 时间单元判断:第二个摆动的时间单元 > 第一个摆动的时间单元,且第一个摆动的时间单元 > 第三个摆动的时间单元

完整实现代码

//@version=5
indicator("Swing Unit Comparator", overlay=true)

// 替换为你实际的SwingPresent、ML_Swing_PUs、ML_Swing_TUs定义逻辑
var bool SwingPresent = ta.barstate.islast 
var float ML_Swing_PUs = close - open 
var int ML_Swing_TUs = bar_index - ta.barssince(SwingPresent[1]) 

// 初始化数组
var Swing_PriceUnits = array.new_float(na)
var Swing_TimeUnits = array.new_int(na)

// 维护数组始终保留最新3个摆动单元
if SwingPresent
    // 元素数量达3个时,先移除最早的记录
    if array.size(Swing_PriceUnits) >= 3
        array.shift(Swing_PriceUnits)
        array.shift(Swing_TimeUnits)
    // 添加新的摆动单元数据
    array.push(Swing_PriceUnits, ML_Swing_PUs)
    array.push(Swing_TimeUnits, ML_Swing_TUs)

// 数组元素比较逻辑
var bool priceCondition = false
var bool timeCondition = false

// 仅当两个数组都至少有3个元素时执行比较
if array.size(Swing_PriceUnits) >= 3 and array.size(Swing_TimeUnits) >= 3
    // 获取三个摆动单元的值(索引0=摆动1,索引1=摆动2,索引2=摆动3)
    swing1_pu = array.get(Swing_PriceUnits, 0)
    swing2_pu = array.get(Swing_PriceUnits, 1)
    swing3_pu = array.get(Swing_PriceUnits, 2)
    
    swing1_tu = array.get(Swing_TimeUnits, 0)
    swing2_tu = array.get(Swing_TimeUnits, 1)
    swing3_tu = array.get(Swing_TimeUnits, 2)
    
    // 价格单元条件判断
    priceCondition = swing3_pu > swing2_pu and swing2_pu > swing1_pu
    // 时间单元条件判断
    timeCondition = swing2_tu > swing1_tu and swing1_tu > swing3_tu

// 示例:双条件满足时绘制标记
plotshape(priceCondition and timeCondition, title="Valid Swing", location=location.belowbar, color=color.green, style=shape.labelup, text="Valid")

// 调试用:最后一根K线显示数组内容与条件结果
if ta.barstate.islast
    label.new(bar_index, high, str.format("Price Units: %s\nTime Units: %s\nPrice Cond: %s\nTime Cond: %s", str.tostring(Swing_PriceUnits), str.tostring(Swing_TimeUnits), str.tostring(priceCondition), str.tostring(timeCondition)), color=color.gray, textcolor=color.white)

代码说明

  1. 数组维护优化:调整原逻辑,确保数组始终存储最新3个摆动单元,避免元素数量在3-4之间波动。
  2. 元素比较实现:通过array.get()提取对应索引的摆动单元值,严格按照需求完成价格、时间单元的条件判断。
  3. 结果复用:priceCondition和timeCondition的布尔值可直接用于信号标记、交易条件触发等后续逻辑。

内容的提问来源于stack exchange,提问作者Imran Shaikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:35:20