Skip to content

StrategyFlags Examples

Three annotated examples showing how StrategyFlags output maps to real chart conditions. Each example includes the full JSON and a walkthrough of every scoring decision.


Example 1: Strong Long Setup (Score 7)

Scenario: ES 5min chart, 09:00 ET. Daily and weekly bias are bullish with a draw on PDH. The London session low was swept (HUNT_LOW). An unspent bullish order block at 5872--5878 has an associated FVG from 5873--5876. Bullish SMT divergence is active against NQ. Price is inside the 08:50--09:10 macro window.

{
  "timestamp": "2026-04-14T13:00:00.000Z",
  "symbol": "ES1!",
  "timeframe": "5",
  "bias": {
    "daily": "bullish",
    "weekly": "bullish",
    "draw_on_liquidity": "PDH",
    "hit_target": false
  },
  "session": {
    "mode": "NY",
    "current_window": "ny_am",
    "hunt": {
      "side": "HUNT_LOW",
      "target_high": 5892.50,
      "target_low": 5870.00,
      "hi_swept": false,
      "lo_swept": true,
      "reextended": false,
      "reext_high": null,
      "reext_low": null
    },
    "in_macro": true,
    "entry_window_active": true
  },
  "structure": {
    "order_blocks": {
      "bullish": [
        {
          "high": 5878.00,
          "low": 5872.00,
          "spent": false,
          "fvg": {
            "high": 5876.00,
            "low": 5873.00,
            "aggressive": 5876.00,
            "safe": 5873.00
          },
          "distance_ticks": 4
        }
      ],
      "bearish": []
    },
    "atr": {
      "stop_points": 1.75,
      "stop_ticks": 7,
      "position_size": 2,
      "risk_dollars": 175.00
    }
  },
  "smt": {
    "bullish_active": true,
    "bearish_active": false,
    "paired_instrument": "NQ1!",
    "last_signal": "bullish"
  },
  "price": {
    "last": 5879.00,
    "day_high": 5892.50,
    "day_low": 5869.50
  },
  "decision": {
    "setup_valid": true,
    "setup_name": "hunt_long_ob_fvg",
    "direction": "long",
    "confluence_score": 7,
    "confluence_factors": [
      "bias_aligns_hunt",
      "weekly_confirms",
      "ob_in_path",
      "smt_confirms"
    ],
    "no_trade_reasons": [],
    "entry": {
      "aggressive": 5876.00,
      "safe": 5873.00,
      "ob_body": 5872.00
    },
    "stop": 5870.25,
    "targets": [
      {
        "level": 5892.50,
        "label": "PDH",
        "rr": 3.2
      }
    ],
    "risk_reward": 3.2,
    "position_size": 2
  }
}

Confluence Scoring Breakdown

Factor Weight Scored? Reason
bias_aligns_hunt 2 Yes Bullish bias + HUNT_LOW = draw toward PDH
weekly_confirms 1 Yes Weekly bias also bullish
ob_in_path 2 Yes Unspent bullish OB at 5872--5878 sits between price and DOL
ob_has_fvg 0 No FVG is present, but note: this factor is not listed in confluence_factors. The OB+FVG combination qualifies the setup name (hunt_long_ob_fvg) and provides entry tiers, but in this scan the FVG factor did not independently contribute to the score
smt_confirms 2 Yes Bullish SMT divergence active against NQ
macro_window 0 -- in_macro: true, but macro timing is a bonus context factor, not scored in this scan's factor list
Total 7

Entry Tiers

  • Aggressive (5876.00): FVG consequent encroachment -- the upper edge of the gap. Tightest entry, gets filled first on a pullback into the zone.
  • Safe (5873.00): Deeper FVG retracement near the lower boundary. Better price but higher risk of missing the fill.
  • OB body (5872.00): The OB low boundary. Most conservative entry, only fills on a deep sweep of the zone.

Risk Calculation

Using the aggressive entry at 5876.00:

  • Stop: 5870.25 (below OB low by ATR buffer)
  • Risk per contract: 5876.00 - 5870.25 = 5.75 points = 23 ticks = $287.50
  • Target: PDH at 5892.50
  • Reward per contract: 5892.50 - 5876.00 = 16.50 points = 66 ticks = $825.00
  • R:R: $825.00 / $287.50 = 2.87:1

