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

TV脚本如何将开仓价存入数组 解决数据丢失仅存最后值问题

Pine Script数组数据丢失问题解决方案

问题根因

  • Pine Script默认会在每根K线计算时重新执行全量代码,未加var关键字修饰的数组会在每根K线初始化时被清空重建,因此只会保留最后一次触发开仓条件时存入的数值。
  • 原有标签删除逻辑存在缺陷:l[1]只能获取上一根K线生成的标签实例,更早生成的标签无法被正确删除,会出现界面标签残留问题。

修正代码

// var关键字修饰:数组仅在脚本首次加载时初始化一次,后续保留历史存储数据
var arr = array.new_float(0)
// var存储标签ID,统一管理标签的删除与新建
var label priceDisplayLabel = na

if buySignal
    array.push(arr, close)
    // 拼接所有存储的开仓价
    lab = ""
    for i = 0 to array.size(arr) - 1
        lab := lab + str.tostring(array.get(arr, i)) + " "
    // 先删除旧标签,再创建新标签避免残留
    label.delete(priceDisplayLabel)
    priceDisplayLabel := label.new(bar_index, close, lab)

补充说明

如果你的策略同一时间仅持有一个仓位,不需要存储多笔历史开仓价,可直接用var float entryPrice = na单个变量存储开仓价,无需使用数组,性能更优。

内容的提问来源于stack exchange,提问作者Raul Lopez Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:30:03