如何在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
相关产品推荐
相关产品推荐

