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

如何在Pine Script支撑阻力指标中添加参数选项选择功能

TradingView Classic_Levels 指标参数修改实现

以下是将distance(时间范围)和sensitivity(灵敏度)参数改为下拉选择式的完整Pine Script v5代码:

//@version=5
indicator("Classic_Levels (Dropdown Params)", overlay=true, shorttitle="CL_Dropdown")

// --- 修改为下拉选择的参数 ---
distanceInput = input.string("200", title="Time Range (Bars)", options=['100','200','300','500'], tooltip="选择用于计算支撑阻力的K线数量范围")
distance = str.toint(distanceInput)

sensitivityInput = input.string("1.0", title="Sensitivity", options=['0.5','1.0','1.5','2.0'], tooltip="调整支撑阻力位的识别灵敏度,数值越高识别的点位越少")
sensitivity = str.tofloat(sensitivityInput)

// --- 原指标核心计算逻辑(保留经典逻辑)---
var float[] swingHighs = array.new_float()
var float[] swingLows = array.new_float()

// 收集指定周期内的高低点数据
if barstate.islast
    for i = 0 to distance - 1
        array.push(swingHighs, high[i])
        array.push(swingLows, low[i])

// 按灵敏度筛选有效支撑阻力位
array.sort(swingHighs)
array.sort(swingLows)

atrValue = ta.atr(14)

// 绘制阻力位(红色线)
for i = 0 to array.size(swingHighs) - 1
    if i == 0 or swingHighs[i] - swingHighs[i-1] > sensitivity * atrValue
        line.new(bar_index - distance, swingHighs[i], bar_index, swingHighs[i], color=color.new(color.red, 0), width=2, style=line.style_dashed)

// 绘制支撑位(绿色线)
for i = 0 to array.size(swingLows) - 1
    if i == 0 or swingLows[i-1] - swingLows[i] > sensitivity * atrValue
        line.new(bar_index - distance, swingLows[i], bar_index, swingLows[i], color=color.new(color.green, 0), width=2, style=line.style_dashed)

关键修改说明

  • 将原input.int类型的distance参数替换为input.string下拉选择,通过str.toint()将选中的字符串转换为整数,确保指标计算逻辑不受影响
  • 将原input.float类型的sensitivity参数替换为input.string下拉选择,通过str.tofloat()将选中的字符串转换为浮点数
  • 下拉选项可根据需求自行调整,只需修改options数组内的字符串值即可

内容的提问来源于stack exchange,提问作者salem A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:37