documentazione
API per utenti avanzati
Oryon è deterministico per design. Puoi esportare strategie, avviare backtest da altri script, consultare lo stato del servizio o collegare il tuo runner. Ecco il contratto minimo.
Formato della strategia
La strategia è JSON validato con Zod. Puoi esportarla dalla libreria o da un link condiviso. Campi chiave: schemaVersion, name, market, symbol, timeframe, direction, indicators, entry, exit, risk e costs.
{
"schemaVersion": 1,
"name": "Cruce EMA 20/50",
"description": "Tendencia clásica",
"market": "crypto",
"symbol": "BTCUSD",
"timeframe": "1h",
"direction": "both",
"reverseOnOpposite": true,
"indicators": [
{ "id": "ema_fast", "kind": "ema", "period": 20, "source": "close" },
{ "id": "ema_slow", "kind": "ema", "period": 50, "source": "close" }
],
"entry": {
"long": { "mode": "all", "conditions": [
{ "left": { "type": "indicator", "indicatorId": "ema_fast" },
"op": "crossAbove",
"right": { "type": "indicator", "indicatorId": "ema_slow" } }
] },
"short": null
},
"exit": { "long": null, "short": null },
"risk": { "positionSizePct": 10, "sizingMode": "riskPct",
"riskPerTradePct": 1, "maxLeverage": 1,
"stopLossMode": "atr", "stopLossAtrMultiple": 2.5,
"takeProfitMode": "atr", "takeProfitAtrMultiple": 4 },
"costs": { "spreadPct": 0.01, "commissionPct": 0.02, "slippagePct": 0.01,
"swapLongPctPerDay": 0.005, "swapShortPctPerDay": 0.005,
"spreadBySession": { "asia": 1.4, "london": 1,
"overlap": 0.9, "newYork": 1.1,
"offHours": 1.6 } },
"timeFilter": { "enabled": true, "days": [1,2,3,4,5],
"startHourUtc": 7, "endHourUtc": 20,
"sessions": ["london", "overlap", "newYork"] }
}Il motore rifiuta riferimenti a indicatori inesistenti, id duplicati e gruppi di ingresso vuoti. Lo stesso JSON viene usato in backtest, portafoglio, deployment ed esportazione MQL5.
Autenticazione
- Web: cookie di sessione httpOnly `oryon_session`. Le mutazioni richiedono un Origin attendibile.
- Runner/PC: `Authorization: Bearer <token>` o l'header `x-oryon-runner`. Il token si ottiene accoppiando il PC e sul web vive solo il suo hash.
- Non ci sono API key utente. Se automatizzi da uno script, accedi e riutilizza il cookie oppure usa il token del runner per le rotte del runner.
- Pubbliche senza sessione: backtest, walkforward, optimize, demo, status, shares e waitlist. Strategie, account, billing e runner richiedono la loro credenziale.
Backtest e demo
POST /api/backtest accetta `strategy`, `bars`, `dataSource` (`real` o `synthetic`) e `trials`. È pubblico ma ha un rate limit per IP. Con una sessione, scala la quota di backtest del piano.
curl -X POST https://tu-dominio/api/backtest \
-H "Content-Type: application/json" \
-d '{"strategy": { ... }, "bars": 1500, "dataSource": "real"}'GET /api/demo?preset=ema|rsi|breakout restituisce un backtest reale precaricato e in cache. Non richiede un account.
curl "https://tu-dominio/api/demo?preset=ema"Realismo del backtest
- `costs.spreadBySession` moltiplica lo spread in base alla sessione UTC. `swapLongPctPerDay` e `swapShortPctPerDay` ripartiscono swap/funding in base al tempo sul mercato.
- `timeFilter` blocca gli ingressi fuori dai giorni, orari o sessioni. Le uscite per stop, obiettivo, segnale o tempo sono sempre consentite.
- Le condizioni `higherTimeframe` usano l'ultima candela chiusa di un timeframe superiore; le candele base vengono aggregate e non si guarda al futuro.
- `risk.sizingMode: "riskPct"` calcula el notional desde la distancia real al stop. `maxLeverage` limita el tamaño; si no hay stop, se usa el % fijo como respaldo.
Monitor e diario
- POST /api/monitors crea una vigilanza giornaliera o settimanale. POST /api/monitors/[id]/run la esegue ora. Il cron chiama /api/monitors/run con il segreto del server.
- Ogni esecuzione salva regime, metriche e avvisi. Se il regime cambia o una soglia viene superata, viene inviato un avviso `monitor_alert`.
- POST /api/journal salva note, tag, screenshot e lezione. PATCH/DELETE /api/journal/[id] modifica o elimina. Gli screenshot vengono validati e mai serviti dal disco.
- La cronologia delle versioni calcola le modifiche rispetto alla versione precedente; non sovrascrive le vecchie definizioni.
Integrazioni
- TradingView: POST /api/integrations/tradingview/[token] accetta JSON o testo e salva un segnale. Il token viene mostrato solo alla creazione della connessione.
- Binance e Bybit si collegano in sola lettura per testare le credenziali e consultare l'account. L'esecuzione resta riservata a MT5.
- cTrader salva la configurazione OAuth; il flusso completo resta in attesa di una fase successiva.
Portafoglio e ottimizzazione
- POST /api/portfolio/backtest: `versionIds` (2–12), limiti e `dataSource`. Richiede una sessione e scala la quota di portafogli.
- POST /api/walkforward, /api/optimize e /api/optimize/sensitivity usano lo stesso formato di strategia e hanno rate limit più severi.
Runner e stato
Il PC riporta heartbeat, deployment e risultati dello Strategy Tester. Il sito non parla direttamente con MetaTrader.
curl -X POST https://tu-dominio/api/runner/report \
-H "Authorization: Bearer $ORYON_RUNNER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"host":"mi-pc","account":"demo","equity":10000,"running":[]}'GET /api/status è pubblico e restituisce lo stato del sito, del database e dei fornitori di dati. Ideale per i monitor.
curl https://tu-dominio/api/statusWebhook degli avvisi
Gli avvisi in uscita possono essere inviati a un webhook. Se configuri un segreto, il corpo viene firmato con HMAC-SHA256 in `X-Oryon-Signature: sha256=...`.
POST https://tu-servidor/hook
Content-Type: application/json
X-Oryon-Event: order_rejected
X-Oryon-Signature: sha256=<hmac>
{
"event": "order_rejected",
"title": "Orden rechazada",
"body": "EURUSD · ...",
"severity": "warning",
"url": "https://tu-dominio/operar/...",
"timestamp": "2026-11-09T12:00:00.000Z",
"data": {}
}Quote ed errori
- Quando una quota viene superata, l'API risponde 402 con `{ ok:false, upgrade:true, plan, quota }`.
- Il rate limit per IP risponde 429 con `Retry-After`. I limiti esatti sono nella pagina Prezzi.
- Gli errori di validazione rispondono 422 con `issues` leggibili. Non viene salvato nulla a metà.
Sicurezza
Non ci sono segreti nel client. Le chiavi AI vengono cifrate sul server, le sessioni salvate come hash e il token del runner confrontato con il suo hash. CSP, HSTS, controlli Origin e rate limit vengono applicati nel proxy.
Per segnalare una vulnerabilità: oryon.help@outlook.com.
Esporta e importa
GET /api/strategies/[id]/export?version=... scarica un JSON con `{ format, formatVersion, exportedAt, strategy }`. POST /api/strategies/import accetta quel JSON o una strategia singola e valida con lo stesso schema.
L'API può cambiare prima della versione 1.0. Se ne dipendi in produzione, scrivici e manterremo la compatibilità per il tuo caso.