Обсуждение статьи "Инструмент «Ценовая гистограмма» (Рыночный профиль) и его реализация на MQL5"

 

Опубликована статья Инструмент «Ценовая гистограмма» (Рыночный профиль) и его реализация на MQL5:

В данной статье я сделаю попытку дать общие понятия об упрощенной модели Рыночного профиля (Market Profile) – Ценовой Гистограмме (Price Histogram) и расскажу, как реализовал данный инструмент на MQL5.

 

Автор: Dmitry

 
Рынок наш учитель, мы его студетнты!
 

 Интересная статья и очень интересный и полезный инструмент. Как раз искал подобный индикатор на MQL.

Правда у меня к сожалению пока не заработал. Файл ClassPriceHistogram.mqh криво открывается. При компиляции в нём ошибки.

Пробовал исправить сам - не удалось, к mql5 только присматриваюсь.

 


 

 

Linker:

Интересная статья и очень интересный и полезный инструмент. Как раз искал подобный индикатор на MQL.

Правда у меня к сожалению пока не заработал. Файл ClassPriceHistogram.mqh криво открывается. При компиляции в нём ошибки.Пробовал исправить сам - не удалось, к mql5 только присматриваюсь. 

 

Исправлять ничего не нужно, проверьте наличие mqh файлов в каталоге ..\MQL5\Include\ChartObjects это библиотека стандартных классов.

И напоминаю все 4 файла должны находится в одном каталоге. 

 
vdv2001 писал(а)  :

 

Исправлять ничего не нужно, проверьте наличие mqh файлов в каталоге ..\MQL5\Include\ChartObjects это библиотека стандартных классов.

И напоминаю все 4 файла должны находится в одном каталоге. 

Всё заработало!

Собственно файлы и были на свои местах. Я код файлов копировал из окна Opera-10, при нажатии на ссылку они открывались в текстовом виде, открывались нормально все кроме ClassPriceHistogram.mqh - не знаю почему но это и неважно. При сохранении по ссылке всё открылось нормально.

Очень благодарен, попробую использовать на практике! 

 
vdv2001:

 

наличие mqh файлов в каталоге ..\MQL5\Include\ChartObjects это библиотека стандартных классов.

И напоминаю все 4 файла должны находится в одном каталоге. 

Замечательный советник! Был...

 Проблема появилась начиная с 251 билда. Теперь на новых билдах вообще не отражается, хотя в логе пишет, что загружен. 

Что-то может изменить нужно, перекинуть в другой каталог? 

 
gen5s:

Замечательный советник! Был...

 Проблема появилась начиная с 251 билда. Теперь на новых билдах вообще не отражается, хотя в логе пишет, что загружен. 

Что-то может изменить нужно, перекинуть в другой каталог? 

Спасибо что обратили внимание, действительно привнёс ошибку. Исправлено. Ждите обновления.

PS

В поиске max/min массивов присутствовала ошибка, после исправления вылез косяк в коде эксперта

в ClassPriceHistogram.mqh строках 188,189 и 205 нужно WHOLE_ARRAY исправить на 0

 
mql5:

Спасибо что обратили внимание, действительно привнёс ошибку. Исправлено. Ждите обновления.

PS

В поиске max/min массивов присутствовала ошибка, после исправления вылез косяк в коде эксперта

в ClassPriceHistogram.mqh строках 188,189 и 205 нужно WHOLE_ARRAY исправить на 0

Спасибо, что подсказали (WHOLE_ARRAY), а то уже замаялся ошибку искать.
 
vdv2001:
Спасибо, что подсказали (WHOLE_ARRAY), а то уже замаялся ошибку искать.
К сожалению, это не единственная ошибка в коде эксперт. Мы постараемся выловить и исправить исходник.
 

Заменил включаемый файл ClassPriceHistogramA.mqh:

  • уменьшил количество попыток скопировать ценовые данные AMOUNT_OF_ATTEMPTS=2;
  • добавил функцию PrintErrorOnCopyFunction() для вывода сообщений при неудачной попытке выполнить функцию CopyXXX()
    //+------------------------------------------------------------------+
    //|  выводит сообщение при неудачном копировании                     |
    //+------------------------------------------------------------------+
    void PrintErrorOnCopyFunction(string func_name,string symbol,ENUM_TIMEFRAMES tf,int err_code)
      {
       Print(func_name," Не удалось выполнить копирование ценовых данных, ошибка",err_code);
       Print("Самая первая дата по символу-периоду "+
             symbol+" "+TimeframeToString(tf)+
             " на данный момент = "+
             (datetime)SeriesInfoInteger(symbol,tf,SERIES_FIRSTDATE));
       Print("Самая первая дата в истории по символу на сервере =",
             (datetime)SeriesInfoInteger(symbol,tf,SERIES_SERVER_FIRSTDATE));
       Print("Данные по символу синхронизированы =",
             (bool)SeriesInfoInteger(symbol,tf,SERIES_SYNCRONIZED));
       int bars=Bars(symbol,tf);
       int max_bars_in_chart=TerminalInfoInteger(TERMINAL_MAXBARS);
       Print("Количество баров в истории по соответствующему символу периоду = ",bars,
             "   max_bars_in_chart =",max_bars_in_chart);
       datetime firstbar[];
       int copied=CopyTime(symbol,tf,bars-1,1,firstbar);
       if(copied<0)
         {
          Print("Первый доступный бар имеет время открытия",firstbar[0]);
          Comment("Возможно, необходимо увеличить значение 'Максимальное кол-во баров на чарте'");
         }
       else Print("Не удалось получить открытия время самого старого доступного бара");
       ResetLastError();
      }
Более правильно было бы проверять наличие доступной истории перед операциями CopyXXX(), анализировать количество баров на чарте с помощью
TerminalInfoInteger(TERMINAL_MAXBARS);
и делать попытку подкачать данные (если это имеет смысл) как в примере Организация доступа к данным



 

Теперь все работает. Пожалуйста скачайте обновленные файлы.

Добавлена документация к исходным кодам, приведенным в статье: Market_Profile_Help.rar


Документация создана при помощи программы Doxygen.

Подробности в статье Автоматическое создание документации к программам на MQL5.

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