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

MQL5 / Zlecenie

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

ORDER_PRICE_STOPLIMIT
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);

Powiązane