Skip to content

StrategyFlags JSON Reference

Overview

StrategyFlags is the complete output of a single strategy scan. It captures the state of all four indicators, the computed setup evaluation, and the decision recommendation at a specific point in time.

Every scan produces one StrategyFlags object, whether the result is a valid setup, a no-trade, or a waiting state.


Complete Schema

{
  "timestamp": "2026-04-14T10:05: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": 5890.25,
      "target_low": 5872.50,
      "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": 5875.00,
          "low": 5872.50,
          "spent": false,
          "fvg": {
            "high": 5876.25,
            "low": 5873.00,
            "aggressive": 5874.75,
            "safe": 5873.50
          },
          "distance_ticks": 6
        }
      ],
      "bearish": []
    },
    "atr": {
      "stop_points": 2.25,
      "stop_ticks": 9,
      "position_size": 2,
      "risk_dollars": 102.50
    }
  },
  "smt": {
    "bullish_active": true,
    "bearish_active": false,
    "paired_instrument": "NQ1!",
    "last_signal": "bullish"
  },
  "price": {
    "last": 5875.50,
    "day_high": 5892.00,
    "day_low": 5868.75
  },
  "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": 5874.75,
      "safe": 5873.50,
      "ob_body": 5872.50
    },
    "stop": 5870.25,
    "targets": [
      {
        "level": 5890.25,
        "label": "PDH",
        "rr": 3.2
      }
    ],
    "risk_reward": 3.2,
    "position_size": 2
  }
}

Field Reference

Root Fields

Field Type Description
timestamp string (ISO-8601) UTC timestamp of when the scan was executed. Format: YYYY-MM-DDTHH:mm:ss.sssZ.
symbol string TradingView symbol identifier for the primary instrument. Examples: "ES1!", "NQ1!", "MES1!", "GC1!".
timeframe string Chart timeframe the scan was executed on. Values: "1", "5", "15", "60", "240", "D", "W". Typically "5" for precision-tier scans.

bias Object

Directional bias from the Bias AI indicator.

Field Type Allowed Values Description
bias.daily string "bullish", "bearish", "neutral" Daily candle bias direction. "neutral" means an outside bar closed inside the previous range.
bias.weekly string "bullish", "bearish", "neutral" Weekly candle bias direction. Used as a confluence factor, not a gate.
bias.draw_on_liquidity string \| null "PDH", "PDL", null The draw-on-liquidity target. "PDH" (previous day high) for bullish, "PDL" (previous day low) for bearish. null when bias is neutral.
bias.hit_target boolean true, false Whether the DOL target has been reached during the current session. Determined by DOL line color matching after_raid_color.

session Object

Session state from Session Hunt AI and system clock.

Field Type Allowed Values Description
session.mode string "NY", "London" Which session profile is active. Determines entry window times and EOD cutoff.
session.current_window string "pre_session", "asia", "london", "gap_scan", "ny_am", "ny_pm", "post_eod" Current session segment. Read from Session Hunt AI session table.
session.in_macro boolean true, false Whether current time falls within an ICT macro window.
session.entry_window_active boolean true, false Whether current time is within the configured entry window (NY 07:00--15:00 ET or London 02:00--07:00 ET).

session.hunt Object

Field Type Allowed Values Description
hunt.side string \| null "HUNT_HIGH", "HUNT_LOW", "INVALID", null Current hunt state. "HUNT_HIGH": high swept, draw on low. "HUNT_LOW": low swept, draw on high. "INVALID": both swept. null: no sweep yet.
hunt.target_high number Price level Session range high. Read from Session Hunt AI line.
hunt.target_low number Price level Session range low. Read from Session Hunt AI line.
hunt.hi_swept boolean true, false Whether the session high has been swept.
hunt.lo_swept boolean true, false Whether the session low has been swept.
hunt.reextended boolean true, false Whether a re-extension range has formed after the initial range was invalidated.
hunt.reext_high number \| null Price level or null Re-extension range high. null if no re-extension.
hunt.reext_low number \| null Price level or null Re-extension range low. null if no re-extension.

structure Object

Market structure from OB AI.

structure.order_blocks Object

Field Type Description
order_blocks.bullish array<OrderBlock> All visible bullish order blocks, sorted by proximity to current price (nearest first).
order_blocks.bearish array<OrderBlock> All visible bearish order blocks, sorted by proximity to current price (nearest first).

OrderBlock Object

Field Type Description
high number Upper boundary of the order block zone.
low number Lower boundary of the order block zone.
spent boolean false = unspent (solid line, valid for entry). true = spent (dotted line, price already returned).
fvg FVG \| null Associated fair value gap. null if the OB has no FVG.
distance_ticks number Distance from current price to the nearest edge of the OB, in ticks.

FVG Object

