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

Fair Value Gap指标开发求助:2 Candle Rejection检测异常

Fair Value Gap (FVG)指标1CR/2CR异常问题排查与修复

一、1CR未显示的核心原因排查

  1. priceInGap()函数逻辑不匹配规则
    当前1CR触发条件仅判断priceInGap()(价格进入FVG区域),但规则要求是“第一根蜡烛试探FVG后收于上方(看涨)/下方(看跌)”。如果priceInGap()只检测价格触碰FVG,未验证收盘价是否脱离FVG并符合方向,会导致1CR触发条件不满足,自然不会显示。

  2. liveReady或state变量状态异常

    • 若liveReady在FVG出现时未被正确设为true(比如实时数据加载延迟、初始化逻辑问题),会直接跳过1CR触发。
    • 若前一次FVG信号未重置state为0(比如信号失效后未处理状态),新FVG出现时state仍为1/2,1CR条件state == 0无法满足。
  3. a1Price/barStartInner赋值错误
    如果FVG识别逻辑中,a1Price(FVG关键价格)或barStartInner(FVG起始bar索引)未被正确赋值,会导致1CR的线/标签绘制失败,但无报错提示。

二、2CR绘制时机错误的核心原因排查

  1. 突破判断未基于收盘价,导致提前触发
    当前2CR触发条件是low < candleALow(看涨)或high > candleAHigh(看跌),这是基于当前bar的实时价格波动,而非收盘价。会导致bar未收盘时就提前绘制2CR,出现“提前触发”的问题;若后续收盘价回到candleA范围内,信号实际无效,但2CR已绘制。

  2. candleA_bar赋值逻辑错位
    规则中candleA是“第一根拒绝FVG的蜡烛”,但当前代码在1CR触发时将candleA_bar设为bar_index(当前触发1CR的bar)。若priceInGap()是在当前bar的盘中触发,candleA应该是完成拒绝动作的那根bar(即收盘价脱离FVG的bar),可能需要赋值为bar_index - 1,否则会导致后续2CR的“第一根突破bar”判断错位,出现滞后/提前。

  3. 缺失信号失效的状态重置逻辑
    规则明确“收盘价跌破缺口、第一根拒绝蜡烛或其低点(看涨场景)则信号失效”,但当前代码未实现该逻辑:当信号失效时,未将state重置为0,导致即使信号无效,仍会错误触发2CR。

三、针对性修复代码示例

1. 修复1CR触发条件

// 1 CR-Bedingung: erste Berührung der Gap-Zone + 收盘价符合拒绝方向
if liveReady and state == 0 and priceInGap() 
    // 新增:判断收盘价是否脱离FVG并符合方向
    bool isRejection = isBull ? close > lInner : close < lOuter
    if isRejection
        cr1Level := a1Price
        cr1Line  := line.new(barStartInner, cr1Level, bar_index, cr1Level,
                             xloc.bar_index, extend.none, ColorCR, line.style_dotted, 2)
        lblCR1   := label.new(barStartInner,
                              isBull ? low - offsetY() : high + offsetY(),
                              "1CR", yloc = isBull ? yloc.belowbar : yloc.abovebar,
                              style = label.style_label_center,
                              color = color.new(color.white, 100), textcolor = colCR)

        // 修正:candleA设为完成拒绝的bar(当前bar,因为收盘价已确认)
        candleA_bar  := bar_index
        candleAHigh  := high
        candleALow   := low

        alert("⚠️ " + timeframe.period + " FVG : 1 Candle Rejection erkannt!\n🟢 Entry Erlaubt, wenn 2. Candle Expansion Candle.", alert.freq_once_per_bar)
        state := 1

2. 修复2CR触发逻辑与时机

//─────────────────────────────────────────────────────────────
// 6 b) 2 CR State (nur erste Candle nach Candle A darf triggern)
//─────────────────────────────────────────────────────────────

isAfterCandleA = not na(candleA_bar) and bar_index > candleA_bar
isFirstValidBreak = false

// 新增:信号失效判断,重置state
if state == 1
    bool signalInvalid = isBull ? close < min(lInner, candleALow) : close > max(lOuter, candleAHigh)
    if signalInvalid
        state := 0
        candleA_bar := na // 重置candleA变量
        // 可选:删除已绘制的1CR线/标签
        if not na(cr1Line)
            line.delete(cr1Line)
        if not na(lblCR1)
            label.delete(lblCR1)

if state == 1 and isAfterCandleA
    // 修改:基于收盘价判断突破,而非实时高低点
    if isBull and close < candleALow
        isFirstValidBreak := true
    if not isBull and close > candleAHigh
        isFirstValidBreak := true

if isFirstValidBreak
    float cr2Level = isBull ? candleALow : candleAHigh

    cr2Line := line.new(candleA_bar, cr2Level, bar_index, cr2Level, xloc.bar_index, extend.none, ColorCR, line.style_dotted, 2)
    lblCR2 := label.new(candleA_bar, isBull ? cr2Level - offsetY() : cr2Level + offsetY(), "2CR", yloc  = isBull ? yloc.belowbar : yloc.abovebar, style = label.style_label_center, color = color.new(color.white, 100), textcolor = colCR)

    candleBHigh := high
    candleBLow  := low
    candleB_bar := bar_index
    state := 2

    alert("⚠️ " + timeframe.period + " FVG : 2 Candle Rejection erkannt!\n🟢 Entry Erlaubt, wenn 3. Candle Expansion Candle.\n🟢 Alignment TF Entry erlaubt\n->wenn Alignment TF FVG confirmed!", alert.freq_once_per_bar)

3. 补充state重置逻辑

在FVG失效(比如缺口被回补)或切换新FVG时,必须将state重置为0,同时清空candleA_bar等变量,避免旧状态干扰新信号。

内容的提问来源于stack exchange,提问作者Julien Sylvan Pohl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:23:11