---
title: smc (SMC)
description: "smc API reference: parameters, response fields and example requests."
---

# `smc` — SMC

> Category: **Trend** · Composite · 🧪 Möbius Lab

::: tip Reading the response
Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object.
:::

This is a trend indicator.

## Parameters

| Parameter | Type | Default |
|------|------|--------|
| `mode` | string | `historical` |
| `internal_size` | int | `5` |
| `internal_filter_confluence` | bool | `false` |
| `internal_show_bull` | string | `all` |
| `internal_show_bear` | string | `all` |
| `swing_size` | int | `50` |
| `swing_show_bull` | string | `all` |
| `swing_show_bear` | string | `all` |
| `show_swing_points` | bool | `false` |
| `show_strong_weak_hl` | bool | `true` |
| `internal_ob_max` | int | `5` |
| `swing_ob_max` | int | `5` |
| `ob_filter` | string | `atr` |
| `ob_mitigation` | string | `highlow` |
| `eq_size` | int | `3` |
| `eq_threshold` | float | `0.1` |
| `fvg_auto_threshold` | bool | `true` |
| `fvg_timeframe` | string | `` |
| `fvg_extend` | int | `1` |
| `show_daily_levels` | bool | `false` |
| `show_weekly_levels` | bool | `false` |
| `show_monthly_levels` | bool | `false` |
| `show_premium_discount_zones` | bool | `false` |
| `show_color_candles` | bool | `false` |

## Output columns

| Column |
|------|
| `smc_atr200` |
| `smc_parsed_low` |
| `smc_volatility` |
| `smc_parsed_high` |
| `smc_swing_trend` |
| `smc_candle_color` |
| `smc_high_vol_bar` |
| `smc_trailing_top` |
| `smc_internal_trend` |
| `smc_trailing_bottom` |
| `smc_swing_low_active` |
| `smc_swing_high_active` |
| `smc_internal_low_active` |
| `smc_internal_high_active` |

SMC also returns `objects` for structure events, order blocks, gaps and zones. Here `internal` means shorter-scale market structure.


## Native features

Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions.

This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming).

History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode.

| Feature column | Kind | Rule | Meaning | History / validity |
| --- | --- | --- | --- | --- |
| `smc.internal_bullish_bos` | `event` | Close strictly breaks an unconsumed internal high pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.internal_bearish_bos` | `event` | Close strictly breaks an unconsumed internal low pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.internal_bullish_choch` | `event` | Close strictly breaks an unconsumed internal high pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.internal_bearish_choch` | `event` | Close strictly breaks an unconsumed internal low pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bullish_bos` | `event` | Close strictly breaks an unconsumed swing high pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bearish_bos` | `event` | Close strictly breaks an unconsumed swing low pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bullish_choch` | `event` | Close strictly breaks an unconsumed swing high pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bearish_choch` | `event` | Close strictly breaks an unconsumed swing low pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.internal_bullish_order_block_mitigated` | `event` | An active internal bullish order block is first breached: low or close < bottom, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.internal_bearish_order_block_mitigated` | `event` | An active internal bearish order block is first breached: high or close > top, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bullish_order_block_mitigated` | `event` | An active swing bullish order block is first breached: low or close < bottom, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.swing_bearish_order_block_mitigated` | `event` | An active swing bearish order block is first breached: high or close > top, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.equal_highs` | `event` | The absolute difference between consecutive confirmed same-kind pivots is < eq_threshold * current smc_atr200. | Two same-kind pivots are close within the ATR tolerance, not necessarily equal or reversal points. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.equal_lows` | `event` | The absolute difference between consecutive confirmed same-kind pivots is < eq_threshold * current smc_atr200. | Two same-kind pivots are close within the ATR tolerance, not necessarily equal or reversal points. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.bullish_fair_value_gap` | `event` | low[t] > high[t-2] and close[t-1] > high[t-2] and delta > threshold. | A native three-bar gap forms; the event belongs to the third bar's close, never the object's middle-bar timestamp. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |
| `smc.bearish_fair_value_gap` | `event` | high[t] < low[t-2] and close[t-1] < low[t-2] and -delta > threshold. | A native three-bar gap forms; the event belongs to the third bar's close, never the object's middle-bar timestamp. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. |

### `smc.internal_bullish_bos`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.internal_bearish_bos`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.internal_bullish_choch`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.internal_bearish_choch`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bullish_bos`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bearish_bos`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bullish_choch`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bearish_choch`

- With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.internal_bullish_order_block_mitigated`

- Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.internal_bearish_order_block_mitigated`

- Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bullish_order_block_mitigated`

- Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.swing_bearish_order_block_mitigated`

- Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.equal_highs`

- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.equal_lows`

- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.bullish_fair_value_gap`

- delta=(close[t-1]-open[t-1])/(open[t-1]*100). Auto threshold is cumulative mean(abs(delta))*2 (initial invalid delta is zero); otherwise 0.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

### `smc.bearish_fair_value_gap`

- delta=(close[t-1]-open[t-1])/(open[t-1]*100). Auto threshold is cumulative mean(abs(delta))*2 (initial invalid delta is zero); otherwise 0.
- Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes.

See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart).

## Example call

```bash
curl -X POST -H "Authorization: Bearer mq_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "exchange": "binance",
    "market":   "perp",
    "symbol":   "BTCUSDT",
    "interval": "5m",
    "limit":    100,
    "signals":  true,
    "calc":     [{"name": "smc", "params": {"mode": "historical", "internal_size": 5, "internal_filter_confluence": false, "internal_show_bull": "all", "internal_show_bear": "all", "swing_size": 50, "swing_show_bull": "all", "swing_show_bear": "all", "show_swing_points": false, "show_strong_weak_hl": true, "internal_ob_max": 5, "swing_ob_max": 5, "ob_filter": "atr", "ob_mitigation": "highlow", "eq_size": 3, "eq_threshold": 0.1, "fvg_auto_threshold": true, "fvg_timeframe": "", "fvg_extend": 1, "show_daily_levels": false, "show_weekly_levels": false, "show_monthly_levels": false, "show_premium_discount_zones": false, "show_color_candles": false}}]
  }' \
  https://api.mobiusquant.ai/api/indicators
```

## Full interpretation guide

Field meanings, interpretation rules and usage notes are
documented in Chinese at:

[smc (中文详情)](https://docs.mobiusquant.ai/zh/indicators/smc)

## Related indicators

[alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend)
