You need to enable JavaScript to run this app. TradingView研究脚本实现strategy.position_avg_price及部分平仓计算优化
优惠活动
大模型
产品
解决方案
定价
更多

TradingView研究脚本实现strategy.position_avg_price及部分平仓计算优化

研究脚本端实现strategy.position_avg_price等效能力的优化方案

核心改造逻辑

原有逻辑的核心缺陷是平仓环节直接重置两个累计变量,仅能适配全仓一次性平仓的场景。要支持部分平仓的计算,需基于持仓成本的本质规则调整分支逻辑,整体规则和TradingView内置strategy.position_avg_price的底层计算逻辑对齐:

  • 加仓环节:保持原有累加逻辑,每次触发开仓时,累计总持仓数量、累计对应投入的总成本,平均持仓价=累计总成本/总持仓数量,这个公式对首次开仓、分批补仓场景均成立。
  • 平仓环节:修改原清零逻辑为按平仓比例同步扣减持仓量与对应成本。由于平仓操作不会改变剩余持仓的单位成本,仅需按当次平仓的数量,从总持仓量中扣减对应份额,再按当前平均价计算当次平仓对应的成本额,从累计总成本中同步扣减即可。仅当剩余持仓量趋近于0时,才重置两个累计变量,避免浮点误差导致的数值残留。

可配置的优化实现步骤

  1. 增加平仓比例配置项,适配不同程度的部分平仓需求,避免写死全仓平仓的逻辑
  2. 拆分开仓、平仓的独立分支,避免平仓逻辑误触发重置状态
  3. 增加浮点精度边界判断,当扣减后的剩余持仓量小于1e-5量级时,直接将累计变量置0,避免绘制的成本线出现微小的残留偏差
  4. 保持所有计算的实时性,基于当前K线的close价格同步计算,避免策略引擎带来的警报延迟

优化后的完整参考代码

//@version=5
indicator("无延迟持仓平均价计算", overlay=true)
// 基础参数配置
order_size = input(50, title="单次开仓投入金额")
close_ratio = input.float(1.0, title="单次平仓比例", minval=0.1, maxval=1.0, step=0.1)

// 状态累计变量(跨K线保留)
var total_qty = 0.0
var total_cost = 0.0
// 实时计算平均持仓价
avg_position_price = total_qty > 1e-5 ? total_cost / total_qty : na

// 开仓逻辑分支(替换为自身实际入场条件)
if <你的入场触发条件>
    add_qty = order_size / close
    total_qty := total_qty + add_qty
    total_cost := total_cost + order_size

// 平仓逻辑分支(替换为自身实际平仓条件)
if <你的平仓触发条件> and total_qty > 1e-5
    close_qty = total_qty * close_ratio
    // 扣减对应持仓与成本
    total_qty := total_qty - close_qty
    total_cost := total_cost - (close_qty * avg_position_price)
    // 持仓完全清空的边界重置
    if total_qty < 1e-5
        total_qty := 0.0
        total_cost := 0.0

// 绘制平均成本线
plot(avg_position_price, color=color.lime, linewidth=4, title="持仓平均成本线")

适配注意事项

  • 该逻辑仅适配单向持仓场景,如果需要同时跟踪多、空双向的持仓成本,需要为多、空方向分别维护一套独立的累计持仓量、累计成本变量,避免不同方向的成本混算导致的计算偏差。
  • 由于该计算完全在study脚本内完成,不依赖策略引擎的运行时数据,触发警报时可直接读取当前实时计算的平均价数值,不会出现策略类脚本常见的警报延迟、数值不同步的问题。
  • 计算规则和TradingView内置strategy.position_avg_price完全对齐:多次开仓的成本累加、部分平仓的成本扣减逻辑和内置函数的运算规则一致,不会出现和策略回测数值的偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 19:57:02