ORDER_PRICE_STOPLIMIT
Cena zlecenia limit wystawianego po wyzwoleniu zlecenia stop limit. Zlecenie stop limit działa dwuetapowo i to jest jego cała trudność: cena
double OrderGetDouble(ORDER_PRICE_STOPLIMIT);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Dotyczy wyłącznie typów ORDER_TYPE_BUY_STOP_LIMIT i ORDER_TYPE_SELL_STOP_LIMIT. Dla pozostałych typów wynosi zero.
Dlaczego to nie jest oczywiste
Zlecenie stop limit działa dwuetapowo i to jest jego cała trudność: cena z pola price wyzwala, a wtedy serwer wystawia zlecenie limit po cenie z pola stoplimit. To dwa różne poziomy i oba muszą być poprawne względem ceny rynkowej.
Typ jest rzadko używany, bo trudno go przetestować — na koncie demo trzeba poczekać na realny ruch ceny przez oba poziomy. Dlatego kod go obsługujący bywa napisany raz i nigdy niesprawdzony.
Kod
MqlTradeRequest zapytanie = {};
MqlTradeResult wynik = {};
MqlTick tick;
if(!SymbolInfoTick(_Symbol, tick))
return;
zapytanie.action = TRADE_ACTION_PENDING;
zapytanie.symbol = _Symbol;
zapytanie.volume = 0.10;
zapytanie.type = ORDER_TYPE_BUY_STOP_LIMIT;
//--- wyzwolenie powyzej ceny, limit ponizej poziomu wyzwolenia
zapytanie.price = NormalizeDouble(tick.ask + 300 * _Point, _Digits);
zapytanie.stoplimit = NormalizeDouble(tick.ask + 250 * _Point, _Digits);
zapytanie.type_time = ORDER_TIME_GTC;
if(!OrderSend(zapytanie, wynik) || wynik.retcode != TRADE_RETCODE_PLACED)
PrintFormat("odrzucone, retcode %d", wynik.retcode);