Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2176

 
Tretyakov Rostyslav #:

Как вариант попробуй

спасибо, попробую так. 

 
Tretyakov Rostyslav #:
Благодарю.
 
Подскажите, пожалуйста, как обновить котировки на mql5? Это секретное знание раньше на mql4 было доступным одной строчкой  RefreshRates(). Сейчас какие-то танцы с бубнами
 
Ivan Butko #:
Подскажите, пожалуйста, как обновить котировки на mql5? Это секретное знание раньше на mql4 было доступным одной строчкой  RefreshRates(). Сейчас какие-то танцы с бубнами

Почти в любом коде https://www.mql5.com/ru/users/barabashkakvn

есть эта функция, смотрите куда она ведет

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: ","RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: ","Ask == 0.0 OR Bid == 0.0");
      return(false);
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates(void)
  {
   return(SymbolInfoTick(m_name,m_tick));
  }
и далее class CSymbolInfo : public CObject


Vladimir Karputov
Vladimir Karputov
  • 2023.04.10
  • www.mql5.com
Профиль трейдера
 
lynxntech #:

Почти в любом коде https://www.mql5.com/ru/users/barabashkakvn

есть эта функция, смотрите куда она ведет

и далее class CSymbolInfo : public CObject


К сожалению, я пока в ООП не понимаю. Достаточно ли будет перенести такой код (блок этот) и у себя вызывать? 

 
Ivan Butko #:

К сожалению, я пока в ООП не понимаю. Достаточно ли будет перенести такой код (блок этот) и у себя вызывать? 

#include <Trade\SymbolInfo.mqh>

CSymbolInfo    m_symbol;                     // object of CSymbolInfo class

сама функция

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: ","RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: ","Ask == 0.0 OR Bid == 0.0");
      return(false);
     }
//---
   return(true);
  }

вызов функции

   RefreshRates();
 
Ivan Butko #:

К сожалению, я пока в ООП не понимаю. Достаточно ли будет перенести такой код (блок этот) и у себя вызывать? 

Не надо учиться у ………

Посмотрите код этой функции

//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates(void)
  {
   return(SymbolInfoTick(m_name,m_tick));
  }

Получается, вы вызываете метод ООП, а оттуда вызывается штатная функция SymbolInfoTick()

Я не понимаю зачем эти танцы с бубном, когда можно напрямую вызвать функцию SymbolInfoTick()…

Плюс ко всему в структуру получите свежие цены и как такового  RefreshRates() не будет надо.

 
Alexey Viktorov #:

Не надо учиться у ………

Посмотрите код этой функции

че это не надо, тут даже на 0 сразу проверка идет, Вы сами то не дружите с ООП, я это прекрасно помню.

для кого разработчики подготовили все эти классы?

гораздо проще использовать встроенные классы, это еще и ведет к унификации,

здесь есть много специалистов которые нагородили своих кодов в статьях, сходи попробуй разберись в них

 
lynxntech #:

че это не надо, тут даже на 0 сразу проверка идет, Вы сами то не дружите с ООП, я это прекрасно помню.

для кого разработчики подготовили все эти классы?

Я к сожалению не дописав нажал по ошибке Ctrl+Enter и сообщение вставилось недописанным.

Не надо учиться у ……… относится и к вам. Не учитесь на кодах барабашки. Большинство его кодов работают с ошибками.

 
Alexey Viktorov #:

Я к сожалению не дописав нажал по ошибке Ctrl+Enter и сообщение вставилось недописанным.

Не надо учиться у ……… относится и к вам. Не учитесь на кодах барабашки. Большинство его кодов работают с ошибками.

без проверки на 0

можно использовать всего лишь 

вызов функции разработчиков
m_symbol.RefreshRates()


ведет она сюда
//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates(void)
  {
   return(SymbolInfoTick(m_name,m_tick));
  }

итого 3 строки

Include и подключение класса которые могут и далее пригодиться по коду, не только обновление котировок

Причина обращения: