Passa al contenuto principale

ibkr-bridge

Cosa fa

ibkr-bridge e il layer di integrazione backend verso IBKR Gateway, con API mirror e controllo continuo dello stato auth/sessione.

Ruoli e responsabilita

  • proxy controllato verso endpoint IBKR (/mirror/*);
  • endpoint applicativi semplificati (/accounts, /account);
  • loop di connettivita (auth status, tickle, ssodh init);
  • pubblicazione telemetria su Redis bus.

Porta esposta

  • Porta interna servizio: 3017
  • Esposizione via Traefik: https://api.trading.expovin.it/ibkr-bridge/*

Architettura grafica

Microservizi interni

market-data-service, brokerExecutor, altri consumer broker

HTTP API (/mirror, /accounts, /account)
ibkr-bridge

Proxy API + connectivity loop + reauth SSO

  • auth status, tickle, ssodh init
  • fallback reauth su 401
  • telemetria su Redis bus
IBKR Gateway

Endpoint /v1/api/* (broker API)

SSO Dispatcher

Re-auth URL (IBKRGW_SSO_URL)

Redis Bus

telemetry/status del bridge

datahub

settings + log persistenti

Configurazione (docker-compose.paper.yml)

ibkr-bridge:
image: expovin/ibkr-bridge:${IBKRBRIDGE_VERSION}
restart: unless-stopped
profiles: ["ibkr-bridge"]
environment:
- DBMANAGER_URL=${DBMANAGER_URL}
- REDIS_URL=${REDIS_URL}
- IBKRGW_BASE_URL=${IBKRGW_BASE_URL}
- IBKR_INSECURE_TLS=${IBKR_INSECURE_TLS}
- TICKLE_INTERVAL_MS=${TICKLE_INTERVAL_MS}
- AUTH_CHECK_INTERVAL_MS=${AUTH_CHECK_INTERVAL_MS}
- ENV=${ENV}
- TZ=${TIMEZONE}
depends_on:
dbmanager:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3017/status/health"]
labels:
- "traefik.enable=true"
- "traefik.http.routers.ibkr-bridge.rule=Host(`api.trading.expovin.it`) && PathPrefix(`/ibkr-bridge`)"
- "traefik.http.services.ibkr-bridge.loadbalancer.server.port=3017"
- "traefik.http.routers.ibkr-bridge.middlewares=ibkr-bridge-stripprefix,cors-default@docker,auth-forward@docker"

Variabili d'ambiente

Infrastruttura

Variabili obbligatorie gestite da BaseService (comune a tutti i microservizi).

VariabileDefaultDescrizione
DATAHUB_URLhttp://datahub:3000URL del servizio datahub (ex DBMANAGER_URL, ancora accettato come alias).
REDIS_URLURI Redis (es. redis://redis:6379). Obbligatorio per il bus eventi e i canali di stato.
LOG_LEVELinfoLivello di log: trace, debug, info, warning, error.
ENVDEVAmbiente di esecuzione (local, paper, prod). Usato nel prefisso dei canali Redis.
TZTimezone di sistema del container (es. America/New_York).

IBKR Gateway

Variabili specifiche per la connessione e il mantenimento della sessione con IBKR Gateway. Tutte le variabili con prefisso IBKR possono essere sovrascritte a runtime anche tramite i settings dinamici caricati dal DB.

VariabileDefaultDescrizione
IBKRGW_BASE_URLURL base del Gateway IBKR (es. https://localhost:5000). Obbligatorio per il corretto funzionamento del bridge. Alias: IBKR_BASE_URL.
IBKRGW_SSO_URLhttp://ibkrgw-paper:5000/sso/Dispatcher?hardware_info=...URL del dispatcher SSO di IBKR. Usato per il re-auth automatico in caso di risposta 401.
IBKR_INSECURE_TLSfalseSe true, disabilita la verifica del certificato TLS verso il Gateway. Necessario in ambienti locali con certificati self-signed.
IBKR_REQUEST_TIMEOUT_MS20000Timeout in millisecondi per ogni richiesta HTTP verso IBKR Gateway.

Loop di connettivita

Variabili che controllano la frequenza dei controlli periodici di autenticazione e degli heartbeat verso il Gateway. Possono essere sovrascritte tramite settings dinamici.

VariabileDefaultDescrizione
TICKLE_INTERVAL_MS50000Intervallo in millisecondi tra un POST /v1/api/tickle e il successivo. Il tickle mantiene attiva la sessione IBKR.
AUTH_CHECK_INTERVAL_MS15000Intervallo in millisecondi tra un controllo GET /v1/api/iserver/auth/status e il successivo. Definisce anche la frequenza del loop principale di connettivita.
IBKR_SSODH_INIT_INTERVAL_MS60000Intervallo in millisecondi tra una chiamata POST /v1/api/iserver/auth/ssodh/init e la successiva. Impostare a 0 per disabilitare.

Pagine dedicate