SYMBOL_TRADE_CALC_MODE
Sposób, w jaki liczony jest depozyt i wynik dla tego instrumentu. To jest właściwość, która decyduje o poprawności twoich wyliczeń ryzyka,
long SymbolInfoInteger(string symbol, SYMBOL_TRADE_CALC_MODE);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Określa model rozliczeniowy: forex, kontrakty futures, akcje giełdowe, CFD, indeksy i kilka wariantów pośrednich.
Dlaczego to nie jest oczywiste
To jest właściwość, która decyduje o poprawności twoich wyliczeń ryzyka, a prawie nikt jej nie sprawdza. W modelu forex depozyt zależy od wolumenu i dźwigni, w modelu CFD od ceny i rozmiaru kontraktu, w modelu giełdowym od ceny i liczby sztuk.
Wzór na wielkość pozycji napisany pod jeden model daje na innym wynik zawyżony albo zaniżony o rząd wielkości. Bezpieczniejsze od rozpoznawania modelu jest jednak nieużywanie żadnego wzoru: OrderCalcMargin liczy depozyt poprawnie dla każdego z nich.
Kod
//--- zamiast rozpoznawac model, pytamy terminal o depozyt
double wymagany = 0.0;
if(!OrderCalcMargin(ORDER_TYPE_BUY, symbol, wolumen, cena, wymagany))
{
PrintFormat("Nie moge policzyc depozytu dla %s, blad %d",
symbol, GetLastError());
return;
}
PrintFormat("%s: model rozliczenia %d, depozyt %.2f", symbol,
(int)SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE), wymagany);