You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script策略:记录绘制上次买卖后最高价功能异常求助

解决上次买卖后最高价的记录与绘制问题

我看了你的代码,核心问题出在maxSinceLastBuySell的计算逻辑上——你误用了highest(bar_index),这个函数返回的是K线索引的最大值,而非价格维度的历史高点,这直接导致绘制结果不符合预期。另外,你也没有在每次开仓时重置高点记录,没法准确追踪从开仓以来的最高价。

下面是修正后的完整代码,我会逐一解释关键优化点:

//@version=4
strategy(title="Max since last buy/sell", overlay=true, process_orders_on_close=true)

// —————————— 状态
hasOpenTrade = strategy.opentrades != 0
notHasOpenTrade = strategy.opentrades == 0
isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

// —————————— 变量
var float entryPrice = na
var float maxSinceEntry = na  // 用于记录开仓后的最高价
var int candle = na  // 补全原代码未定义的变量

// —————————— 核心逻辑:更新开仓后的最高价
if notHasOpenTrade
    maxSinceEntry := na  // 无持仓时重置为na
else
    // 持仓时,持续更新为当前高点与历史记录的较大值
    maxSinceEntry := max(maxSinceEntry, high)

// —————————— 交易执行:开仓时初始化最高价记录
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    entryPrice := close
    candle := 1
    maxSinceEntry := high  // 开多单时,初始最高价设为当前K线高点
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    entryPrice := close
    candle := 1
    maxSinceEntry := high  // 开空单时,同样初始最高价设为当前K线高点
    strategy.entry("My Short Entry Id", strategy.short)

// —————————— 调试绘图
plot(entryPrice, color = color.green, title="Entry Price")
plot(candle, color = color.black, title="Entry Candle Marker")
plot(maxSinceEntry, color = color.red, title="Max Since Last Entry", style=style.line)

关键优化说明:

  • 变量初始化:用var float maxSinceEntry = na定义一个持久化变量,确保不会在每个K线周期重复初始化,无持仓时重置为na,避免绘制多余的线条。
  • 开仓时重置:每次开多/空单时,把maxSinceEntry设为当前K线的高点,确保从开仓时刻开始追踪最高价。
  • 持仓时更新:在有持仓的每个K线周期,用max(maxSinceEntry, high)持续更新最高价,保证记录的是开仓以来的最高价格。
  • 补全未定义变量:原代码中的candle变量没有提前定义,这里补上var int candle = na避免编译报错。

这样修改后,红色线条就能准确绘制出上次开仓操作后的最高价,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Hugo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:14:14