如何为每笔交易绘制虚线与方框?交易连线绘制问题求助
Pine Script交易连线绘制问题排查与修复
你的脚本无法正确绘制进场离场连线,核心问题出在变量生命周期管理和坐标定位错误,具体问题及修复方案如下:
问题分析
- 用
var声明的entryPrice和exitPrice会永久保留值,第一笔交易完成后,后续所有K线都会触发画线逻辑,且无法对应正确的进场/离场K线对。 - 画线时用
bar_index[1]作为进场K线索引,这是错误的——进场和离场K线通常不连续,应该记录进场时的实际bar_index。 - 交易完成后未重置变量,导致后续逻辑混乱。
修复后的代码
//@version=5 strategy("Linia transakcji", "JJJ", overlay=true) // 移除var,或在交易完成后手动重置变量 float entryPrice = na float exitPrice = na int entryBar = na enterTrade = ta.crossover(ta.sma(close, 50), ta.open) if enterTrade entryPrice := close entryBar := bar_index // 记录进场时的K线索引 strategy.entry("Long", strategy.long) // 离场条件增加非空判断,避免na参与计算 exitTrade = not na(entryPrice) and close >= entryPrice + 100 * syminfo.mintick if exitTrade exitPrice := close strategy.close("Long") // 在离场成交时绘制连线 line.new(x1 = entryBar, y1 = entryPrice, x2 = bar_index, y2 = exitPrice, color = color.blue, width = 2) // 重置变量,准备下一笔交易 entryPrice := na exitPrice := na entryBar := na
修改说明
- 新增
entryBar变量记录进场K线的索引,确保连线起点准确对应进场位置。 - 将画线逻辑移至离场触发的代码块内,仅在完成一笔交易时绘制一次连线。
- 交易完成后手动重置所有交易相关变量,避免干扰后续交易逻辑。
- 离场条件增加
not na(entryPrice)判断,防止未进场时触发错误计算。
内容的提问来源于stack exchange,提问作者JERZY MARKIEWICZ
相关产品推荐
相关产品推荐

