Skip to content

MT5Account · Symbols and Market — Overview

Quick map of symbols, sessions, and market‑book APIs. Use this page to pick the right call fast. Links jump to detailed specs.

📁 What lives here


🧭 Plain English

  • symbols_total → the headcount of symbols (all vs Market Watch).
  • symbol_name → walk lists by index without fetching everything.
  • symbol_exist / symbol_is_synchronized / symbol_select → the sanity trio: existence, readiness, and watch‑list toggle.
  • symbol_info_ (double/integer/string)* → one property** on demand; cheap and precise.
  • symbol_info_tick → your now price snapshot with age/flags.
  • symbol_info_session_quote/tradewhen quotes/trading are allowed per weekday & session.
  • symbol_params_many → paged catalog to build tables and validators.
  • tick_value_with_size → bulk tick economics (tick value/size/contract).
  • market_book_add/get/releaseLevel II lifecycle: subscribe → read → release.

Rule of thumb: need just one fieldsymbol_info_*. Need many rowssymbol_params_many or tick_value_with_size. Need depthmarket_book_*.


Quick choose

If you need… Use Returns Key inputs (enums)
Count symbols symbols_total SymbolsTotalData { total } selected_only: bool
Resolve name by index symbol_name SymbolNameData { name } index: int, selected: bool
Check symbol existence / custom symbol_exist SymbolExistData symbol: str
Ensure Market Watch membership symbol_select SymbolSelectData symbol: str, select: bool
Check sync state symbol_is_synchronized SymbolIsSynchronizedData symbol: str
Latest tick snapshot symbol_info_tick SymbolInfoTickData symbol: str
One double property (e.g., BID, POINT) symbol_info_double SymbolInfoDoubleData { value } property: SymbolInfoDoubleProperty
One integer property (e.g., DIGITS) symbol_info_integer SymbolInfoIntegerData { value } property: SymbolInfoIntegerProperty
One string property (e.g., DESCRIPTION) symbol_info_string SymbolInfoStringData { value } property: SymbolInfoStringProperty
Margin rates by order type symbol_info_margin_rate SymbolInfoMarginRat order_type: BMT5_ENUM_ORDER_TYPE
Quote session window symbol_info_session_quote SymbolInfoSessionQuoteData day_of_week: DayOfWeek, session_index: uint32
Trading session window symbol_info_session_trade SymbolInfoSessionTradeData day_of_week: DayOfWeek, session_index: uint32
Paged symbol parameters symbol_params_many SymbolParamsManyData sort_type: AH_SYMBOL_PARAMS_SORT_TYPE, paging
Bulk tick value/size/contract tick_value_with_size TickValueWithSizeData symbols: list[str]
Subscribe to Level II market_book_add MarketBookAddData symbol: str
Snapshot Level II market_book_get MarketBookGetData symbol: str
Unsubscribe Level II market_book_release MarketBookReleaseData symbol: str

❌ Cross‑refs & gotchas

  • Select & sync before data: symbol_select + symbol_is_synchronized help avoid empty ticks/books.
  • UTC timestamps everywhere (including session windows). Convert once.
  • Server‑side enums control behavior: always pass the correct enum for symbol_info_* and sessions.
  • Market book depth varies by broker/symbol; arrays may be short or empty.
  • Batch wisely: tick_value_with_size and symbol_params_many reduce RPC chatter for tables.

🟢 Minimal snippets

# Ensure selected & synced, then get a fresh tick
from MetaRpcMT5 import mt5_term_api_market_info_pb2 as mi_pb2
s = "EURUSD"
if not (await acct.symbol_is_synchronized(s)).is_synchronized:
    await acct.symbol_select(s, True)
    _ = await acct.symbol_is_synchronized(s)
print((await acct.symbol_info_tick(s)).Bid)
# One property (double) — POINT
from MetaRpcMT5 import mt5_term_api_market_info_pb2 as mi_pb2
pt = await acct.symbol_info_double("XAUUSD", mi_pb2.SymbolInfoDoubleProperty.SYMBOL_POINT)
print(pt.value)
# DOM: subscribe → get → release
await acct.market_book_add("BTCUSD")
book = await acct.market_book_get("BTCUSD")
await acct.market_book_release("BTCUSD")