MarketInfo (Symbol(), MODE_MARGINREQUIRED) чем заменить в 5-ке? - страница 2

 
A100:

а разве скобки влияют на неявное приведение типов? - да, проверил - влияют

invalid volume пишет...
 
не фига я так формулу и не составил... Люди! Может кто поможет?. Нужна формула расчета лота пропорционального размеру баланса
 
papaklass:
Спасибо! А как сделать так, чтобы это работало? Я с пользовательскими функциями никогда не сталкивался... Только не отсылайте читать - читал и не понял... Лучше на практике...
 
Forex_Noob:
не фига я так формулу и не составил... Люди! Может кто поможет?. Нужна формула расчета лота пропорционального размеру баланса

sergeev ведь указал то, что нужно

OrderCalcMargin

Вычисляет размер маржи, 
необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении без учета текущих отложенных ордеров
 и открытых позиций. 
Позволяет оценить размер маржи для планируемой торговой операции. Значение возвращается в валюте счета.
 
notused:

sergeev ведь указал то, что нужно

OrderCalcMargin(

                   ORDER_TYPE_BUY,// тип ордера

                   _Symbol,// имя символа

                   1.0,// объем

                   SymbolInfoDouble(_Symbol,SYMBOL_ASK),// цена открытия

                   margin           // переменная для получения значения маржи

                   );

L= AccountInfoDouble(ACCOUNT_EQUITY); 

Lots= (L/margin) * (1/100.0); 

 

Ну и не получилось ничего. Пишет invalid volume

 
papaklass:

 Это рабочий код, я им пользуюсь. В функцию подставляете свои значения и все.

200 - количество пунктов до стоп-лосса. Можете поставить свое число.
Спасибо! Все заработало... надо параметры подобрать подходящие, а то слишком уж радикальный расчет... миллиардером можно за го стать... ну или нищим за день:)
 
В 4-ом нет такой функции. И когда по одной паре много поз, советник умирает. В логах ранее писал 

деление на 0 и ссылку на строку  

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

 double MinLot =MarketInfo(Symbol(),MODE_MINLOT);

 double MaxLot =MarketInfo(Symbol(),MODE_MAXLOT);

 double Step    =MarketInfo(Symbol(),MODE_LOTSTEP);

 double Lot     =MathFloor(Free*Risk/100/OneLot/Step)*Step; 

...суть что маржа возвращает 0. Отвязал бота от глупостей точно лот расчитывать,  т.к. что ни пробовал -  НЕ РАБОТАЕТ ЕСЛИ МНОГО ПОЗ! Переписал просто:

double Lot     =MathFloor(AccountEquity()/200000*Risk);

Лоты примерно те же, мне до фонаря что они не совсем точны! Однако советники на парах, где много позиций открыто, тупо висят! В логах никаких ошибок - типа иди кури)) 

Вопрос: почему самое элементарное не работает? Закрываю позы по паре где сова трупом висела - сволочь-оживает!