Indicadores
Cada indicador que conoce el motor de reglas, con sus parámetros y campos de salida.
Un indicador se referencia dentro de un leaf como `{indicator: <kind>, ...params}`. Cada tipo expone uno o más campos de salida direccionables con `field: <name>` (omite `field` para el primero). El multi-timeframe se soporta con `timeframe: '4h'` en cualquier indicador.
| Tipo | Parámetros | Campos de salida | Uso típico |
|---|---|---|---|
| ema | period (>=1) | value | Filtro de tendencia. `ema20 > ema50` para sesgo alcista. |
| sma | period (>=1) | value | Como EMA pero sin memoria de suavizado. |
| rsi | period (por defecto 14, >=2) | value (0–100) | Reversión a la media. `rsi < 30` largo, `rsi > 70` corto. |
| macd | fast (12), slow (26), signal (9); fast < slow | line, signal, hist | Momentum. `hist crosses_above 0` como entrada. |
| bollinger | period (20), std_mult (2.0) | mid, upper, lower | Envoltura de volatilidad. `close < lower` para entradas de rebote. |
| atr | period (14, >=2) | value | Sizing de distancia al stop. `stop = entry - atr14 * 2`. |
| stochastic | period (14), smooth_d (3) | k, d (ambos 0–100) | Cruce de las líneas 20 / 80 para reversión a la media. |
| adx | period (14) | adx, plus_di, minus_di | `adx > 25` = en tendencia. Combina con `plus_di > minus_di` para sesgo alcista. |
| vwap | period (20, ventana rolling) | value | Referencia de valor justo. `close > vwap` = precio por encima del promedio. |
| volume_ma | period (20) | value | Confirmación de breakout. `volume > volume_ma * 1.5`. |
| trend | period (50), slope_lookback (5) | value (-1 / 0 / +1) | Filtro de tendencia categórico. `trend == 1` para alza, `== -1` para baja. |
| swing | lookback (1) | last_high, last_low, prev_high, prev_low | Entradas por breakout (`close > last_high`) y filtros HH / HL. |
| s_trend | lookback (1) | value (-1 / 0 / +1) | Régimen de tendencia estilo SMC (BOS / CHoCH) — cambia tras dos breakouts de swing del mismo lado. |
| s_trend_valid | lookback (1) | value (-1 / 0 / +1) | Como s_trend, pero cada breakout debe confirmarse por el cierre de la siguiente vela. |
| blackflag_fts | atr_period (14), atr_factor (1.6), fib_lookback (8) | trail, extreme, state, fib1, fib2, fib3 | Variante de SuperTrend con el TR modificado de Black Flag y una escalera de pullbacks Fib 38,2 / 50 / 61,8. |
| super_trend | atr_period (10), factor (3.0) | trail, state | SuperTrend estándar sobre `hl2`. `state == 1` régimen alcista, `state == -1` régimen bajista. |
| trend_magic | cci_period (20), atr_period (5), atr_mult (1.0) | trail, state, cci | Trinquete ATR filtrado por CCI. El stop avanza en la dirección de la tendencia mientras el CCI concuerda con el régimen. |
| vfi | length (130), coef (0.2), v_coef (2.5), signal (5) | vfi, signal, hist | Volume Flow Indicator. Oscilador — `vfi > 0` acumulación, `< 0` distribución, `hist` para señales de cruce. |
| market_structure | swing_lookback (5) | state, bos_signal, choch_signal, pivot_high, pivot_low, last_pivot_high, last_pivot_low | Estructura de mercado SMC sobre pivotes de swing. `state` = régimen actual, `bos_signal` / `choch_signal` se disparan durante una barra. |
| fair_value_gap | min_gap_pct (0.0), expire_bars (0 = nunca) | bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_filled, bear_filled | Imbalance de 3 barras con seguimiento de relleno. Usa `bull_signal` para entrar en la formación del FVG y `bull_filled` para rastrear su mitigación. |
| order_block | swing_lookback (5), retest_tolerance_pct (0.1) | bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_retest, bear_retest, bull_mitigated, bear_mitigated | Última vela opuesta antes de un BOS. `bull_retest` se dispara cuando el precio vuelve a la zona. |
| equal_highs_lows | lookback (10), tolerance_pct (0.05) | eqh_level, eql_level, eqh_signal, eql_signal, eqh_swept, eql_swept | Detección de pools de liquidez. `eqh_swept` confirma una caza de stops por encima de los máximos iguales — disparador habitual de reversión. |
| prior_period_levels | (sin parámetros — se calcula a partir del timestamp de la barra) | pdh, pdl, pdo, pdc, pwh, pwl, pwo, pwc, pmh, pml, pmo, pmc | Máximos / mínimos / aperturas / cierres del día, semana y mes previos. `close > pdh` para filtros de momentum de ruptura del máximo del día anterior. |
| premium_discount_zones | trailing_lookback (50) | trailing_top, trailing_bottom, premium_top, premium_bottom, equilibrium_top, equilibrium_bottom, discount_top, discount_bottom, current_zone | Clasificación del rango trailing por zonas Fib. `current_zone == 'discount'` para sesgo largo SMC. |
Nuevo catálogo de indicadores
Los diez indicadores añadidos en las olas de port desde Pine y SMC implementadas desde cero. Cada tarjeta incluye descripción, parámetros con valores por defecto, campos de salida y un snippet YAML listo para copiar y pegar.
Black Flag Futures Trading System
blackflag_ftsVariante de SuperTrend de Black Flag. Usa un True Range modificado y añade una escalera de pullbacks Fibonacci de tres pasos (38,2 / 50 / 61,8) para tomas parciales o reentradas escalonadas dentro de una tendencia en curso.
- Parámetros:
- atr_period (14), atr_factor (1.6), fib_lookback (8)
- Campos:
- trail, extreme, state, fib1, fib2, fib3
YAML
leaf:
lhs: { indicator: blackflag_fts, atr_period: 14, atr_factor: 1.6, field: state }
op: eq
rhs: { value: 1 }
dir: longSuperTrend
super_trendEl SuperTrend de manual — trailing stop ATR sobre hl2. `state` cambia entre +1 y -1 únicamente con un cierre más allá de la banda opuesta.
- Parámetros:
- atr_period (10), factor (3.0)
- Campos:
- trail, state
YAML
leaf:
lhs: { indicator: super_trend, atr_period: 10, factor: 3.0, field: state }
op: eq
rhs: { value: 1 }
dir: longTrend Magic
trend_magicTrailing stop ATR con trinquete filtrado por CCI. El trail solo avanza hacia el precio cuando el CCI concuerda con la dirección dominante — más silencioso que SuperTrend en lateral.
- Parámetros:
- cci_period (20), atr_period (5), atr_mult (1.0)
- Campos:
- trail, state, cci
YAML
leaf:
lhs: { bar: close }
op: gt
rhs: { indicator: trend_magic, atr_period: 5, atr_mult: 1.0, field: trail }
dir: longVolume Flow Indicator
vfiEl Volume Flow Indicator de Markos Katsanos — un oscilador suavizado y ponderado por volumen que cambia de signo al cruzar la línea cero conforme la acumulación se convierte en distribución. Combina el histograma con un filtro de tendencia para entradas confirmadas.
- Parámetros:
- length (130), coef (0.2), v_coef (2.5), signal (5)
- Campos:
- vfi, signal, hist
YAML
leaf:
lhs: { indicator: vfi, length: 130, field: hist }
op: crosses_above
rhs: { value: 0 }
dir: longEstructura de mercado (BOS / CHoCH)
market_structureDetecta pivotes y emite un Break of Structure o Change of Character con cada ruptura de pivote. El campo `state` indica el régimen actual, por lo que puedes usarlo como filtro de tendencia con estado.
- Parámetros:
- swing_lookback (5)
- Campos:
- state, bos_signal, choch_signal, pivot_high, pivot_low, last_pivot_high, last_pivot_low
YAML
leaf:
lhs: { indicator: market_structure, swing_lookback: 5, field: bos_signal }
op: eq
rhs: { value: 1 }
dir: longFair Value Gap (FVG)
fair_value_gapImbalance de 3 barras: un hueco entre la mecha de bar[n-2] y la mecha de bar[n]. Hace seguimiento de la zona hasta que el precio la rellena; `bull_signal` se dispara en la formación y `bull_filled` cuando el gap se cierra.
- Parámetros:
- min_gap_pct (0.0), expire_bars (0 = nunca)
- Campos:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_filled, bear_filled
YAML
leaf:
lhs: { indicator: fair_value_gap, min_gap_pct: 0.1, field: bull_signal }
op: eq
rhs: { value: 1 }
dir: longOrder block
order_blockÚltima vela de color opuesto antes de un Break of Structure. El bloque queda armado hasta que el precio lo retestea (`bull_retest`) o lo barre (`bull_mitigated`).
- Parámetros:
- swing_lookback (5), retest_tolerance_pct (0.1)
- Campos:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_retest, bear_retest, bull_mitigated, bear_mitigated
YAML
leaf:
lhs: { indicator: order_block, swing_lookback: 5, field: bull_retest }
op: eq
rhs: { value: 1 }
dir: longMáximos / mínimos iguales
equal_highs_lowsDetector de pools de liquidez. Marca un nivel cuando máximos (o mínimos) consecutivos están dentro de `tolerance_pct` entre sí. `eqh_swept` se dispara en la barra en la que se rompe el nivel — disparador habitual de reversión por caza de stops.
- Parámetros:
- lookback (10), tolerance_pct (0.05)
- Campos:
- eqh_level, eql_level, eqh_signal, eql_signal, eqh_swept, eql_swept
YAML
leaf:
lhs: { indicator: equal_highs_lows, lookback: 10, field: eqh_swept }
op: eq
rhs: { value: 1 }
dir: shortNiveles de periodos previos (PDH / PDL / PWH / PWL …)
prior_period_levelsApertura / máximo / mínimo / cierre del día, la semana y el mes previos. Se calcula a partir del timestamp de la barra — sin parámetros. Útil para operativa de ruptura de niveles de periodos previos y reversión a la media hacia el cierre previo.
- Parámetros:
- (ninguno)
- Campos:
- pdh, pdl, pdo, pdc, pwh, pwl, pwo, pwc, pmh, pml, pmo, pmc
YAML
leaf:
lhs: { bar: close }
op: gt
rhs: { indicator: prior_period_levels, field: pdh }
dir: longMulti-timeframe
Añade `timeframe: '4h'` a cualquier spec de indicador para calcularlo en un marco temporal mayor y rebroadcastear el valor sobre las velas base de tu estrategia. El motor maneja el resampling — sigues escribiendo reglas contra las velas de tu intervalo base.
Ejemplo
leaf:
lhs: { indicator: rsi, period: 14, timeframe: '4h' }
op: lt
rhs: { value: 35 }
dir: longWarmup y manejo de NaN
Los indicadores emiten NaN hasta que tienen suficientes velas para ser honestos. Un leaf con NaN devuelve False — no produce error, se abstiene. Por eso, las estrategias nuevas pueden quedarse paradas durante las primeras N velas de un backtest; es lo correcto.