MarketInfo — z MQL4 na MQL5
Funkcji MarketInfo nie ma w MQL5. Zastąpiły ją trzy funkcje SymbolInfo. Tabela tłumaczy każdy stary parametr.
2 fragmenty kodu z tej strony przeszły przez kompilator MetaEditor build 6090, 2026-08-05.
W MQL4 wszystko o instrumencie dawało jedno wywołanie MarketInfo(symbol, tryb). W MQL5 rozdzielono to na trzy funkcje według typu zwracanej wartości.
| MQL4 | MQL5 |
|---|---|
MODE_BID | SymbolInfoDouble(s, SYMBOL_BID) |
MODE_ASK | SymbolInfoDouble(s, SYMBOL_ASK) |
MODE_POINT | SymbolInfoDouble(s, SYMBOL_POINT) |
MODE_DIGITS | SymbolInfoInteger(s, SYMBOL_DIGITS) |
MODE_SPREAD | SymbolInfoInteger(s, SYMBOL_SPREAD) |
MODE_STOPLEVEL | SymbolInfoInteger(s, SYMBOL_TRADE_STOPS_LEVEL) |
MODE_FREEZELEVEL | SymbolInfoInteger(s, SYMBOL_TRADE_FREEZE_LEVEL) |
MODE_LOTSIZE | SymbolInfoDouble(s, SYMBOL_TRADE_CONTRACT_SIZE) |
MODE_MINLOT | SymbolInfoDouble(s, SYMBOL_VOLUME_MIN) |
MODE_MAXLOT | SymbolInfoDouble(s, SYMBOL_VOLUME_MAX) |
MODE_LOTSTEP | SymbolInfoDouble(s, SYMBOL_VOLUME_STEP) |
MODE_TICKVALUE | SymbolInfoDouble(s, SYMBOL_TRADE_TICK_VALUE) |
MODE_TICKSIZE | SymbolInfoDouble(s, SYMBOL_TRADE_TICK_SIZE) |
MODE_MARGINREQUIRED | OrderCalcMargin(...) |
MODE_TIME | SymbolInfoInteger(s, SYMBOL_TIME) |
Uwaga o typach
SymbolInfoInteger zwraca long. Przypisanie wprost do int daje ostrzeżenie kompilatora o możliwej utracie danych — rzutuj jawnie:
int cyfry = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);Bid i ask jednym wywołaniem
Zamiast dwóch osobnych zapytań warto pobrać cały tick — masz wtedy komplet danych z jednej chwili, a nie dwie wartości z dwóch różnych momentów:
MqlTick tick;
if(SymbolInfoTick(_Symbol, tick))
PrintFormat("bid %.5f ask %.5f czas %s",
tick.bid, tick.ask, TimeToString(tick.time, TIME_SECONDS));