Field Type Description
high number Upper boundary of the fair value gap.
low number Lower boundary of the fair value gap.
aggressive number Aggressive entry level (middle of the FVG / consequent encroachment).
safe number Safe entry level (deeper into FVG, closer to OB body).

structure.atr Object

Field Type Description
atr.stop_points number ATR-derived stop distance in points. Read from OB AI ATR banner atrsize.
atr.stop_ticks number Stop distance converted to ticks for the instrument.
atr.position_size number Recommended number of contracts. Read from OB AI ATR banner QTY row.
atr.risk_dollars number Total dollar risk at the recommended position size: position_size * stop_ticks * tick_value.

smt Object

SMT divergence state from the SMT Divergences indicator.

Field Type Allowed Values Description
smt.bullish_active boolean true, false Whether a bullish SMT divergence is currently active (primary made lower low, pair did not).
smt.bearish_active boolean true, false Whether a bearish SMT divergence is currently active (primary made higher high, pair did not).
smt.paired_instrument string Symbol The paired instrument used for SMT comparison. Example: "NQ1!" when primary is "ES1!".
smt.last_signal string \| null "bullish", "bearish", null The direction of the most recent SMT signal, regardless of whether it is still active. null if no signal has occurred.

price Object

Current price state from the chart.

Field Type Description
price.last number Most recent price (last trade or close of current bar).
price.day_high number Current session high.
price.day_low number Current session low.

decision Object

The strategy's computed recommendation. This is the primary output of the interpretation layer.

Field Type Allowed Values Description
decision.setup_valid boolean true, false Whether all setup conditions are met and confluence score meets the minimum threshold.
decision.setup_name string \| null See below Human-readable setup identifier. null when setup_valid is false.
decision.direction string \| null "long", "short", null Trade direction. null when no valid setup.
decision.confluence_score number 0--9 Weighted confluence score. 0 when no-trade conditions are active.
decision.confluence_factors array<string> See below String keys of all factors that contributed to the score. Empty array when score is 0.
decision.no_trade_reasons array<string> See below Reasons the setup is invalid. Empty array when setup_valid is true.
decision.entry EntryLevels \| null Object or null Entry price levels for all three tiers. null when no valid setup.
decision.stop number \| null Price level or null Stop loss price. null when no valid setup.
decision.targets array<Target> Array Target levels with labels and individual R:R. Empty when no valid setup.
decision.risk_reward number \| null Ratio or null R:R against the primary target. null when no valid setup.
decision.position_size number \| null Contracts or null Recommended position size. null when no valid setup.

setup_name Values

Value Description
"hunt_long_ob_fvg" Long setup with OB + FVG entry
"hunt_long_ob_only" Long setup with OB entry (no FVG)
"hunt_short_ob_fvg" Short setup with OB + FVG entry
"hunt_short_ob_only" Short setup with OB entry (no FVG)
null No valid setup

confluence_factors Values

Value Weight Description
"bias_aligns_hunt" 2 Daily bias direction matches hunt side
"weekly_confirms" 1 Weekly bias matches daily bias
"ob_in_path" 2 Unspent OB exists in path to DOL
"ob_has_fvg" 1 Target OB has associated FVG
"smt_confirms" 2 Active SMT divergence confirms direction
"macro_window" 1 Entry during ICT macro window

no_trade_reasons Values

Value Description
"neutral_bias" Daily bias is neutral (0)
"invalid_hunt" Both sides of session range swept
"hunt_bias_mismatch" Hunt direction does not align with bias
"no_ob_in_path" No unspent OB between price and DOL
"outside_entry_window" Current time outside entry window
"past_eod_cutoff" Past end-of-day cutoff
"insufficient_rr" Risk-reward below 2:1 minimum
"double_invalidation" Re-extension range also both-sided swept
"news_blackout" Inside news event blackout window
"insufficient_confluence" Confluence score below minimum threshold
"ob_mitigated" Target OB was fully mitigated
"bias_flipped" Daily bias changed direction
"smt_broken" Confirming SMT divergence invalidated, score dropped below minimum
"target_reached" DOL target already hit

EntryLevels Object

Field Type Description
aggressive number Aggressive entry: FVG midpoint / consequent encroachment.
safe number Safe entry: deeper retracement into FVG.
ob_body number Conservative entry: OB body level.

Target Object

Field Type Description
level number Target price level.
label string Human-readable label. Values: "PDH", "PDL", "session_extension".
rr number Risk-reward ratio for this specific target, using the configured entry tier.

Schema Versioning

The StrategyFlags schema follows semantic versioning. The current version is 1.0.0.

  • Major: Breaking changes to field names, types, or removal of fields.
  • Minor: New fields added (backward compatible).
  • Patch: Documentation clarifications, no structural changes.

A schema_version field will be added in a future minor release to enable consumers to detect the version programmatically.