From zero to first paper trade.
Everything below works with the files in this package. No hidden steps.
01 · QUICK START
The 10-minute path
- Request access at signup.html, verify your email, get approved in admin.html.
- Run the backend: cd backend → npm install → npm start (SQLite-free JSON store, zero native builds).
- Point the site at it: uncomment the SOODCHIN_API_URL line atop the auth pages.
- Open the dashboard → My Bot, submit your channel, watch training go live.
- Spend your 30 test tries, then log paper trades in the journal.
02 · REQUIREMENTS
What you need
- Windows VPS + MetaTrader 5 with Algo Trading enabled (for live execution; paper mode needs nothing).
- Node.js 18+ for this backend; Python 3.8+ for the trading bot itself.
- 500–2,000 past messages from your signal channel for training.
- SMTP credentials (optional) — without them, Ethereal test mailboxes are used automatically.
03 · CONFIG REFERENCE
The knobs that matter
| Key | Where | What it does |
|---|---|---|
| JWT_SECRET / ADMIN_KEY | backend/.env | Session signing + admin console unlock. Set long random strings. |
| SIMULATE_TRAINING | backend/.env | true = demo pipeline auto-runs. false = your Python bot drives states via /api/admin/job-advance. |
| TP_MANAGEMENT_MODE | config.py | split_tickets (one ticket per TP) or live_polling (1-sec trailing loop). |
| ALLOW_SAME_SYMBOL_STACKING | config.py | Anti-pyramiding toggle. Keep off unless you know why. |
| AUTO_EXECUTE_ON_TELEGRAM_FAILURE | config.py | Fire the trade anyway if the proposal message can't deliver. |
| tp_rules.json | database/ | Per-TP close % and SL action (TP1 50% → breakeven, TP2 → TP1…). |
04 · CHANNEL TRAINING
Why the model needs your channel first
Every provider formats differently. The DistilBERT two-head model (Head 1: signal/spam/command · Head 2: action, symbol, levels) fine-tunes on your history on Colab T4, then deploys quantized (~38ms, offline). Generic parsing runs without it — trained parsing is what you actually want to trade on. Training improves accuracy; it never guarantees profit.
05 · TROUBLESHOOTING
- Login loops back? Check the account is email-verified and admin-approved (access.html shows the exact state).
- Bot check won't pass? The Turnstile widget issues single-use tokens — complete it fresh on each submit, and check TURNSTILE_SECRET + TURNSTILE_HOSTNAMES in the backend .env.
- No email arrived? With no SMTP configured, open the backend console: Ethereal preview URLs are logged per email.
- Job stuck in QUEUED? The simulator ticks every 3s; with SIMULATE_TRAINING=false, jobs wait for your Python webhook.
- MT5 order rejected? Check spread vs MAX_SPREAD, Algo Trading enabled, and symbol suffix mapping (e.g. XAUUSD.pro).
06 · SUPPORT