Menú
VisionAlert Guía

Tu propio EA#

VisionAlertEA no es el único que puede pedir análisis. Cualquier EA o indicador, de MT4 o MT5, puede mandar un trabajo con lo mínimo: velas y, si los tiene, niveles. Lo que falte (ATR, tolerancia, patrones, capturas) lo completa el servicio con tu estrategia, y el resto del flujo es el de siempre: visión, Jev, decisión, plan, Telegram y Mini App.

Tu EA decide qué manda y cuándo. El servicio decide qué hacer con ello.

Dos clases de trabajo#

Trabajo Qué manda tu EA Quién decide qué se analiza
bars ("kind": "bars") Velas y todos los niveles del par, al cierre de cada vela El servicio, con las reglas del gatillo. Es lo que hace VisionAlertEA
Con levels Las zonas que tu EA ya eligió (o bias para el gráfico entero) Tu EA. El servicio analiza directamente

Si no tienes una lógica propia para elegir zonas, usa bars: así cambias el gatillo en la Mini App sin tocar el EA.

Un trabajo bars#

JSON
{"format_version": 2, "kind": "bars", "source": "mi_ea",
 "id": "mi_ea_EURUSD_H1_20260106_1500", "symbol": "EURUSD", "timeframe": "H1",
 "context_timeframe": "H4", "bar_time": "2026.01.06 15:00", "digits": 5,
 "candles": ["… al menos 30 velas, de la más antigua a la última cerrada …"],
 "context_candles": ["… velas de H4, solo para la segunda captura …"],
 "all_levels": [
   {"name": "demanda", "intent": "BUY", "entry": "STOP,LIMIT", "type": "rectangle",
    "zone_low": 1.0872, "zone_high": 1.0879, "origin_tf": "H4", "origin_time": "2026.01.02 08:00",
    "instruction": "espero rechazo", "tfs": "M15,H1"},
   {"name": "techo", "intent": "CLAVE", "price": 1.105}]}
  • candles: al menos 30, como [hora, open, high, low, close] o {time, open, high, low, close}. La hora como la escribe MetaTrader ("2026.01.06 15:00", hora del servidor) o en ISO 8601.
  • all_levels: todos los niveles del par ya proyectados al precio de la vela cerrada (las líneas inclinadas también), con su filtro tfs. De aquí sale el objetivo cuando tp_rule es next_level.
  • Sin niveles también vale: entonces solo disparan las reglas que analizan el gráfico entero.
  • Si ninguna regla dispara, el servicio borra el trabajo y deja el motivo en triggers.jsonl.

Un trabajo con levels#

JSON
{"format_version": 2, "source": "mi_ea", "id": "mi_ea_GBPUSD_M15_20260106_1500",
 "symbol": "GBPUSD", "timeframe": "M15", "bar_time": "2026.01.06 15:00", "digits": 5,
 "levels": [{"name": "demanda", "intent": "BUY", "zone_low": 1.2610, "zone_high": 1.2618, "entry": "STOP"}],
 "candles": ["… al menos 30 velas …"]}

Sin levels, con "bias": "SELL" y una instruction, la IA analiza el gráfico entero. Las zonas CLAVE nunca se analizan: si tras quitarlas no queda ninguna BUY o SELL, el trabajo se rechaza.

Los campos obligatorios son id (único, letras, números, ., #, _, -), symbol, timeframe, bar_time (la última vela cerrada), digits y candles. La tabla completa está en docs/CONTRATO_EA.md del repositorio.

Dos vías de entrega#

Por archivo#

Para un EA en el mismo VPS que el servicio:

  1. Escribe Files\VisionAlert\queue\<id>.tmp y renómbralo a <id>.json, para que el servicio nunca lea un JSON a medias.
  2. mt4_files_dir (o jobs_dir) en config.yaml apunta a esa carpeta.
  3. El trabajo pasa a done\<día>\ con sus capturas. Si se rechaza, queda como <id>.error con el motivo en el registro y en decisions.jsonl.

Por HTTP#

Para un MT5, otra máquina u otro programa. Necesita la Mini App activa (es su servidor) y EA_TOKEN en el .env del servicio.

HTTP
POST https://app.tudominio.com/api/jobs
Content-Type: application/json
X-EA-Token: <tu EA_TOKEN>

{ …el trabajo… }
Respuesta Significado
202 Encolado. Se valida al procesarlo; el resultado llega por Telegram y queda en decisions.jsonl
400 JSON ilegible o sin id
401 Falta el token o no coincide
409 Ya hay un trabajo con ese id en la cola
413 Más de 2 MB (o una captura de más de 3 MB)
503 El servicio no tiene cola: configura mt4_files_dir o jobs_dir

En MetaTrader, permite la URL en Herramientas › Opciones › Asesores Expertos › Permitir WebRequest. Sin eso, WebRequest devuelve -1.

La plantilla: ea_minimo#

tools/ea_minimo.mq4 y .mq5 (con el cuerpo común en ea_minimo.mqh) son un EA de ejemplo de unas 150 líneas:

  • Al cierre de cada vela manda un trabajo bars con candles (120 por defecto), context_candles si pones InpContextTf y, en all_levels, todos los rectángulos y líneas del gráfico con el formato de ZoneDrawer.
  • Con InpUrl vacío escribe en Files\VisionAlert\queue\; con una URL, hace POST /api/jobs con InpToken.

Instalación: copia ea_minimo.mq4 (o .mq5) y ea_minimo.mqh en Experts\, con TraderKit en Include\, compila y ponlo en el gráfico que quieras vigilar. Para que tu EA decida él, cambia kind: "bars" por levels (o bias).