Скачать MetaTrader 5

Как определить максимально доступный объём позиции по фьючерсу РТС?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши программы на заказ. Зарабатывай с помощью сервиса Фриланс!
dj_nsk
38
dj_nsk 2014.03.18 21:15 

Добрый день!

Весь форум облазил, уже и самому смешно, но не могу ничего найти - помогите, пожалуйста.

В  советнике перед входом в позицию по фьючерсу РТС надо вычислить максимально доступный объём сделки (с учётом баланса по счёту и свойств самого фьючерса). Не верю, что нет какой-то простой функции, но найти не смог.

Использую так:  int(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)) - но это же как-то криво!

Mikhail Vdovin
1221
Mikhail Vdovin 2014.03.19 12:27  
С понятием "планка" знакомы ? Если нет, то рекомендую весьма, иначе приведёт она вас с таким вот расчётом к коляну. Он любит такие формулы )))
dj_nsk
38
dj_nsk 2014.03.19 15:46  
micle:
С понятием "планка" знакомы ? Если нет, то рекомендую весьма, иначе приведёт она вас с таким вот расчётом к коляну. Он любит такие формулы )))

Большое спасибо, Ваш ответ был очень полезен.

Возможно, другие участники знают альтернативные варианты решения?

Mikhail Vdovin
1221
Mikhail Vdovin 2014.03.19 16:11  
dj_nsk:

Большое спасибо, Ваш ответ был очень полезен.

Возможно, другие участники знают альтернативные варианты решения?

Ваше решение почему не устраивает?
Viktor Mossekhin
14275
Viktor Mossekhin 2014.03.19 21:06  

Так не пробовали?

double MaxLots(string symbol,ENUM_ORDER_TYPE action)
  {
   double FreeMargin,Margin1Lot,Lots=0,OpenPrice;
   if(action==ORDER_TYPE_BUY) OpenPrice=SymbolInfoDouble(symbol,SYMBOL_ASK);
   else                       OpenPrice=SymbolInfoDouble(symbol,SYMBOL_BID);
   //Текущий размер свободных средств
   FreeMargin=AccountInfoDouble(ACCOUNT_FREEMARGIN);
   //Размер средств для открытия 1 лота
   OrderCalcMargin(action,symbol,1.0,OpenPrice,Margin1Lot);
   
   if(Margin1Lot!=0) Lots=FreeMargin/Margin1Lot;
   return(Lots);
  }
dj_nsk
38
dj_nsk 2014.03.20 04:40  
vicmos:

Так не пробовали?

Спасибо, попробовал. Ещё и через методы класса CAccountInfo (например, MaxLotCheck()). Похоже на правду, но есть странность. Иногда (пока закономерность не понял) если робот, например, находится в лонге и надо развернуться на всю катушку в шорт - он выдаёт мне "not enough money". Ищу дальше...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий