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

Pine Script触发警报时strategy.position_avg_price返回NaN问题求助

问题原因

实盘警报触发时,策略的开仓操作尚未实际执行,strategy.position_avg_price 变量还未被赋值,因此返回NaN。而回测场景是事后模拟,开仓动作与指标计算同步完成,该变量能实时获取仓位均价。

解决方案

放弃依赖strategy.position_avg_price计算止损,直接使用触发开仓信号那根K线的价格(如收盘价close)来计算止损位,代码修改如下:

  1. 定义开仓价格与止损位:
// 存储开仓信号触发时的K线收盘价
entry_price = close
// 计算多头止损位
long_stop_level := entry_price - nLoss
  1. 开仓警报代码保持原逻辑即可:
// 触发多头开仓警报
if entry_long
    alert_string = pc_id + ',' + 'buy' + ',' + symbol + ',' + 'sl=' + str.tostring(long_stop_level) + ',' + 'risk=' + str.tostring(posSize) 
    alert(alert_string, alert.freq_once_per_bar_close)
补充说明

如果实盘使用市价单开仓,实际成交价格可能与信号K线收盘价存在小幅滑点,这是正常交易现象。若需更精准的止损计算,可结合strategy.entry的返回值获取订单填充价格,但需要额外处理订单确认逻辑,复杂度较高。上述方案是兼顾简洁性与实用性的最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:15:31