如何为TradingView筛选器中不绑定K线价格的plotshape方块创建警报
TradingView ABCD形态筛选器警报创建与回测报错解决方案
警报创建方法
你无法直接选择Square 1作为警报触发条件,是因为plotshape的返回值默认不会被纳入警报可选变量列表,需要单独把触发逻辑提取为显式变量。
操作步骤:
- 在指标代码中提前定义Square 1的触发变量,原有绘图逻辑保留即可:
// 单独提取触发条件作为独立变量 square1_trigger = s00_bull or s00_bear // 原有plotshape代码保持不变 plotshape(square1_trigger ? 0 : na , title='Square 1', style=shape.square, location=location.absolute, color=s00_color, size = size.tiny, offset=-2)
- 保存修改后的指标并重新添加到图表,创建警报时条件选择该指标,下拉列表中就会出现
square1_trigger变量,触发条件设置为「值大于0」即可完全匹配方块出现的时机。
回测报错解决方法
你回测时报错的核心原因通常是直接使用颜色类型变量、plotshape返回值作为入场判断,或是变量作用域、未来函数偏移导致的问题,按以下步骤修改即可:
- 不要复用plotshape的颜色参数等非布尔变量作为入场判断条件,单独提取多空信号的布尔变量:
// 分别定义多空独立触发变量 sq1_bull_signal = s00_bull sq1_bear_signal = s00_bear
- 处理偏移带来的未来函数问题:你原有绘图逻辑使用了
offset=-2,代表将方块绘制在当前K线往前数2根的位置,回测时如果直接用当前K线的s00_bull信号会产生偷价误差,需要调整为取对应偏移后的信号:sq1_bull_signal[2]作为入场条件。 - 检查变量作用域:所有信号变量需要定义在全局作用域,不要放在条件判断、自定义函数内部,避免策略逻辑调用时找不到变量报错。
内容的提问来源于stack exchange,提问作者KJK
相关产品推荐
相关产品推荐

