Как обновить котировки в МТ5?

 

Пожалуйста, подскажите как обновить котировки в МТ5?  В МТ4 было RefreshRates().

В документации МТ5 тоже есть RefreshRates(), но  в примечании написано: 

"Символ должен быть предварительно выбран методом Name."

Пробовал по всякому. В компиляторе ошибка: "'RefreshRates' - undeclared identifier"

Покажите как. Лучше по проще.

 
GUGA1:

Пожалуйста, подскажите как обновить котировки в МТ5?  В МТ4 было RefreshRates().

В документации МТ5 тоже есть RefreshRates(), но  в примечании написано: 

"Символ должен быть предварительно выбран методом Name."

Пробовал по всякому. В компиляторе ошибка: "'RefreshRates' - undeclared identifier"

Покажите как. Лучше по проще.

Требуемая функция находится в .....MQL5\Include\Trade\SymbolInfo.mqh

Просто добавьте в начало программы строку:

#include <Trade\SymbolInfo.mqh>

 
GUGA1:

Пожалуйста, подскажите как обновить котировки в МТ5?  В МТ4 было RefreshRates().

В документации МТ5 тоже есть RefreshRates(), но  в примечании написано: 

"Символ должен быть предварительно выбран методом Name."

Пробовал по всякому. В компиляторе ошибка: "'RefreshRates' - undeclared identifier"

Покажите как. Лучше по проще.

В MQL5 котировки обновляются получением последних данных. В документации полноценный пример имеется.

Не надо подключать никакие библиотеки. Только запутаетесь. А в библиотеке

//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates(void)
  {
   return(SymbolInfoTick(m_name,m_tick));
  }
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
  • www.mql5.com
Возвращает текущие цены  для указанного символа в переменной типа MqlTick. Параметры symbol [in]  Имя символа. tick [out]  Ссылка на...
 
Alexey Viktorov #:

В MQL5 котировки обновляются получением последних данных. В документации полноценный пример имеется.

Не надо подключать никакие библиотеки. Только запутаетесь. А в библиотеке

Добрый день, Алексей. Что-то Вы опять стараетесь запутать. Приведите пример использования RefreshRates() без подключения библиотеки. Вы мое предложение отвергли, а где Ваше более простое?
 
Konstantin Erin #:
Добрый день, Алексей. Что-то Вы опять стараетесь запутать. Приведите пример использования RefreshRates() без подключения библиотеки. Вы мое предложение отвергли, а где Ваше более простое?

Какое может быть другое предложение если есть ссылка на документацию и пример из СБ?

Это вы предлагаете запутаться в библиотеке вместо непосредственного получения результата.

Что возвращает метод RefreshRates из библиотеки??? True или false. И чтобы получить цену надо опять обращаться к библиотеке. Но ведь гораздо проще объявив структуру

//--- объявим массив с типом структуры MqlTick
   MqlTick tick[];


и написав всего одну строку

SymbolInfoTick(_Symbol, tick);

дальше получить любое поле структуры.

struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };
 
Alexey Viktorov #:

Какое может быть другое предложение если есть ссылка на документацию и пример из СД?

Это вы предлагаете запутаться в библиотеке вместо непосредственного получения результата.

Что возвращает метод RefreshRates из библиотеки??? True или false. И чтобы получить цену надо опять обращаться к библиотеке. Но ведь гораздо проще объявив структуру


и написав всего одну строку

дальше получить любое поле структуры.

Алексей! Вы опять увлеклись. Автор ветки спрашивает лишь, как обновить котировки. И сообщает, что на функцию RefreshRates() транслятор ругается. Строка #include решает проблемы. Всего одна строка, а Вы написали более десятка...
 
Konstantin Erin #:
Алексей! Вы опять увлеклись. Автор ветки спрашивает лишь, как обновить котировки. И сообщает, что на функцию RefreshRates() транслятор ругается. Строка #include решает проблемы. Всего одна строка, а Вы написали более десятка...

Константин, где вы видите более десятка строк? Читайте документацию.

Проблема не в функции RefreshRates(). Проблема в получении свежих цен по инструменту. Вы хотите сказать «какой вопрос, такой и ответ» то да, вы правы. Только вспомните mql4 и скажите как мы получали последние цены по инструменту??? Просто из предопределённых переменных Ask и Bid (если я совсем не забыл mql4) может не совсем правильно написал. Но эти предопределённые переменные получали новые значения после RefreshRates(), а в mql5 просто надо получить свежие цены и всё… Никаких обновлений котировок… Потому и вписали в СБ метод RefreshRates() для особо одарённых, которые не в состоянии понять что как работает, им надо RefreshRates() и всё… Достань и положь.


И вот ещё что: Строка #include не решает проблему. Автор ветки вряд-ли понимает, что привязка к СБ влечёт за собой не только отсутствие ошибки при применении метода RefreshRates(), но и дальнейшую зависимость от этой СБ.

 
зачем городить структуру, если по факту почти все используют Trade для отправки ордеров, и она сама все делает
 
lynxntech #:
зачем городить структуру, если по факту почти все используют Trade для отправки ордеров, и она сама все делает

Её городить не надо, достаточно объявить. И ключевое слово «почти». Я тоже использовал СБ когда писал на заказ, но все проверки предпочитаю делать напрямую функциями MQL5.