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

MQL5 / Instrument

SYMBOL_TRADE_EXEMODE

Sposób wykonywania zleceń: natychmiastowy, rynkowy, giełdowy lub na żądanie. To jest właściwość, która wyjaśnia, dlaczego jeden ekspert dostaje

long SymbolInfoInteger(string symbol, SYMBOL_TRADE_EXEMODE);

1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.

Cztery wartości: SYMBOL_TRADE_EXECUTION_INSTANT, _REQUEST, _MARKET i _EXCHANGE. Decydują o tym, co serwer robi z ceną podaną w zapytaniu.

Dlaczego to nie jest oczywiste

To jest właściwość, która wyjaśnia, dlaczego jeden ekspert dostaje rekwotowania, a drugi nigdy ich nie widzi.

Przy INSTANT cena z zapytania jest wiążąca — jeśli rynek się ruszy, serwer proponuje nową i zwraca 10004. Wtedy pole deviation naprawdę coś znaczy. Przy MARKET serwer wykonuje po swojej cenie, a price w zapytaniu pełni rolę informacyjną: rekwotowań nie ma w ogóle, za to są poślizgi.

Kod obsługujący rekwotowania pętlą z ponowieniami jest więc na rachunku z wykonaniem rynkowym martwym kodem — nigdy się nie wykona. I odwrotnie: brak takiej obsługi na rachunku INSTANT oznacza sygnały gubione przy każdej szybszej świecy.

Kod

SYMBOL_TRADE_EXEMODE
long tryby = SymbolInfoInteger(symbol, SYMBOL_TRADE_EXEMODE);

switch((int)tryby)
  {
   case SYMBOL_TRADE_EXECUTION_INSTANT:
      Print("wykonanie natychmiastowe - cena wiazaca, mozliwe rekwotowania");
      break;
   case SYMBOL_TRADE_EXECUTION_MARKET:
      Print("wykonanie rynkowe - serwer wykona po swojej cenie");
      break;
   case SYMBOL_TRADE_EXECUTION_EXCHANGE:
      Print("wykonanie gieldowe");
      break;
   default:
      Print("wykonanie na zadanie");
  }

Powiązane