Pine Script中strategy.position_avg_price计算逻辑及平仓后变化原因问询
Pine Script 中
strategy.position_avg_price 的计算逻辑 - 开仓阶段:这个变量本质是持仓的加权平均成本价,权重为每笔持仓的数量。如果两次开仓数量相同,结果会和算术平均一致;若数量不同,则按「(每笔价格×对应持仓量)之和 ÷ 总持仓量」计算。
- 分批平仓后的变化原因:它始终反映的是当前剩余持仓的平均成本,而非初始总持仓的平均价。系统默认按「先进先出(FIFO)」规则平仓——优先平最早开仓的批次,平仓后剩余持仓的成本结构改变,平均价自然会发生变化。
- 具体计算公式:
strategy.position_avg_price = Σ(剩余持仓批次的价格 × 该批次剩余数量) ÷ 剩余总持仓数量
举个实际例子:
假设先开10手,价格10;再开10手,价格20。初始平均价为(10×10 + 20×10)/(10+10)=15。
若按FIFO平5手,平的是第一批的5手,剩余5手(价10)+10手(价20),此时平均价为(5×10 +10×20)/(5+10)≈16.67,strategy.position_avg_price就会更新为这个值。
如果通过strategy.close_rule将平仓规则设置为按比例平所有批次,平仓后平均价会保持不变——因为各批次持仓按相同比例减少,整体成本结构未发生变化。
内容的提问来源于stack exchange,提问作者S.Znobihin
相关产品推荐
相关产品推荐

