如何在request.security_lower_tf函数中使用strategy.opentrades获取开仓价
在
request.security_lower_tf()中获取策略最近未平仓订单开仓价的解决方案 核心问题在于strategy.opentrades.entry_price()属于策略上下文专属函数,只能在当前策略运行的主时间周期中调用,无法直接在跨时间周期的request.security_lower_tf()请求内使用——跨周期请求的是独立的低周期数据环境,不共享主周期的策略持仓上下文。
解决思路是先在主周期中计算并持久化存储目标开仓价,再将该值传递到低周期请求中:
步骤1:主周期中存储最近开仓价
使用var关键字定义变量,确保值不会随K线周期重置:
// 主时间周期内持久化存储最近未平仓订单的开仓价 var float main_entry_price = na // 仅当有未平仓订单时更新值 if strategy.opentrades > 0 main_entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
步骤2:跨低周期请求时传递该值
将主周期存储的开仓价与低周期数据一起请求:
// 请求15分钟低周期的收盘价,同时传入主周期的开仓价 lower_tf_result = request.security_lower_tf(syminfo.tickerid, "15", [close, main_entry_price]) // 解析返回结果 lower_tf_close = lower_tf_result[0] lower_tf_available_entry_price = lower_tf_result[1]
关键注意事项
- 必须用
var声明存储开仓价的变量,否则每个主周期K线都会重置变量值,导致传递到低周期的数值异常。 - 添加
strategy.opentrades > 0的判断,避免在无持仓时赋值无效的na值。
内容的提问来源于stack exchange,提问作者Castle
相关产品推荐
相关产品推荐

