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