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

在Pine Script中如何保存math.min()/array.min()价格以触发延迟交易?

问题解答

核心需求拆解

  • 识别特定蜡烛形态(第3根K线时,判断前两根为「阳线+阴线」)后,记录这两根K线最低价的最小值作为入场触发价
  • 算法需持续等待市价跌破该触发价再执行做空入场,而非仅在形态出现后的下一根K线触发
  • 替代当前用数组存储最低价的复杂逻辑,寻求更简洁的实现方式

简化实现方案

你当前用数组的方式完全没必要,直接用两个全局变量分别保存触发价和形态识别状态即可,无需维护数组。核心逻辑如下:

  1. 识别到目标形态且无持仓时,记录触发价并标记形态已识别
  2. 只要形态标记有效且无持仓,就持续检查当前价格是否跌破触发价,满足条件则入场
  3. 入场后重置状态,避免重复触发

修改后的代码:

//@version=5
strategy("Entry Price", overlay=true)

var float trigger_price = na  // 存储形态对应的入场触发价
var bool pattern_detected = false  // 标记是否已识别到目标蜡烛形态

// 识别目标形态:前两根K线为阳+阴,且当前无持仓
if strategy.position_size == 0 and close[2] > open[2] and close[1] < open[1]
    trigger_price := math.min(low[2], low[1])
    pattern_detected := true

// 绘制触发价参考线
plot(pattern_detected ? trigger_price : na, title='Entry', color=color.new(color.purple, 0), style=plot.style_stepline_diamond)

// 价格跌破触发价、已识别形态且无持仓时,执行做空入场
if strategy.position_size == 0 and pattern_detected and close <= trigger_price
    strategy.entry("Go Short", strategy.short, qty=1, oca_type=strategy.oca.cancel)
    pattern_detected := false  // 入场后重置标记
    trigger_price := na

方案优势

  • 去掉了冗余的数组操作,代码更简洁,运行效率更高
  • 用pattern_detected标记明确控制触发逻辑,避免无效判断
  • 入场后自动重置状态,逻辑清晰,不会出现重复触发的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:17:06