如何在Pine Script中获取固定的最后K线开盘价并用于阻力位筛选?
修正Pine Script阻力位绘制逻辑:基于固定最后K线开盘价判断
你当前的代码存在两个核心问题:
- 仅在最后一根K线时才给
lastcloseprice赋值,导致之前的K线在判断时该变量为na,无法正确筛选符合条件的阻力位 - 变量名和赋值不符需求:你需要用最后一根K线的开盘价,但代码里赋值的是收盘价
以下是修正后的代码,完全满足「所有阻力位均高于固定最后一根K线开盘价,且所有K线判断都使用该固定值」的需求:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © amjupvc1234 //@version=5 indicator("ResistancePlotter", overlay=true, max_boxes_count = 50) // 存储固定的最后一根已完成K线的开盘价,var确保值全程不变 var float lastBarOpen = na if barstate.islast lastBarOpen := open[1] // 获取最后一根已走完K线的开盘价作为固定值 RSI = ta.rsi(close, 14) // 修正条件:前阳后阴、RSI维持在50以上,且当前K线开盘价高于固定的最后K线开盘价 Condition = open[1] < close[1] and close < open and RSI[1] > 50 and RSI > 50 and open > lastBarOpen if Condition // 取当前K线和前一根K线中的最高价作为阻力位上边界 boxHigh = math.max(high[1], high) boxLow = open // 绘制向右延伸的阻力箱体 box.new(bar_index[1], boxLow, bar_index, boxHigh, #e479bd, 1, line.style_solid, extend.right, xloc.bar_index, color.new(color.red, 90))
关键修改说明
- 固定价格存储:用
var声明lastBarOpen,确保在图表加载后,该值会被设置为最后一根已完成K线的开盘价,并且后续不会随K线更新而改变,完全符合「固定值」的要求 - 条件判断修正:将原代码中的
lastcloseprice替换为lastBarOpen,确保所有K线的判断都基于同一个固定的开盘价 - 阻力位边界优化:用
math.max(high[1], high)取两根K线的最高价作为箱体上边界,避免因单根K线高低波动导致阻力位不准确
内容的提问来源于stack exchange,提问作者Welder Pasha
相关产品推荐
相关产品推荐