Using the safe entry at 5873.00:

  • Risk per contract: 5873.00 - 5870.25 = 2.75 points = 11 ticks = $137.50
  • Reward per contract: 5892.50 - 5873.00 = 19.50 points = 78 ticks = $975.00
  • R:R: $975.00 / $137.50 = 7.09:1

The decision.risk_reward of 3.2 reflects the blended R:R used by the engine's default entry tier configuration.


Example 2: No-Trade -- Neutral Bias

Scenario: ES 5min chart, 08:30 ET. Yesterday's daily candle was an outside bar that closed inside the previous range. Bias AI reports neutral. The session low was swept (HUNT_LOW), but with neutral bias there is no directional conviction to align with.

{
  "timestamp": "2026-04-14T12:30:00.000Z",
  "symbol": "ES1!",
  "timeframe": "5",
  "bias": {
    "daily": "neutral",
    "weekly": "bullish",
    "draw_on_liquidity": null,
    "hit_target": false
  },
  "session": {
    "mode": "NY",
    "current_window": "ny_am",
    "hunt": {
      "side": "HUNT_LOW",
      "target_high": 5895.00,
      "target_low": 5872.50,
      "hi_swept": false,
      "lo_swept": true,
      "reextended": false,
      "reext_high": null,
      "reext_low": null
    },
    "in_macro": false,
    "entry_window_active": true
  },
  "structure": {
    "order_blocks": {
      "bullish": [
        {
          "high": 5878.00,
          "low": 5874.50,
          "spent": false,
          "fvg": {
            "high": 5877.25,
            "low": 5875.00,
            "aggressive": 5876.00,
            "safe": 5875.50
          },
          "distance_ticks": 8
        }
      ],
      "bearish": []
    },
    "atr": {
      "stop_points": 2.00,
      "stop_ticks": 8,
      "position_size": 2,
      "risk_dollars": 200.00
    }
  },
  "smt": {
    "bullish_active": true,
    "bearish_active": false,
    "paired_instrument": "NQ1!",
    "last_signal": "bullish"
  },
  "price": {
    "last": 5880.00,
    "day_high": 5888.25,
    "day_low": 5871.75
  },
  "decision": {
    "setup_valid": false,
    "setup_name": null,
    "direction": null,
    "confluence_score": 0,
    "confluence_factors": [],
    "no_trade_reasons": ["neutral_bias", "hunt_bias_misalign"],
    "entry": null,
    "stop": null,
    "targets": [],
    "risk_reward": null,
    "position_size": null
  }
}

Why This Is a No-Trade

Two rejection reasons fire:

  1. neutral_bias: The daily bias is "neutral". Bias AI's table shows 0 for the daily row -- the outside bar closed inside the prior range, producing no directional conviction. This is condition 1 in the setup validation pipeline, and it fails immediately.

  2. hunt_bias_misalign: Even if bias were evaluated, HUNT_LOW implies a draw toward the high (bullish implication), but there is no bullish bias to align with. The hunt direction has no bias to confirm it.

What the Trader Sees on the Chart

  • Bias AI table: daily row shows 0, weekly row shows bullish arrow.
  • Session Hunt AI: HUNT_LOW label visible, lo_swept marker on the session range low.
  • OB AI: A bullish OB with FVG is visible below price -- structurally valid.
  • SMT Divergences: Bullish divergence label between ES and NQ.

Everything except the bias is in place. Under different conditions (if daily bias were bullish), this would score at least 7 from bias_aligns_hunt (2) + weekly_confirms (1) + ob_in_path (2) + smt_confirms (2). The neutral daily bias kills it at the gate.

Key Observation

The confluence_score is 0 and confluence_factors is empty. When a no-trade condition fires, the confluence scoring system is not invoked. The indicator data is still fully populated (hunt, order_blocks, smt are all present) for the trader's reference -- only the decision block reflects the rejection.


Example 3: Invalidated Setup -- OB Mitigated

