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

如何在Pinescript中存储实时K线中途价格至var变量?

Pine Script 保存实时K线中途价格的解决方案

在Pine Script中,要记录实时K线中途的触发价格而非最终收盘价,核心是限制变量的赋值时机——只在触发条件首次成立且处于实时行情时赋值,后续不再修改该变量,直到下一次触发或新K线开始。

核心思路

  • 使用var定义持久化变量,避免随K线重置;
  • 加入多重条件判断:触发条件成立、当前为实时K线、变量未被赋值(确保同一K线只记录一次);
  • 可选:新K线开始时重置变量,准备下一次记录。

代码示例

//@version=5
indicator("记录实时中途价格", overlay=true)

// 1. 自定义触发条件(示例:价格上穿20日均线)
ma20 = ta.sma(close, 20)
trigger_condition = ta.crossover(close, ma20)

// 2. 初始化持久化变量,存储触发时的实时价格
var float recorded_price = na

// 3. 仅在触发条件成立、实时行情中、且变量未赋值时记录价格
if (trigger_condition and barstate.isrealtime and na(recorded_price))
    recorded_price := close

// 4. 新K线启动时重置变量(可选,根据需求调整)
if (barstate.isnew)
    recorded_price := na

// 可视化:在图表上标记记录的价格
plotshape(recorded_price, title="触发实时价", location=location.belowbar, color=color.green, style=shape.labelup, text=str.tostring(recorded_price, "#.##"))

关键细节说明

  • var float recorded_price = na:var确保变量仅初始化一次,不会在每根K线重新创建;初始值设为na用于判断是否已赋值。
  • barstate.isrealtime:仅在实时行情中执行赋值,回测时不会触发(若需回测模拟可移除该条件)。
  • na(recorded_price):避免同一根实时K线中价格变动时重复覆盖已记录的触发价,确保只保存首次触发时的价格。
  • 若需保存历史所有触发价格,可改用数组存储:
    var array<float> price_history = array.new_float()
    if (trigger_condition and barstate.isrealtime)
        array.push(price_history, close)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:02