refactor(V2): get_historical & get_indicators are common-only on /mcp
Consolidate the cross-cutting data tools onto the unified interface and remove their per-exchange duplicates. - /mcp/tools/get_historical: single call, `exchange` now optional. Set → that venue's candles (native symbol); omitted → cross-exchange consensus (canonical symbol, median OHLC + div_pct). Folds in the former /mcp-cross consensus, whose router is deleted. - /mcp/tools/get_indicators: new common tool computing sma/rsi/atr/macd/adx over the single-or-consensus series. Computation centralized in common/indicators.py::compute_indicators (was duplicated per exchange). - Remove get_historical from /mcp-deribit and /mcp-hyperliquid; remove get_technical_indicators (deribit) and get_indicators (hyperliquid), including the now-dead client methods, Req schemas and tool wrappers. The client get_historical METHODS stay (used by the unified dispatch). Tests: rewrite cross tests into test_unified (instruments, historical single + consensus + failures, indicators single + consensus); drop the old CrossClient test; tighten app-boot surface assertions (/mcp owns the data tools; no /mcp-cross, no per-exchange historical/indicators). Docs: API_REFERENCE / README / CLAUDE updated; smoke run_unified.sh now covers consensus + indicators. 324 passed, ruff clean. Verified live against Deribit/Hyperliquid. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -59,18 +59,19 @@ Nota: nel modulo `sentiment` "bybit" resta come **fonte dati pubblica**
|
||||
|
||||
## Interfacce dati
|
||||
|
||||
- **`/mcp` (comune, raccomandata)** — `get_instruments` con schema uniforme
|
||||
(ogni elemento porta `exchange`, `fees`, `history_start`, `type`, `tick_size`,
|
||||
`native`); `get_historical` con `exchange` selezionabile (singolo venue).
|
||||
Supporta deribit + hyperliquid (IBKR non ancora integrato).
|
||||
- **`/mcp-cross`** — `get_historical` a consenso multi-exchange (mediana OHLC,
|
||||
`sources`, `div_pct`).
|
||||
- **`/mcp-{exchange}`** — router per-exchange legacy, ancora attivi.
|
||||
- **`/mcp` (comune)** — gli **unici** tool dati trasversali. `get_instruments`
|
||||
(schema uniforme: `exchange`, `fees`, `history_start`, `type`, `tick_size`,
|
||||
`native`); `get_historical` e `get_indicators` con `exchange` opzionale →
|
||||
singolo venue se valorizzato, **consenso** multi-exchange (mediana OHLC +
|
||||
`div_pct`) se omesso. Supporta deribit + hyperliquid (IBKR non integrato).
|
||||
- **`/mcp-{exchange}`** — router per-exchange per il resto (ticker, ordini,
|
||||
options analytics, …). **NON** espongono più `get_historical`/`get_indicators`.
|
||||
|
||||
Convenzione: ogni `get_historical` ritorna la chiave uniforme
|
||||
Convenzione: `get_historical` ritorna la chiave uniforme
|
||||
`candles: [{timestamp(ms), open, high, low, close, volume}]` (validatore in
|
||||
`common/candles.py`). `fees`/`history_start` sono popolati **live dove
|
||||
l'upstream li espone** (oggi: Deribit), altrimenti `null`.
|
||||
l'upstream li espone** (oggi: Deribit), altrimenti `null`. Il calcolo indicatori
|
||||
è centralizzato in `common/indicators.py::compute_indicators`.
|
||||
|
||||
## Convenzioni
|
||||
|
||||
|
||||
Reference in New Issue
Block a user