Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1387

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>

CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                    // account info object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   m_symbol.Name(Symbol());
   
   const string this_symbol = m_symbol.Name();
   //ENUM_ORDER_TYPE order_type = ORDER_TYPE_BUY;
   double order_volume =  0;
   double order_price = 0;
   double Price_Min_Lot = 0;
   
   
   order_volume = 1;
   order_price = m_symbol.Ask();
   Price_Min_Lot = m_account.MarginCheck(this_symbol, ORDER_TYPE_BUY, order_volume, order_price);
   Print("Требуемая маржа =", Price_Min_Lot);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   
  }
//+---------------------------------------------------------------

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.



-IMXO- #:

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.

В целом, когда принтуете double значения, то используйте:

Print( DoubleToString(Price_Min_Lot,2) );
Vitaly Muzichenko #:

В целом, когда принтуете double значения, то используйте:

Не поможет. Сама функция корявая. А с использованием СБ корявая вдвойне.

Да ещё и выполняется в OnInit(), когда ничего ещё не подгружено.
-IMXO- #:

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.



Когда что-то проверяете в нерабочее время, проверяйте в скрипте.

У меня следующий вопрос.

Есть объект - кнопка (OBJ_BUTTON). Но работает она почему-то странным образом - в нажатое состояние переходит при отпускании кнопки мышки (Click Up), и в отжатое состояние переходит также при отпускании кнопки мышки (Click Up).

Можно ли сделать как-нибудь так, чтобы кнопка переходила в нажатое состояние при нажатии кнопки мышки (Click Down), и в отжатое состояние при отпускании кнопки мышки? Как впрочем обычно кнопки и работают.

MQL_User #:

У меня следующий вопрос.

Есть объект - кнопка (OBJ_BUTTON). Но работает она почему-то странным образом - в нажатое состояние переходит при отпускании кнопки мышки (Click Up), и в отжатое состояние переходит также при отпускании кнопки мышки (Click Up).

Можно ли сделать как-нибудь так, чтобы кнопка переходила в нажатое состояние при нажатии кнопки мышки (Click Down), и в отжатое состояние при отпускании кнопки мышки? Как впрочем обычно кнопки и работают.

Вам вопрос путанный. Смотрите как работаю кнопки в примере, который поставляется с терминалом:  MQL5\Experts\Examples\Controls\Controls.mq5


Добрый день всем.

Терминал MT5 вдруг начал выдавать Alert с большим числом знаков после запятой. Как в операторе Print.

Не подскажете в чем причина?

Alexey Viktorov #:

Когда что-то проверяете в нерабочее время, проверяйте в скрипте.

Благодарю, но в скрипте то- же самое. Пробовал уже по всякому, перед тем, как вопрос задать, результат один.

#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>

CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                    // account info object

//string s_n;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

void OnStart()

  {

   m_symbol.Name(Symbol());
   
   const string this_symbol = m_symbol.Name();
   //ENUM_ORDER_TYPE order_type = ORDER_TYPE_BUY;
   double order_volume =  0;
   double order_price = 0;
   double Price_Min_Lot = 0;
   
   
   order_volume = 1;
   order_price = m_symbol.Ask();
   Price_Min_Lot = m_account.MarginCheck(this_symbol, ORDER_TYPE_BUY, order_volume, order_price);
   Print("Требуемая маржа =", Price_Min_Lot);
     
  }
//+------------------------------------------------------------------+

Выводит: " Требуемая маржа =1.797693134862316e+308" . Можно ли как- то ещё получить маржу?

-IMXO- #:

Благодарю, но в скрипте то- же самое. Пробовал уже по всякому, перед тем, как вопрос задать, результат один.

Выводит: " Требуемая маржа =1.797693134862316e+308" . Можно ли как- то ещё получить маржу?

Вы вообще другую информацию получаете по символу? Проверяли?

-IMXO- #:

Благодарю, но в скрипте то- же самое. Пробовал уже по всякому, перед тем, как вопрос задать, результат один.

Выводит: " Требуемая маржа =1.797693134862316e+308" . Можно ли как- то ещё получить маржу?

На всякий случай - у вас этот символ подключен в "MarketWatch"? Если нет - по символу отдаётся очень ограниченная информация.