Menú
VisionAlert Guía

VisionAlertEA, el sensor#

VisionAlertEA trabaja dentro de MetaTrader 4, no consulta a ninguna IA y no decide nada. Es un sensor: al cierre de cada vela manda al servicio las velas y todos tus niveles, y el servicio aplica las reglas de tu estrategia.

Qué hace#

  1. Lee las zonas que dibujas en todos los gráficos abiertos (cada InpScanLevelsSec, 15 s).
  2. Detecta el cierre de vela en cada par y temporalidad vigilados.
  3. Deja un trabajo bars en VisionAlert\queue: las velas (candles_in_json), las de la temporalidad de contexto y todos los niveles del par, también los CLAVE.
  4. Reenvía como push de MetaTrader los avisos que deja el servicio (como mucho uno cada 6 s, el límite de MetaTrader).
  5. Importa zonas de VisionAlert\import\levels.tsv en cuanto aparece.

Ya no hace capturas, ni detecta patrones, ni lleva enfriamientos: todo eso lo hace el servicio con las mismas reglas para MetaTrader, para cualquier EA propio y para Sandmarket. Por eso no necesita plantilla de captura ni abre gráficos. Las capturas las dibuja el servicio con las velas del trabajo, con los precios marcados en el eje: ver qué recibe el modelo.

Sus parámetros#

Qué vigilar lo manda la estrategia (Gatillo › común a todas las reglas). Los inputs son la reserva: valen si no hay copia de la estrategia en Files\TraderKit, si le falta una clave o con InpUseStrategy = false.

Parámetro Por defecto Qué hace
InpUseStrategy true Tomar pares, temporalidades, velas y contexto de la estrategia
InpSymbols vacío Reserva de trigger.symbols. Vacío = los 28 pares mayores
InpSymbolSuffix vacío Sufijo del broker (.m, pro…). Vacío = el del gráfico donde está el EA. Solo del EA
InpTimeframes M15,H1,H4,D1 Reserva de trigger.timeframes
InpContextMap M15:H4,H1:H4,H4:D1,D1:W1 Reserva de trigger.context_map
InpCandlesInJson 40 Reserva de trigger.candles_in_json (30 como mínimo)
InpScanLevelsSec 15 Cada cuántos segundos relee zonas y estrategia
InpAutoImport true Importar levels.tsv en cuanto aparece
InpImportReplace true Al importar, sustituir las zonas de cada par del archivo
InpMtPush true Reenviar los avisos como push de MetaTrader

Los inputs antiguos de toque, tolerancia, patrones, enfriamiento y capturas ya no existen: ahora son condiciones de las reglas y se cambian en la Mini App, sin recompilar.

El único prefiltro: needs_levels#

Si todas las reglas activas parten de zonas dibujadas (tienen Toque de zona), un par sin ningún nivel no manda nada: no hay nada que tocar. El servicio calcula ese valor y lo deja en la copia de la estrategia (trigger.needs_levels).

En cuanto activas una regla que analiza el gráfico entero (sin Toque de zona), needs_levels pasa a false y el EA manda todos los pares vigilados, tengan niveles o no.

Por qué no saltó: triggers.jsonl#

Cada cierre de vela que llega al servicio deja una línea en service/logs/triggers.jsonl con la regla que disparó o el motivo de que no lo hiciera:

JSON
{"ts": "2026-10-21T15:00:03", "job": "EURUSD_H1_20261021_1400", "symbol": "EURUSD", "timeframe": "H1",
 "bar_time": "2026.10.21 14:00", "source": "VisionAlertEA", "result": "sin gatillo", "rules": [],
 "misses": [{"rule": "Zonas + patrones de vela", "why": "demanda: candle_pattern: sin patrón de vela a favor"}]}

Los motivos que más verás:

Motivo Qué significa
zone_touch: ninguna zona en juego Ninguna de las últimas lookback velas tocó una zona (o la que tocó quedó rota)
<zona>: candle_pattern: sin patrón de vela a favor Hubo toque, pero el código no vio un patrón a favor y la regla lo exige
hours: 18:00 fuera de 08:00-12:00 La vela cerró fuera del horario de la regla
min_atr_pips: ATR 3.2 pips < 5 Mercado demasiado tranquilo
near_level: … a 1.80 ATR (> 1) El cierre está lejos del nivel más cercano
<zona>: en enfriamiento Esa regla ya analizó esa zona hace menos de cooldown_bars velas

El último trabajo de cada par y temporalidad queda además en service/logs/sensor/<PAR>_<TF>.json. Es lo que usa 👁 Previsualizar en la Mini App para decirte qué reglas dispararían con tu borrador.

Comprobar que funciona#

  1. Ejecuta TK_StrategyCheck: imprime en Expertos los pares, temporalidades y velas que tomará el EA.
  2. Pon el EA y espera al segundo cierre de vela: el primero tras arrancar solo sirve de referencia.
  3. Mira triggers.jsonl: debe ir sumando líneas con "source": "VisionAlertEA".

Si algo falla, ve a solución de problemas.