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

MQL5 / Instrument

SYMBOL_MARGIN_INITIAL

Depozyt początkowy wymagany na jeden lot. U większości brokerów detalicznych ta właściwość zwraca zero — i to nie

double SymbolInfoDouble(string symbol, SYMBOL_MARGIN_INITIAL);

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

Kwota blokowana przy otwarciu pozycji o wolumenie jednego lota, jeśli broker podaje ją wprost.

Dlaczego to nie jest oczywiste

U większości brokerów detalicznych ta właściwość zwraca zero — i to nie znaczy, że depozyt nie jest wymagany. Znaczy, że jest wyliczany z dźwigni i ceny, a nie podany jako stała.

Kod, który przy zerze uznaje, że pozycję stać otworzyć, przejdzie test na rachunku demo o dużym saldzie i zawiedzie przy pierwszym większym wolumenie. Właściwą drogą jest OrderCalcMargin, które uwzględnia i model rozliczenia, i dźwignię, i bieżącą cenę.

Kod

SYMBOL_MARGIN_INITIAL
double deklarowany = SymbolInfoDouble(symbol, SYMBOL_MARGIN_INITIAL);

double wymagany = 0.0;
if(!OrderCalcMargin(ORDER_TYPE_BUY, symbol, wolumen, cena, wymagany))
   return;

double wolny = AccountInfoDouble(ACCOUNT_MARGIN_FREE);

//--- zapas na zmiane ceny miedzy wyliczeniem a wykonaniem
if(wymagany > wolny * 0.9)
   PrintFormat("%s: depozyt %.2f przy wolnych srodkach %.2f - pomijam",
               symbol, wymagany, wolny);

Powiązane