Скачать MetaTrader 5

mql4 - SeriesInfoInteger

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Oreshkin
5572
Alexey Oreshkin  

Проблемы с функцией SeriesInfoInteger в мт4. - Не могу получить данные с другого символа. Для демонстрации сделал индикатор который показывает проблему:

#property strict
#property indicator_chart_window

input    string   sm="";

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   string smb=sm;
   if (sm=="") smb=Symbol();
   long brs=0;
   ResetLastError();
   if (!SeriesInfoInteger(smb,Period(),SERIES_BARS_COUNT,brs)){Print("Ошибка: "+(string)GetLastError());}
   Comment("Доступно баров: "+(string)brs);
   return(rates_total);
  }

 Я хочу узнать сколько баров доступно по другому символу. Когда запускаю по текущему символу всё работает ,если же указываю в инпуте другой символ то получаю 0. Ошибки тоже при этом нет. Другой символ в обзоре рынка присутствует и история по нему есть. Подскажите где я что неправильно понимаю и в чём ошибка ?

Vladimir Karputov
Модератор
58900
Vladimir Karputov  
Alexey Oreshkin:

Проблемы с функцией SeriesInfoInteger в мт4. - Не могу получить данные с другого символа. Для демонстрации сделал индикатор который показывает проблему:

 Я хочу узнать сколько баров доступно по другому символу. Когда запускаю по текущему символу всё работает ,если же указываю в инпуте другой символ то получаю 0. Ошибки тоже при этом нет. Другой символ в обзоре рынка присутствует и история по нему есть. Подскажите где я что неправильно понимаю и в чём ошибка ?

А точно есть история и есть подготовленная история? (Организация доступа к данным)
Alexey Oreshkin
5572
Alexey Oreshkin  
Karputov Vladimir:
А точно есть история и есть подготовленная история? (Организация доступа к данным)
точно есть. Перешёл на iBars. там всё работает.
Vladimir Karputov
Модератор
58900
Vladimir Karputov  
Alexey Oreshkin:
точно есть. Перешёл на iBars. там всё работает.
Я не вижу в Вашем коде подтверждения наличия подготовленной истории.
Alexey Oreshkin
5572
Alexey Oreshkin  
Karputov Vladimir:
Я не вижу в Вашем коде подтверждения наличия подготовленной истории.

я говорю об мкл4 если что, а не про мкл5

И ещё, я не загружаю историю, а пытаюсь получить количество доступных баров по инструменту который есть в обзоре рынка, но по которому не открыт график. По этой паре приходят тики,это видно, но нет ни одной свечки ??? какая то фантастика. 

Vladimir Karputov
Модератор
58900
Vladimir Karputov  
Alexey Oreshkin:

я говорю об мкл4 если что, а не про мкл5

И ещё, я не загружаю историю, а пытаюсь получить количество доступных баров по инструменту который есть в обзоре рынка, но по которому не открыт график. По этой паре приходят тики,это видно, но нет ни одной свечки ??? какая то фантастика. 

Вы точно прочли: Организация доступа к данным? Не нравиться мт5 (или если не хочется открыть справку в MetaEditore) - вот ссылка на справку mql4: Организация доступа к данным
Организация доступа к данным - Документация на MQL4
  • docs.mql4.com
Организация доступа к данным - Документация на MQL4
Alexey Oreshkin
5572
Alexey Oreshkin  
Karputov Vladimir:
Вы точно прочли: Организация доступа к данным?
точно, и даже именно этим скриптом я и закачиваю историю при необходимости, но опять же на мкл5. На мкл4 попытка обратиться к бару большему чем хранится в переменной SeriesInfoInteger(Symbol(),Period(),SERIES_BARS_COUNT) сразу приводит к ошибке, и это не смотря на то, что на сервере данные ещё есть.
Vladimir Karputov
Модератор
58900
Vladimir Karputov  
Alexey Oreshkin:
точно, и даже именно этим скриптом я и закачиваю историю при необходимости, но опять же на мкл5. На мкл4 попытка обратиться к бару большему чем хранится в переменной SeriesInfoInteger(Symbol(),Period(),SERIES_BARS_COUNT) сразу приводит к ошибке, и это не смотря на то, что на сервере данные ещё есть.

На сервере и подготовленные данные в терминале - это две большие разницы. И вообще обращение к другому инструменту и другому таймфрейму целесообразно делать в советнике, а не через индикатор. В советнике скрипт из (Организация доступа к данным) сможет корректно отработать.

Alexey Oreshkin
5572
Alexey Oreshkin  
Karputov Vladimir:

На сервере и подготовленные данные в терминале - это две большие разницы. И вообще обращение к другому инструменту и другому таймфрейму целесообразно делать в советнике, а не через индикатор. В советнике скрипт из (Организация доступа к данным) сможет корректно отработать.

Хорошо. вот тот же код в советнике: 
#property strict

input    string   sm="";

void OnTick()
  {
   string smb=sm;
   string txt="";
   if (sm=="") smb=Symbol();
   long brs=0;
   ResetLastError();
   if (!SeriesInfoInteger(smb,Period(),SERIES_BARS_COUNT,brs)){Print("Ошибка: "+(string)GetLastError());}
   txt="Доступно баров: "+(string)brs;
   Comment(txt);
  }
Разницы никакой. При этом iBars нормально работает. Обращение итак идёт у меня из советника. 
Индикатор использовал только для проверки, чтобы удобнее было смотреть как меняются данные при смене смивола. чисто для удобства.
Alexey Oreshkin
5572
Alexey Oreshkin  

При чём вот такой код работает вообще без проблем, и при чём показывает количество свечей даже по тем инструментам которые отсутствуют в обзоре рынка.

#property strict

input    string   sm="";

void OnTick()
  {
   string smb=sm;
   string txt="";
   if (sm=="") smb=Symbol();
   int brs=0;
   brs=iBars(smb,Period());
   txt=txt+"\nДоступно баров: "+(string)brs;
   Comment(txt);
  }

 Вот я поэтому и хочу понять функцию SeriesInfoInteger. Что я не так понимаю что она у меня не работает

Vladimir Karputov
Модератор
58900
Vladimir Karputov  
Если Вы хотите получить данные с другого инструмента и другого таймфрейма, особенно в индикаторе, нужно сначала озаботиться подготовкой данных. Проверить есть ли данные. И только после этого рабоать с этими подготовленными данными. 
1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий