Попытался разобрать код примера советника Moving Average. Не понял что за margin. - страница 2

 

Но что тут делает margin?

По идее расчёт идёт так:

lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/margin;

А в примере так:

lot=AccountInfoDouble(ACCOUNT_BALANCE)/price;

С++ я знаю достаточно хорошо, а экономику не очень. 

 

Вообще-то в примере так:

   double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
 

NormalizeDoubleЭто округление double (в данном случае до 2 знаков после запятой).

А MaximumRisk это процент от всего счёта которым максимально рискует советник на 1 сделке.

Убрав их и получается

lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/margin;

Но можно и так сравнивать:

double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_BALANCE)*MaximumRisk/price,2);

Почему же в примере используется margin?

 
samrrr:

***

Почему же в примере используется margin?

Маржа:

Начальная маржа — гарантийная сумма (маржа), вносимая по срочному контракту для совершения сделки объемом один лот. Если для символа указано значение первоначальной маржи, то используется именно это значение.


Именно поэтому рассчитывается МАРЖА, а затем, когда МАРЖА рассчитана, можно вычислять риски.

Причина обращения: