Кредитное плечо в мт4 - страница 3

 
Andrey Khatimlianskii:

AccountLaverage - это не из МаркетИнфо, а я просил конкретно результаты функции.

Там, возможно, будет ответ:

MODE_MARGINCALCMODE

28

Способ расчета залоговых средств. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD на индексы

MODE_MARGININIT

29

Начальные залоговые требования для 1 лота

MODE_MARGINMAINTENANCE

30

Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот

MODE_MARGINHEDGED

31

Маржа, взимаемая с перекрытых ордеров в расчете на 1 лот

MODE_MARGINREQUIRED

32

Размер свободных средств, необходимых для открытия 1 лота на покупку

 

Приведите результаты для 2-х инструментов (EURUSD и USDCHF или другой проблемный инструмент). 

ну да, описался, тем не менее AccountLaverage не верный. Сейчас скрин сделаю

 
https://www.mql5.com/ru/charts/3562400/usdchf-h1-gkfx
https://www.mql5.com/ru/charts/3562404/eurusd-h1-gkfx
 
на скринах видно вся инфа и открыто по одному ордеру. Снизу виден взятый залог, сверху плечо. А то на данный момент мы занимаемся не решением проблемы, а попыткой доказать что я не понимаю что такое AccountLaverage, маркетифно и т.д.
 

я практически решил вопрос составив вот такую формулу (только для метода расчёта форекс):

NormalizeDouble(MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bid/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MathPow(10,5-dg),0)

Смысл здесь следующий:
MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bid - Взяли весь контракт по текущей цене и перевели цену в валюту депозита

/MarketInfo(Symbol(),MODE_MARGINREQUIRED) - разделили на необходимую маржу, узнав таким образом плечо 

/MathPow(10,5-dg),0) - делим на 10 в соответствующей степени, для корректной работы с любым знаком.

Для CFD по идее тоже должно работать но  MarketInfo(Symbol(),MODE_TICKVALUE) надо заменить на стоимость пункта.

Но, теперь возникла другая проблема - у брокеров у которых размер контракт по валюте не 100000 а 150000, плечо эта формула считает 150. (

 
Alexey Oreshkin:
на скринах видно вся инфа и открыто по одному ордеру. Снизу виден взятый залог, сверху плечо. А то на данный момент мы занимаемся не решением проблемы, а попыткой доказать что я не понимаю что такое AccountLaverage, маркетифно и т.д.

Ну так все правильно - по франку MARGINREQUIRED = 10 000, это и указывает на плечо 1:10.

Скомбинируйте его с LOTSIZE и текущей ценой, и будет вам счастье ) 

 
Andrey Khatimlianskii:

Ну так все правильно - по франку MARGINREQUIRED = 10 000, это и указывает на плечо 1:10.

Скомбинируйте его с LOTSIZE и текущей ценой, и будет вам счастье ) 

Я то понимаю что раз маржа 10000 то плечо 10, а не 100 как указано в AccountLaverage, Вот именно это я пытаюсь спросить уже третий день - как рассчтитать плечо самому.

LOTSIZE не подходит для брокеров у которых контракт не 100000. 

 

Вот, кажется нашёл решение, очень простая формула получилась. Узнаём плечо по каждому инструменту, в не зависимости от того что написано в AccountLaverage и не зависимо от размера контракта. Работает для метода расчёта форекс:
MarketInfo(Symbol(),MODE_TICKVALUE)*Bid/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_POINT)

Вопрос закрыт. Всем спасибо. 

ps. Вспомнил один нюанс - есть брокер у которого торгуется золото и серебро, но методы расчёта там не CFD, а форекс. Кто бы напомнил что за брокер буду рад, а то сам непомню и найти не получается. 

 
Alexey Oreshkin:

Я то понимаю что раз маржа 10000 то плечо 10, а не 100 как указано в AccountLaverage, Вот именно это я пытаюсь спросить уже третий день - как рассчтитать плечо самому.

LOTSIZE не подходит для брокеров у которых контракт не 100000. 

И что, при ЛотСайз 150 000 MARGINREQUIRED = 1 000? Должно быть 1 500, по идее.

В любом случае, на первоначальный вопрос ответ найден.

 
Andrey Khatimlianskii:

И что, при ЛотСайз 150 000 MARGINREQUIRED = 1 000? Должно быть 1 500, по идее.

В любом случае, на первоначальный вопрос ответ найден.

Всё верно, при лотсайз 150000 маржа 1500. Но если строит формулу через лотсайз то придётся определять прямая это или обратная котировка и т.д., Вообщем такой подход возможен но мне показалось что он более требователен к расчётам и ресурсам.
 

Вот и я уже который месяц ломаю голову с расчетом залоговых средств...

AccountFreeMarginCheck   с багами, в индикаторах не работает, в сервис деск отписался....


Может кто знает универсальныю формулу расчета ?

 
Vladimir Pastushak:

Вот и я уже который месяц ломаю голову с расчетом залоговых средств...

AccountFreeMarginCheck   с багами, в индикаторах не работает, в сервис деск отписался....


Может кто знает универсальныю формулу расчета ?

Вот так можно проверить останутся ли средства на счете если открыть позицию заданным лотом.

bool LotCheck(double lot, string Smb)
{
   double OneLotPrice=MarketInfo(Smb,MODE_MARGINREQUIRED);
   double Free   =AccountFreeMargin();
   
   if (lot*OneLotPrice < Free)
   { 
       if(lot>=MarketInfo(Smb,MODE_MINLOT) && lot<MarketInfo(Smb,MODE_MAXLOT))
       {
         
         return(true);
       }  
   }else 
   {
         Print("Not enough money : ",Free);
         return(false);
   }   
   return(false);
}