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#
- Lee las zonas que dibujas en todos los gráficos abiertos (cada
InpScanLevelsSec, 15 s). - Detecta el cierre de vela en cada par y temporalidad vigilados.
- Deja un trabajo
barsenVisionAlert\queue: las velas (candles_in_json), las de la temporalidad de contexto y todos los niveles del par, también los CLAVE. - Reenvía como push de MetaTrader los avisos que deja el servicio (como mucho uno cada 6 s, el límite de MetaTrader).
- Importa zonas de
VisionAlert\import\levels.tsven 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:
{"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#
- Ejecuta
TK_StrategyCheck: imprime en Expertos los pares, temporalidades y velas que tomará el EA. - Pon el EA y espera al segundo cierre de vela: el primero tras arrancar solo sirve de referencia.
- Mira
triggers.jsonl: debe ir sumando líneas con"source": "VisionAlertEA".
Si algo falla, ve a solución de problemas.