Информер маржинальных требований.

 

Добрый день.

Есть рублёвый счёт на МТ5. У каждой пары свой размер залога. Можно, конечно, выписать залог по разным парам на листик и посматривать туда, но с текущим курсом рубля этот листик придётся слишком часто перерисовывать. ))

Но наверняка уже кому-то подобное было нужно и есть подобный информер. Нужна только одна цифра - размер залога/маржи при открытии 1 лотом. Можно чтобы выводилось на экран комментом в верхнем левом углу.

Есть у кого-нибудь такое?

 
Dmitriy Voevodkin:

Добрый день.

Есть рублёвый счёт на МТ5. У каждой пары свой размер залога. Можно, конечно, выписать залог по разным парам на листик и посматривать туда, но с текущим курсом рубля этот листик придётся слишком часто перерисовывать. ))

Но наверняка уже кому-то подобное было нужно и есть подобный информер. Нужна только одна цифра - размер залога/маржи при открытии 1 лотом. Можно чтобы выводилось на экран комментом в верхнем левом углу.

Есть у кого-нибудь такое?

В рублях что-ли надо?

 
Dmitriy Voevodkin:

Добрый день.

Есть рублёвый счёт на МТ5. У каждой пары свой размер залога. Можно, конечно, выписать залог по разным парам на листик и посматривать туда, но с текущим курсом рубля этот листик придётся слишком часто перерисовывать. ))

Но наверняка уже кому-то подобное было нужно и есть подобный информер. Нужна только одна цифра - размер залога/маржи при открытии 1 лотом. Можно чтобы выводилось на экран комментом в верхнем левом углу.

Есть у кого-нибудь такое?

Странно функция для расчёта маржи на Мосбирже нормально работать не хочет.

Сделал два варианта, какой нибудь да окажется верным)))

#property  indicator_chart_window
#property indicator_plots 0
input double Volume = 1;
MqlTick tick;
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double& price[])
  {
   SymbolInfoTick(_Symbol, tick);
   if(tick.ask != 0 && tick.bid != 0)
      Comment("Volume = ", DoubleToString(Volume, 2),
              "\nMargin Buy = ", DoubleToString(IsOrderCalcMargin(ORDER_TYPE_BUY, tick.ask, Volume), 2),
              "\nMargin Buy = ", DoubleToString(IsOrderCalcMargin2(ORDER_TYPE_BUY, tick.ask, Volume), 2),
              "\nMargin Sell = ", DoubleToString(IsOrderCalcMargin(ORDER_TYPE_SELL, tick.bid, Volume), 2),
              "\nMargin Sell = ", DoubleToString(IsOrderCalcMargin2(ORDER_TYPE_SELL, tick.bid, Volume), 2));
   return rates_total;
  }
//+------------------------------------------------------------------+
double IsOrderCalcMargin(const ENUM_ORDER_TYPE type, const double price, const double volume)
  {
   double margin;
   if(!OrderCalcMargin(type, _Symbol, volume, price, margin))
      return 0;
   return(margin);
  }
//+------------------------------------------------------------------+
double IsOrderCalcMargin2(const ENUM_ORDER_TYPE type, const double price, const double volume)
  {
   double MarginInit, MarginMain;
   if(!SymbolInfoMarginRate(_Symbol, type, MarginInit, MarginMain))
      return 0;
   return(MarginInit * price * volume * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE) /
          (SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)));
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
Файлы:
Margin.mq5  5 kb