Расчет лота пропорционально депозиту

Автор: | 03.07.2018

По мере лота депозита будет логично увеличивать объемы открываемых позиций. Если при торговле на реальном счете к увеличению лота надо подходить крайне взвешенно и обдуманно, при тестирования стратеги в тестере увеличение лота можно делать автоматически соответственно средствам депозита.


В первую очередь определимся, что будем считать депозитом. Это могут быть свободные средства, баланс, эквити, для их определения используются соответствующие функции:

В МТ4:

AccountFreeMargin(); // свободные средства
AccountBalance(); // баланс
AccountEquity(); // эквити

В МТ5:

AccountInfoDouble(ACCOUNT_MARGIN_FREE); // свободные средства
AccountInfoDouble(ACCOUNT_BALANCE); // баланс
AccountInfoDouble(ACCOUNT_EQUITY); // эквити

Чаще всего используются свободные средства, иногда баланс. Для размера средств используем переменную, что бы, в случае необходимости, код можно было легко изменить для использования другого типа средств:

double Means=AccountFreeMargin();

Вычисляем лот:

double lot=Means/100000*risk;

Где Means – риск в процентах, точнее – это доля средств выраженная в процентах.

В результате применения данной формы получаем очевидный и ожидаемый результат, если объем средств – 1000, риск – 10%, получаем лот 0.1, если риск 20%, получаем лот 0.2 и т.д.  Понятно и вполне удобно. Однако, в данном случае, параметр risk можно называть риском лишь относительно. Если рассчитать лот для risk=100%, получим лот 1.0, то не во всех случаях лот с таким объемом получится открыть (теоретически, а практический его и не стоит пытаться открываться с таким большим риском).  Дело в том, что у каждого счета есть такой параметр как кредитное плечо, при значения плеча 200 и объеме средств 1000 получится открыть лот размеров 1.0, а при плече 100 со средствами 1000 получится открыть лот не более чем 0.7-0.8.   То есть в одном случае риску 100% соответствует лот 1.0, а в другом 0.7-0.8. Такую особенность можно учесть при расчете лота и тогда параметр risk действительно будет являться риском или нагрузкой на депозит.

Есть такой параметр “требуемая маржа”, это объем свободных средств необходимых для открытия одного лота. В МТ4 для его получения используется функция MarketInfo():

double MarginRequired=MarketInfo(Symbol(),MODE_MARGINREQUIRED);

В МТ5:

double MarginRequired=SymbolInfoDouble(SYMBOL_MARGIN_INITIAL);

Вычисляем сколько лотов можно открыть на имеющиеся средства и отсчитываем из него заданный процент:

double lot=Means/MarginRequired*risk/100;

Теперь параметр risk действительно соответствует его названия. Вопрос какой функцией пользоваться, это дело личного предпочтения. Первый вариант нагляден, понятен, очевиден. Величину параметра risk можно самостоятельно подкорректировать, но за то, глядя на параметры всегда знаешь с каким лотом произойдет открытие.

После вычисления лот необходимо нормализовать, более подробно об этом в статье Нормализация лота.