documentação
API para utilizadores avançados
O Oryon é determinista por design. Podes exportar estratégias, lançar backtests a partir de outros scripts, consultar o estado do serviço ou ligar o teu próprio runner. Aqui está o contrato mínimo.
Formato de estratégia
A estratégia é um JSON validado com Zod. Podes exportá-la da biblioteca ou de um link partilhado. Campos-chave: 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"] }
}O motor rejeita referências a indicadores inexistentes, ids duplicados e grupos de entrada vazios. O mesmo JSON é usado no backtest, na carteira, na implantação e na exportação MQL5.
Autenticação
- Web: cookie de sessão httpOnly `oryon_session`. As mutações requerem Origin de confiança.
- Runner/PC: `Authorization: Bearer <token>` ou o cabeçalho `x-oryon-runner`. O token é obtido ao emparelhar o PC e na web só vive o seu hash.
- Não há API keys de utilizador. Se automatizares a partir de um script, inicia sessão e reutiliza o cookie ou usa o token do runner para as rotas de runner.
- Públicas sem sessão: backtest, walkforward, optimize, demo, status, shares e waitlist. Estratégias, conta, billing e runner requerem a sua credencial.
Backtest e demo
POST /api/backtest aceita `strategy`, `bars`, `dataSource` (`real` ou `synthetic`) e `trials`. É público, mas tem rate limit por IP. Com sessão, desconta quota de backtests do plano.
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 devolve um backtest real pré-carregado e em cache. Não requer conta.
curl "https://tu-dominio/api/demo?preset=ema"Realismo do backtest
- `costs.spreadBySession` multiplica o spread conforme a sessão UTC. `swapLongPctPerDay` e `swapShortPctPerDay` rateiam swap/funding pelo tempo em mercado.
- `timeFilter` bloqueia entradas fora dos dias, horas ou sessões. As saídas por stop, objetivo, sinal ou tempo são sempre permitidas.
- As condições `higherTimeframe` usam a última vela fechada de uma temporalidade superior; as velas base são agregadas e não se olha para o 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 diário
- POST /api/monitors cria uma vigilância diária ou semanal. POST /api/monitors/[id]/run executa-a agora. O cron chama /api/monitors/run com o segredo do servidor.
- Cada execução guarda regime, métricas e avisos. Se o regime mudar ou um limite for ultrapassado, é enviado um aviso `monitor_alert`.
- POST /api/journal guarda notas, etiquetas, captura e lição. PATCH/DELETE /api/journal/[id] edita ou apaga. As capturas são validadas e nunca são servidas a partir do disco.
- O histórico de versões calcula as alterações face à versão anterior; não substitui definições antigas.
Integrações
- TradingView: POST /api/integrations/tradingview/[token] aceita JSON ou texto e guarda um sinal. O token só é mostrado ao criar a ligação.
- A Binance e a Bybit ligam-se em modo de só leitura para testar credenciais e consultar a conta. A execução continua reservada ao MT5.
- O cTrader guarda a configuração OAuth; o fluxo completo fica pendente de uma fase posterior.
Carteira e otimização
- POST /api/portfolio/backtest: `versionIds` (2–12), limites e `dataSource`. Requer sessão e desconta quota de carteiras.
- POST /api/walkforward, /api/optimize e /api/optimize/sensitivity usam o mesmo formato de estratégia e têm rate limits mais estritos.
Runner e estado
O PC reporta batimento, implantações e resultados do Strategy Tester. O site não fala diretamente com o 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 é público e devolve o estado do site, da base de dados e dos fornecedores de dados. Ideal para monitores.
curl https://tu-dominio/api/statusWebhooks de avisos
Os avisos de saída podem ser enviados para um webhook. Se configurares um segredo, o corpo é assinado com HMAC-SHA256 em `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": {}
}Quotas e erros
- Quando uma quota é ultrapassada, a API responde 402 com `{ ok:false, upgrade:true, plan, quota }`.
- O rate limit por IP responde 429 com `Retry-After`. Os limites exatos estão em Preços.
- Os erros de validação respondem 422 com `issues` legíveis. Não se guarda nada a meio.
Segurança
Não há segredos no cliente. As chaves de IA são cifradas no servidor, as sessões são guardadas como hash e o token do runner é comparado com o seu hash. CSP, HSTS, verificações de Origin e rate limit são aplicados no proxy.
Para reportar uma vulnerabilidade: oryon.help@outlook.com.
Exportar e importar
GET /api/strategies/[id]/export?version=... descarrega um JSON com `{ format, formatVersion, exportedAt, strategy }`. POST /api/strategies/import aceita esse JSON ou uma estratégia isolada e valida com o mesmo esquema.
A API pode mudar antes da versão 1.0. Se dependes dela em produção, escreve-nos e mantemos compatibilidade para o teu caso.