feat: saxo
This commit is contained in:
@@ -117,6 +117,20 @@ def resolve_instrument(symbol: str, asset_types: str = _OPTION_ASSET_TYPES) -> D
|
||||
if cache_key in _root_uic_cache:
|
||||
return _root_uic_cache[cache_key]
|
||||
|
||||
# Fast path: exchange-suffixed catalog symbols (e.g. "EUU:XCME", "OG:xcme") are Saxo
|
||||
# identifiers, not natural-language search terms — Saxo's free-text Keywords search
|
||||
# isn't reliable for them. If we already cached this exact symbol via a catalog
|
||||
# refresh, use its known Uic directly instead of re-searching live.
|
||||
from services.database import get_saxo_catalog_by_symbol
|
||||
cached_entry = get_saxo_catalog_by_symbol(symbol)
|
||||
if cached_entry:
|
||||
result = {
|
||||
"uic": cached_entry["uic"], "symbol": cached_entry["symbol"],
|
||||
"description": cached_entry["description"], "asset_type": cached_entry["asset_type"],
|
||||
}
|
||||
_root_uic_cache[cache_key] = result
|
||||
return result
|
||||
|
||||
data = _get("/ref/v1/instruments", {"Keywords": symbol, "AssetTypes": asset_types})
|
||||
items = data.get("Data") or data.get("data") or []
|
||||
if not items:
|
||||
|
||||
Reference in New Issue
Block a user