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

Pine Script v5:如何在特定条件下获取当前价格设置限价平仓?

Pine Script:基于金叉条件捕获价格并设置限价平仓

你不需要用line.get_price(),直接在条件触发时记录当前价格即可实现需求。核心逻辑是用var声明变量来保留触发时刻的价格,避免被后续K线覆盖,再将该变量传入strategy.exit的limit参数。

实现步骤与示例代码

1. 定义指标与金叉条件

先创建长短周期指标并判断金叉触发时机:

//@version=5
strategy("金叉限价平仓示例", overlay=true)

// 定义长短均线(可替换为你实际使用的指标)
long_ma = ta.sma(close, 50)
short_ma = ta.sma(close, 20)

// 判断金叉条件
crossover_condition = ta.crossover(short_ma, long_ma)

2. 捕获触发时刻的价格

用var初始化变量,仅当金叉条件满足时更新价格:

// 初始化限价变量,var确保只初始化一次
var float exit_limit_price = na

// 金叉触发时记录当前收盘价(可替换为open/high/low等)
if crossover_condition
    exit_limit_price := close

3. 结合开仓与限价平仓

在开仓后,用捕获到的价格设置限价平仓:

// 金叉时开多单
if crossover_condition
    strategy.entry("Long", strategy.long)

// 使用捕获的价格设置限价平仓
strategy.exit("Exit Long", "Long", limit=exit_limit_price)

完整示例代码

//@version=5
strategy("金叉限价平仓示例", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000)

// 定义长短均线
long_ma = ta.sma(close, 50)
short_ma = ta.sma(close, 20)

// 金叉条件
crossover_condition = ta.crossover(short_ma, long_ma)

// 初始化并更新限价价格
var float exit_limit_price = na
if crossover_condition
    exit_limit_price := close  // 记录金叉发生时的收盘价
    strategy.entry("Long", strategy.long)  // 触发金叉时开多单

// 使用捕获的价格设置限价平仓
if not na(exit_limit_price)
    strategy.exit("Exit Long", "Long", limit=exit_limit_price)

// 绘制均线方便观察
plot(long_ma, color=color.blue, title="Long MA")
plot(short_ma, color=color.red, title="Short MA")

关键注意点

  • var关键字的作用:确保变量仅在脚本启动时初始化一次,后续只有金叉触发时才会更新,保留触发时刻的价格值。
  • 价格字段选择:可以根据需求替换close为open/high/low,比如想在金叉K线的最低价设置限价,就用low。
  • 多订单场景:如果存在多笔独立订单,需要用数组关联每个订单ID对应的限价,避免价格互相覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:35:32