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.