Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Z MQL4 na MQL5

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.

MQL4MQL5
MODE_BIDSymbolInfoDouble(s, SYMBOL_BID)
MODE_ASKSymbolInfoDouble(s, SYMBOL_ASK)
MODE_POINTSymbolInfoDouble(s, SYMBOL_POINT)
MODE_DIGITSSymbolInfoInteger(s, SYMBOL_DIGITS)
MODE_SPREADSymbolInfoInteger(s, SYMBOL_SPREAD)
MODE_STOPLEVELSymbolInfoInteger(s, SYMBOL_TRADE_STOPS_LEVEL)
MODE_FREEZELEVELSymbolInfoInteger(s, SYMBOL_TRADE_FREEZE_LEVEL)
MODE_LOTSIZESymbolInfoDouble(s, SYMBOL_TRADE_CONTRACT_SIZE)
MODE_MINLOTSymbolInfoDouble(s, SYMBOL_VOLUME_MIN)
MODE_MAXLOTSymbolInfoDouble(s, SYMBOL_VOLUME_MAX)
MODE_LOTSTEPSymbolInfoDouble(s, SYMBOL_VOLUME_STEP)
MODE_TICKVALUESymbolInfoDouble(s, SYMBOL_TRADE_TICK_VALUE)
MODE_TICKSIZESymbolInfoDouble(s, SYMBOL_TRADE_TICK_SIZE)
MODE_MARGINREQUIREDOrderCalcMargin(...)
MODE_TIMESymbolInfoInteger(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));