Scenario: ES 5min chart, 10:00 ET. Earlier in the session this was a valid long setup: bullish bias, HUNT_LOW, unspent bullish OB with FVG below price. At 09:45, price dropped through the OB zone, breaking through both the high and low boundary lines. OB AI deleted the box and lines -- the OB is fully mitigated. No other unspent bullish OBs remain on the chart.

{
  "timestamp": "2026-04-14T14:00:00.000Z",
  "symbol": "ES1!",
  "timeframe": "5",
  "bias": {
    "daily": "bullish",
    "weekly": "bullish",
    "draw_on_liquidity": "PDH",
    "hit_target": false
  },
  "session": {
    "mode": "NY",
    "current_window": "ny_am",
    "hunt": {
      "side": "HUNT_LOW",
      "target_high": 5892.50,
      "target_low": 5870.00,
      "hi_swept": false,
      "lo_swept": true,
      "reextended": false,
      "reext_high": null,
      "reext_low": null
    },
    "in_macro": false,
    "entry_window_active": true
  },
  "structure": {
    "order_blocks": {
      "bullish": [],
      "bearish": [
        {
          "high": 5890.00,
          "low": 5887.50,
          "spent": false,
          "fvg": null,
          "distance_ticks": 30
        }
      ]
    },
    "atr": {
      "stop_points": 2.00,
      "stop_ticks": 8,
      "position_size": 2,
      "risk_dollars": 200.00
    }
  },
  "smt": {
    "bullish_active": false,
    "bearish_active": false,
    "paired_instrument": "NQ1!",
    "last_signal": "bullish"
  },
  "price": {
    "last": 5875.50,
    "day_high": 5892.50,
    "day_low": 5868.00
  },
  "decision": {
    "setup_valid": false,
    "setup_name": null,
    "direction": null,
    "confluence_score": 0,
    "confluence_factors": [],
    "no_trade_reasons": ["no_unspent_ob"],
    "entry": null,
    "stop": null,
    "targets": [],
    "risk_reward": null,
    "position_size": null
  }
}

What Happened During the Session

Time (ET) Event Impact
08:45 Session opens. Bullish bias, HUNT_LOW locked. Bullish OB at 5872--5878 with FVG. Setup valid, score 7.
09:30 Price dips toward OB zone, touches 5878 (OB high). OB still unspent. Entry zone approached.
09:45 Sell-off accelerates. Price breaks through 5872 (OB low). OB AI changes lines from solid to dotted (spent). OB marked spent. Setup weakened.
09:50 Price closes below 5870. OB AI deletes the box entirely (fully mitigated). OB removed from chart.
10:00 This scan runs. structure.order_blocks.bullish is empty. no_trade_reasons: ["no_unspent_ob"]

What the Flags Show

  • structure.order_blocks.bullish is an empty array. The mitigated OB no longer appears in the scan output. OB AI removes it from Pine graphics once price breaks through both boundaries.
  • A bearish OB at 5887.50--5890.00 is visible, but the setup direction is long. Bearish OBs are irrelevant for the current bullish setup evaluation.
  • smt.bullish_active is now false. The sell-off that mitigated the OB also broke the bullish SMT divergence. last_signal still reads "bullish" (historical record), but the divergence is no longer active.
  • Bias and hunt remain intact: daily bullish, HUNT_LOW, entry window open. The single point of failure is the missing OB.

Recovery Path

If a new bullish OB forms -- for example, from a displacement candle during the sell-off that creates a new demand zone -- the strategy would detect it on the next scan and potentially re-validate the setup. In practice, OBs mitigated by strong directional moves rarely produce same-direction OBs immediately. The trader should wait for fresh structure.


Reading These Examples

When reviewing StrategyFlags output:

  1. Start with decision.setup_valid -- if false, check no_trade_reasons to understand why.
  2. Check confluence_score and confluence_factors -- understand what contributed and what is missing.
  3. Review the indicator blocks (bias, session, structure, smt) for the raw data that drove the decision.
  4. Compare entry tiers in decision.entry -- aggressive, safe, and ob_body offer different risk/reward profiles.
  5. Verify R:R against your personal minimum, not just the system default of 2:1.