Signals Scrapper
Signals Scrapper (the “Trading Ideas Logger Bot”) is a scheduled NestJS worker that harvests forex trading signals from IC Markets’ research widgets (Trading Central / Autochartist) and optionally forwards them to a broker for automated execution.
The directory is named
signals-scrapper(with a double “s”). Routes and imports use that exact spelling.
What it does
On a cron schedule it:
- Reuses an authenticated Chrome tab (via the Chrome DevTools Protocol) that is already logged in to IC Markets’ Trading Central / Autochartist pages.
- Screenshots the Trading Central page and sends the PNG to the OpenAI Responses API (vision) with a strict Zod schema to extract structured signals — instrument, direction, and entry / pivot / target prices.
- Deduplicates against previously-seen signals, appends new ones to a JSONL log, and persists
a versioned state file (
seen.json). - Optionally submits new signals as orders to the sibling MT5 Trader service over loopback, with a durable outbox and reconciliation state machine.
A separate, lighter cron job just reloads the tabs to keep the login session alive so the extraction job always has a fresh, authenticated page to screenshot.
It runs as a headless background worker — a NestJS standalone application context, not an HTTP server.
Pipeline at a glance
cron tick ──▶ get authenticated tab ──▶ screenshot ──▶ OpenAI vision extract
│
MT5 outbox ◀── JSONL log ◀── dedup (new only) ◀────────┘
(optional, → mt5-trader)Explore the docs
Install, the dedicated Chrome / CDP profile setup, environment, and running the worker.
Getting StartedThe full environment variable reference: sources, browser, scheduling, OpenAI, and MT5.
ConfigurationThe scheduler → scraper → vision → dedup → JSONL → MT5-outbox pipeline and key services.
Architecture