如何在Pine Script中将订单入场价格保存至变量
Pine Script 获取订单入场价及绘制目标水平线实现方案
1. 不同场景下获取入场价的方法
- 策略(strategy)脚本场景
直接调用内置变量strategy.position_avg_price即可获取当前持仓的平均入场价格,如果需要记录历史每笔订单的入场价,可以在订单成交时把价格存入数组持久化存储。
示例代码片段:
// 策略场景获取当前持仓入场价 entryPrice = strategy.position_avg_price
- 指标(indicator)脚本模拟交易场景
需要在开仓条件触发时,主动把当前价格存入自定义变量,需要用var关键字声明变量避免每根K线刷新时被重置。
示例代码片段:
var float myEntryPrice = na // 开仓条件判断示例,可替换为自定义开仓逻辑 if longCondition myEntryPrice := close
2. 基于入场价绘制目标水平线
拿到入场价之后,可以按照自定义的盈亏比例计算目标位,注意hline只支持固定常量值,如果目标位是随入场价动态变化的,用plot函数更合适。
完整示例代码:
//@version=5 strategy("入场价画目标线示例", overlay=true) // 开仓逻辑示例:5日均线上穿20日均线开多 longCondition = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) if longCondition strategy.entry("多单", strategy.long) // 获取当前持仓入场价 entryPrice = strategy.position_avg_price // 计算目标位:1%止盈,2%止损,可自定义比例 takeProfit = entryPrice * 1.01 stopLoss = entryPrice * 0.98 // 绘制动态水平线 plot(strategy.position_size != 0 ? takeProfit : na, color=color.green, style=plot.style_linebr, linewidth=2, title="止盈线") plot(strategy.position_size != 0 ? stopLoss : na, color=color.red, style=plot.style_linebr, linewidth=2, title="止损线") plot(strategy.position_size != 0 ? entryPrice : na, color=color.yellow, style=plot.style_linebr, linewidth=2, title="入场线")
注意事项
- 如果需要同时记录多笔未平仓订单的入场价,建议用
array.new_float()存储所有入场价,遍历数组逐个绘制对应目标线 hline函数无法接收动态变量作为参数,动态目标位必须用plot函数实现
内容的提问来源于stack exchange,提问作者RickP
相关产品推荐
相关产品推荐

