Menú
VisionAlert Guía

Archivos y registros#

Todo lo que hace VisionAlert queda escrito en archivos de texto en tu VPS. Si algo no cuadra, aquí está la respuesta. Con /logs te llegan los del día por Telegram.

Registros del servicio (service/logs/)#

Archivo Una línea por… Para qué sirve
triggers.jsonl Cada cierre de vela que llega de un sensor (MetaTrader o Sandmarket) Saber qué regla disparó o por qué no lo hizo ninguna
decisions.jsonl Cada zona analizada por la IA Lo que vio la visión, lo que respondió Jev, el plan y por qué se avisó o no. Es la base para calibrar los umbrales
sim_signals.jsonl Cada zona analizada en Sandmarket Veredicto, Jev, decisión, plan y capturas (la pestaña 🎮 Simulador lee de aquí)
llm_usage.jsonl Cada llamada a OpenRouter, también las fallidas Modelo, tokens, coste, latencia y reintentos
notifications.jsonl Cada aviso enviado o fallido Telegram, push de MetaTrader y avisos de los EAs
trades.jsonl Cada paso de la ejecución Señales, rechazos, órdenes colocadas, activadas y cerradas
sensor/<PAR>_<TF>.json El último trabajo de cada par y temporalidad Lo que usa 👁 Previsualizar para probar el gatillo
sim/ — Las capturas de cada análisis del simulador
signals/<id>.json Cada señal Su contexto para la Mini App: lo que vio la IA y dónde están las capturas
cooldown.json Zona avisada El enfriamiento de Decisión (después de avisar), en MetaTrader
trigger_cooldown.json Zona analizada por una regla El enfriamiento del gatillo (antes de la IA), en MetaTrader
pending_confirm.json Señal esperando tu decisión Su plan y su caducidad

Los enfriamientos de Sandmarket no van a disco: viven en memoria, por sesión.

Con /logs, los .jsonl del día llegan como decisiones_<día>.jsonl, llm_<día>.jsonl, notificaciones_<día>.jsonl, simulador_<día>.jsonl y operaciones_<día>.jsonl, más el diario de Expertos de cada terminal. Si un archivo pasa de 45 MB, llega comprimido.

La estrategia (service/)#

Archivo Qué es
strategy.json La estrategia vigente, junto a config.yaml
strategy_history/ Las 50 versiones anteriores (🕘 Historial)
strategies/<nombre>.json Los perfiles (📁 Perfiles)

En cada terminal (MQL4\Files o MQL5\Files)#

Ruta Qué es
VisionAlert\queue\ Trabajos esperando al servicio (<id>.error si se rechazó uno)
VisionAlert\done\<día>\ Trabajos analizados, con sus capturas
VisionAlert\notify\ Avisos para el push de MetaTrader
VisionAlert\import\, export\ Zonas para importar y exportadas
TraderKit\strategy.json La copia de la estrategia que leen los EAs
TraderKit\orders\ Señales, decisiones (.go, .cancel), acuses y resultados de TK_Executor
TraderKit\orders\PAUSED Mientras exista, TK_Executor no abre nada nuevo
TraderKit\executor\live.json La instantánea para el Panel, cada segundo
TraderKit\orderguard_alive.txt El latido de OrderGuard (modo y versión de la estrategia)
TraderKit\outbox\ Avisos de los EAs para Telegram

config.yaml#

La infraestructura. Las reglas de trading no van aquí: van en la estrategia.

Clave Por defecto Qué hace
mt4_files_dir vacío MQL4\Files del MT4 de VisionAlert (de ahí salen los trabajos y ahí van las señales)
mt4_name MT4 Nombre de ese terminal en los avisos
jobs_dir vacío Cola de trabajos sin MT4 local
terminals [] Más terminales: name, files_dir y import_levels
poll_seconds 1 Cada cuánto mira las carpetas
log_dir logs Dónde van los registros
openrouter.base_url, timeout_seconds OpenRouter, 120 La conexión con OpenRouter
vision.model, effort, max_tokens —, medium, 16000 El modelo de visión
jev.model, path — Jev (la versión va fijada: su endpoint es alpha)
telegram.enabled, chat_id sí, vacío Tu bot y tu chat
telegram.accept_level_files sí Aceptar levels.tsv por el chat
telegram.commands sí /resumen, /logs, /ayuda…
telegram.daily_summary_at vacío Hora del resumen automático ("23:55")
mt_push.enabled sí Reenviar los avisos como push de MetaTrader
webapp.enabled, public_url, host, port no, vacío, 127.0.0.1, 8080 La Mini App (y esta guía, en public_url/docs)
sandmarket.enabled, base_url, session_id no, http://127.0.0.1:8000, auto El simulador

Las claves decision, engine, pattern_definitions, execution.mode, execution.rules y sandmarket.timeframes solo sirven de semilla la primera vez que arranca el servicio sin strategy.json. Después manda la estrategia, y el arranque avisa si siguen en el YAML.

.env#

Solo los nombres: OPENROUTER_API_KEY, TELEGRAM_BOT_TOKEN, SANDMARKET_TOKEN (simulador) y EA_TOKEN (EAs por HTTP). Ver instalar el servicio.