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
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");
}