如何在Pine Script中为识别到的看涨吞没蜡烛的开收盘价绘制水平线
实现方案
你可以通过数组存储每次看涨吞没信号触发时的开、收盘价,再遍历数组批量绘制持久水平线,修改后的完整代码如下:
//@version=4 //@WMSIDI study(title = "Engulfing Lines", overlay = true) // 可配置参数:最大显示历史水平线数量,避免线过多过乱 max_lines = input(title="最大保留水平线数量", type=input.integer, defval=10, minval=1) // 优化看涨吞没判断逻辑,替换原嵌套三目运算符,可读性更高 is_bullish_engulfing = open[3] > close[3] and open[2] > close[2] and open[1] > close[1] and close > open and close >= open[1] and close[1] >= open and (close - open) > (open[1] - close[1]) barcolor(is_bullish_engulfing ? color.yellow : na) // 声明持久化数组存储信号触发时的开、收盘价 var array<float> engulf_open = array.new_float() var array<float> engulf_close = array.new_float() // 触发信号时存入当前开收盘价格 if is_bullish_engulfing array.push(engulf_open, open) array.push(engulf_close, close) // 超过最大保留数量时删除最早的记录 if array.size(engulf_open) > max_lines array.shift(engulf_open) array.shift(engulf_close) // 遍历数组绘制所有水平线 for i = 0 to array.size(engulf_open) - 1 // 绘制开盘价水平线(蓝色) plot(array.get(engulf_open, i), "看涨吞没开盘线", color.blue, 2, plot.style_linebr) // 绘制收盘价水平线(Lime色) plot(array.get(engulf_close, i), "看涨吞没收盘线", color.lime, 2, plot.style_linebr)
代码说明
- 优化了原有的嵌套三目运算符判断逻辑,用
and连接多个判断条件,可读性和可维护性更高 - 新增可配置的最大水平线数量参数,你可以根据自己的需求调整保留多少根历史水平直线
- 用
var关键字声明的数组会在脚本运行时持久保存数据,不会每根K线都重置 - 用
plot.style_linebr样式绘制水平线,会自动从信号发生的K线位置开始向右绘制,不会在信号前出现多余的线段 - 当信号数量超过你设置的最大保留数时,会自动删除最早的信号对应的线,避免K线图上线条过多影响使用
内容的提问来源于stack exchange,提问作者wahab Mohmadsharif
相关产品推荐
相关产品推荐

