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

Pine Script技术问询:设置偏离上次入场价的限价单及避免重复定价

Pine Script 限价单相关问题解答

1. 如何下达高于/低于上次入场价的限价单

要实现这类限价单,核心是先获取上次入场价格,再按需计算目标限价,最后通过strategy.entry()指定limit参数完成下单:

  1. 获取上次入场价:用strategy.opentrades.entry_price()函数,结合strategy.opentrades-1定位最近一笔入场单的价格
  2. 计算限价:在入场价基础上加减固定值或点数(比如加10点做突破型限价单,减5点做回调型限价单)
  3. 执行下单:在strategy.entry()中传入limit参数指定限价

示例代码:

//@version=5
strategy("高于/低于上次入场价的限价单", overlay=true)

// 获取最近一笔入场单的价格(有持仓时生效)
var float last_entry_price = na
if strategy.opentrades > 0
    last_entry_price := strategy.opentrades.entry_price(strategy.opentrades-1)

// 示例:RSI低于30时,下达比上次入场价低5点的限价多单
rsi_val = ta.rsi(close, 14)
if rsi_val < 30 and not na(last_entry_price)
    limit_price = last_entry_price - 5
    strategy.entry("Limit Long", strategy.long, limit=limit_price)

2. 避免同一K线内限价单价格重复

你的思路方向正确,需结合品种最小变动单位调整价格,确保限价唯一,具体实现逻辑:

  • 获取上次入场价后,判断当前计算的限价是否与上次入场价相等
  • 若相等,给限价加/减一个最小变动单位,避免重复

示例代码:

//@version=5
strategy("避免重复限价单", overlay=true)

// 自动获取当前品种的最小变动单位(适配不同品种)
tick_size = syminfo.mintick

// 获取最近一笔入场单价格
last_entry_price = strategy.opentrades > 0 ? strategy.opentrades.entry_price(strategy.opentrades-1) : na

// 示例:以收盘价作为初始限价计算基准
target_limit = close

// 避免限价与上次入场价重复
if not na(last_entry_price) and target_limit == last_entry_price
    // 调整限价:加一个最小变动单位(可根据策略方向选择减)
    target_limit := target_limit + tick_size

// 示例下单逻辑:MA金叉时下达限价单
ma_short = ta.sma(close, 5)
ma_long = ta.sma(close, 20)
if ta.crossover(ma_short, ma_long) and not na(target_limit)
    strategy.entry("Limit Entry", strategy.long, limit=target_limit)

关键提示

  • syminfo.mintick能自动适配当前交易品种的最小变动单位,无需手动硬编码
  • 调整价格时可根据策略多空方向选择加或减最小变动单位,不影响原策略逻辑的同时规避重复单

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:45:48