У кого-нибудь работает этот пример из хелпа?

 
#property description "Советник демонстрирует создание серии скриншотов текущего графика" 
#property description "с помощью функции ChartScreenShot(). Имя файла для удобства также" 
#property description "выводится на график. Высота и ширина рисунков задается макросами." 
  
#define        WIDTH  800     // ширина рисунка для вызова  ChartScreenShot() 
#define        HEIGHT 600     // высота рисунка для вызова  ChartScreenShot() 
  
//--- input parameters 
input int      pictures=5;    // количество рисунков в серии 
int            mode=-1;       // -1 означает смещение к правому краю графика, 1 - к левому 
int            bars_shift=300;// количество баров при прокрутке графика функцией ChartNavigate() 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
void OnInit() 
  { 
//--- отключим автопрокрутку графика 
   ChartSetInteger(0,CHART_AUTOSCROLL,false); 
//--- установим отступ правого края графика 
   ChartSetInteger(0,CHART_SHIFT,true); 
//--- установим отображение графика в виде свечей 
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES); 
//--- 
   Print("Подготовка советника к работе завершена"); 
  } 
//+------------------------------------------------------------------+ 
//| Expert tick function                                             | 
//+------------------------------------------------------------------+ 
void OnTick() 
  { 
//--- 
  
  } 
//+------------------------------------------------------------------+ 
//| ChartEvent function                                              | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, 
                  const long &lparam, 
                  const double &dparam, 
                  const string &sparam) 
  { 
//--- вывод имени функции, времени вызова и идентификатора события 
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode); 
//--- обработка события CHARTEVENT_CLICK ("Нажатие кнопки мышки на графике") 
   if(id==CHARTEVENT_CLICK) 
     { 
      //--- начальное смещение от края графика 
      int pos=0; 
      //--- режим работы с левым краем графика 
      if(mode>0) 
        { 
         //--- прокрутим график к левому краю 
         ChartNavigate(0,CHART_BEGIN,pos); 
         for(int i=0;i<pictures;i++) 
           { 
            //--- подготовим подпись на графике и имя для файла 
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif"; 
            //--- вывод имени на график в виде комментария 
            Comment(name); 
            //--- сохраним скриншот графика в папку каталог_терминала\MQL4\Files\ 
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT)) 
               Print("Сохранили скриншот ",name); 
            //--- 
            pos+=bars_shift; 
            //--- дадим пользователю время чтобы посмотреть на новый участок графика 
            Sleep(3000); 
            //--- прокрутим график от текущей позиции на bars_shift вправо 
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift); 
           } 
         //--- смена режима на противоположный 
         mode*=-1; 
        } 
      else // режим работы с правым краем графика 
        { 
         //--- прокрутим график к правому краю 
         ChartNavigate(0,CHART_END,pos); 
         for(int i=0;i<pictures;i++) 
           { 
            //--- подготовим подпись на графике и имя для файла 
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif"; 
            //--- вывод имени на график в виде комментария 
            Comment(name); 
            //--- сохраним скриншот графика в папку каталог_терминала\MQL4\Files\ 
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT)) 
               Print("Сохранили скриншот ",name); 
            //--- 
            pos+=bars_shift; 
            //--- дадим пользователю время чтобы посмотреть на новый участок графика 
            Sleep(3000); 
            //--- прокрутим график от текущей позиции на bars_shift вправо 
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift); 
           } 
         //--- смена режима на противоположный 
         mode*=-1; 
        } 
     }  // конец обработки события CHARTEVENT_CLICK 
//--- конец обработчика OnChartEvent()    
  }

У меня все скриншоты получаются одинаковыми, без прокрутки.

А у вас?

 
Evgeny Potapov:

У меня все скриншоты получаются одинаковыми, без прокрутки.

А у вас?

чё-то, сохранило! - а для чего это? что с этим можно придумать? 

----------------------------

- если каждую картинку по порядку открывать, цена движется - (Вы это имели виду ?)

Файлы:
4vq3ed.PNG  107 kb
 
SanAlex:

чё-то, сохранило! - а для чего это? что с этим можно придумать? 

У меня сохраняет тоже, но все скриншоты одинаковые, без прокрутки.

Я хочу сохранять скриншоты графиков после разных событий на разных таймфреймах

У вас разные скриншоты?

 
Evgeny Potapov:

У меня сохраняет тоже, но все скриншоты одинаковые, без прокрутки.

Я хочу сохранять скриншоты графиков после разных событий на разных таймфреймах

У вас разные скриншоты?

они разные - если всматриваться в цену. А так они, как бы одинаковые 

 
SanAlex:

они разные - если всматриваться в цену. А так они, как бы одинаковые 

Да, одинаковые!

Как у меня.

То есть функция 

ChartNavigate()

не работает так, как описано в инструкции, и не работает так, как хотели показать разработчики.

Хорошо бы кто-то из разработчиков МТ4 откликнулся в этой теме!

Возможно, тогда бы решение быстрей удалось найти.

 
Evgeny Potapov:

Да, одинаковые!

Как у меня.

То есть функция 

не работает так, как описано в инструкции, и не работает так, как хотели показать разработчики.

Хорошо бы кто-то из разработчиков МТ4 откликнулся в этой теме!

Возможно, тогда бы решение быстрей удалось найти.

Этот Ваш код и в мт5 работает - ( я экспериментировал в мт5  )

 
SanAlex:

Этот Ваш код и в мт5 работает - ( я экспериментировал в мт5  )

Это не мой код, этот код я копи-пастил из мануала.

То есть сами разработчики предлагают нам нерабочий код.

Неужели сами не тестировали?

 
Evgeny Potapov:

Это не мой код, этот код я копи-пастил из мануала.

То есть сами разработчики предлагают нам нерабочий код.

Неужели сами не тестировали?

Кнопку автопрокрутки нужно отключить руками или программно. В хелпе подразумевается, что она отключена.

 
Ihor Herasko:

Кнопку автопрокрутки нужно отключить руками или программно. В хелпе подразумевается, что она отключена.

Она отключена.

Включена кнопка отступа. Это имеет значение?

 
Ihor Herasko:

В хелпе подразумевается, что она отключена.

Ещё можно получить скриншоты функцией WindowScreenShot(), но она даёт неизвестно какой формат файла, явно меньший, чем ChartScreenShot(), то есть не BMP.

Вы знаете какой это на самом деле формат файла? В хелпе не написано.

 
Evgeny Potapov:

Она отключена.

Включена кнопка отступа. Это имеет значение?

Не имеет значения. Но вижу, что скриншоты, действительно, сохраняются не те, что видно на графике. Тут дело не в ChartNavigate (ведь видно, что график перемещается), а в самой функции ChartScreenShot. Не могу сказать, в чем там дело, никогда не использовал ее.

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