Индикаторы: Тиковый график

 

Тиковый график:

Представленный индикатор строит полностью функциональный тиковый график, аналогичный стандартным ценовым графикам, с возможностью анализа всеми средствами MetaTrader.

Тиковый график со стандартными индикаторами

Автор: Dmitriy Gizlyk

 

Добрый день!

при работе индикатора в журнале появляются сообщения об ошибках:

 

,а при перезапуске терминала  открывается второй Offline график.

Не подскажите как с этим бороться?

 
Sergei75:

Добрый день!

при работе индикатора в журнале появляются сообщения об ошибках:

 

,а при перезапуске терминала  открывается второй Offline график.

Не подскажите как с этим бороться?

Добрый день,

Спасибо за комментарий.

В приложенной ниже версии решен вопрос с открытием повторного графика.
По поводу HistoryBase ошибок, мне надо проработать и я обязательно отвечу позже.
С уважением,
Дмитрий.

Файлы:
SaveTicks.ex4  14 kb
SaveTicks.mq4  6 kb
 
Dmitriy Gizlyk:

По поводу HistoryBase ошибок, мне надо проработать и я обязательно отвечу позже.

Сразу скажу - неправильно создается автономный график, т. к. имеются повторные бары по времени. МТ4 этого не любит, хотя в тестере такое легко проходит.
 
Ihor Herasko:
Сразу скажу - неправильно создается автономный график, т. к. имеются повторные бары по времени. МТ4 этого не любит, хотя в тестере такое легко проходит.
Я это понимаю и допускаю, так как часто бывает более 1 тика в секунду. А время в МТ4 задается с точностью до секунды.
 
Dmitriy Gizlyk:

В приложенной ниже версии решен вопрос с открытием повторного графика.

Странно, посмотрел новую выложенную вами версию, проблема с открытием нового графика при перезапуске терминала как была так и осталась, посмотрел код в шапке и код выложенный потом-они идентичны.

такое ощущение что вы залили не исправленный код а старый. 

 
Sergei75:

Странно, посмотрел новую выложенную вами версию, проблема с открытием нового графика при перезапуске терминала как была так и осталась, посмотрел код в шапке и код выложенный потом-они идентичны.

такое ощущение что вы залили не исправленный код а старый. 

Новая версия во вложении сообщения. В CodeBase  я залил новую версию, но она сейчас на проверке.
В новой версии я добавил в процедуру OnInit блок проверки открытого графика, и новый открывается только если такой график не найде

//--- Open new chart with 
   hwnd=WindowHandle(_Symbol,999);
   if(hwnd==0)
     {
      chart=ChartOpen(_Symbol,999);
      if(chart<=0)
         return INIT_FAILED;
   //--- deleting all indicators from new chart (if its was opened by default template)
   //--- if you want use default template just delete this block
      for(int w=(int)ChartGetInteger(chart,CHART_WINDOWS_TOTAL)-1; w>=0; w--)
         for(int i=ChartIndicatorsTotal(chart,w)-1; i>=0; i--)
           {
            ResetLastError();
            string indy_name=ChartIndicatorName(chart,w,i);
            if(ChartIndicatorDelete(chart,w,indy_name))
               Print("Error to delete indicator "+indy_name+" "+(string)GetLastError());
           }
   //--- save handle of new chart window
      hwnd=WindowHandle(_Symbol,999);
     }
   else
     {
      chart=ChartFirst();
      while(chart>=0)
        {
         if(hwnd==ChartGetInteger(chart,CHART_WINDOW_HANDLE))
           {
            break;
           }
         else
           {
            chart=ChartNext(chart);
           }
        }
     }
 
Dmitriy Gizlyk:
Я это понимаю и допускаю, так как часто бывает более 1 тика в секунду. А время в МТ4 задается с точностью до секунды.
Речь идет не точности времени, а о дискретности таймфреймов. В МТ4 минимальный таймфрейм - 1 минута. Поэтому нельзя создавать два и более баров с одинаковым временем открытия с точностью до минут.
 
Dmitriy Gizlyk:

Новая версия во вложении сообщения. В CodeBase  я залил новую версию, но она сейчас на проверке.
В новой версии я добавил в процедуру OnInit блок проверки открытого графика, и новый открывается только если такой график не найде

Я и проверял версию из вложения вашего сообщения.

вот индикатор устанавливается на график:

 

вот результат: открыт offline график

 

теперь делаем перезапуск терминала(выключаем и снова включаем) : открыто 2  offline графика:

 

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

 
Sergei75:

Я и проверял версию из вложения вашего сообщения.

вот индикатор устанавливается на график:

 

вот результат: открыт offline график

 

теперь делаем перезапуск терминала(выключаем и снова включаем) : открыто 2  offline графика:

 

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

Помогло перенос открытия графика из OnInit()  в OnCalculate(....)
Файлы:
SaveTicks.mq4  6 kb
SaveTicks.ex4  10 kb
 

Можно ли сделать так чтобы он рисовал свечки с заданным количеством тиков в каждой либо 10 или 50 сколько задашь?