ChartNavigate при инициализации - страница 3

 
Dina Paches:

Отчего же? Я написала/привела чушь?

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

Тестовый код запускается максимум на минуту - две, компьютеры у нас мощные - поэтому нагрузки плёвая.

 
Vladimir Karputov:

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

Тестовый код запускается максимум на минуту - две, компьютеры у нас мощные - поэтому нагрузки плёвая.

Тестовые коды могут запускаться часто. /*Сейчас минуту тут, потом минуту там, потом час в другом месте и т.д. ...*/

Я в этом посте приводила ссылку на слова Рената. У него, полагаю, компы помощнее ваших.

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

 
P./S.: Во входных параметрах у вас есть возможность отключить/включить только перерисовку графика через ChartRedraw(). Однако внутри тестовых кодов у вас на каждом тике перерисовка графика через Comment
 
Dina Paches:

Тестовые коды могут запускаться часто. /*Сейчас минуту тут, потом минуту там, потом час в другом месте и т.д. ...*/

Я в этом посте приводила ссылку на слова Рената. У него, полагаю, компы помощнее ваших.

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

Насчет перерисовки Вы правильно говорите. Просто не к месту это сейчас ))

 
Ihor Herasko:

Насчет перерисовки Вы правильно говорите. Просто не к месту это сейчас ))

Эмм... Не к месту перерисовка на каждом тике. Не к месту стремления убедить, что это не стоит внимания.

А не сказанное об этом.

Но сейчас, за счёт ваших с Владимиром стремлений убедить, что это не к месту и  не стоит внимания, акценты действительно сместились в сторону от темы)

 

Build 1865.

Внёс изменение в индикатор:

   if(count%12==0/* || count==19*/)

то, есть каждый 12-й тик принудительно передвигаем график. Для чего это нужно:

  1. Между 12-ти тиками можно вручную сдвинуть график и увидеть номер первого видимого бара
  2. Визуальное отслеживание перемещения.


Пока наметилась теория: сдвиг графика зависит ОТ МАСШТАБА ГРАФИКА!

Файлы:
 

Индикатор версия 1.002:

убрал все Comment (теперь вывод через Print)

по-умолчанию

//--- input parameters
input bool redraw=false;
input ENUM_CHART_POSITION position=CHART_END;

Явная зависимость от масштаба графика. Причём какая-то память есть, если успеть сдвинуть график вручную один раз.

Файлы:
 
Ihor Herasko:

Наткнулся на проблему при работе функции ChartNavigate. Что-то неправильно делаю или действительно есть проблема в работе функции. Отпишитесь, кто использовал достаточно часто.

Итак, суть проблемы: ChartNavigate не смещает график при старте терминала, если вызывать функцию в OnInit(). Специально несколько раз прочитал документацию. Нигде не сказано, что функцию нельзя вызывать при инициализации.

Код индикатора для воспроизведения:

Шаги для воспроизведения:

  1. Выключить автопрокуртку графика.
  2. Прикрепить индикатор к графику. ChartNavigate сработает, переместив график в нужное положение.
  3. Выгрузить терминал.
  4. Загрузить терминал. ChartNavigate не сработает, отобразив график без смещения.
Ладно, если бы функция выдавала ошибку. Но ее нет. Все вызовы проходят успешно, но именно при перезагрузке терминала смещение графика не происходит.

Скажите, пожалуйста, а перед тем, как выгрузить терминал, вы возвращаете график к самым свежим ценам?

Почему спрашиваю:

Применила ваш код для того, чтоб посмотреть, как сработает у меня при таких условиях. При опробовании поначалу решила, что у меня воспроизводится описываемая вами проблема. Позже поняла, что - нет. Поскольку если график вернуть перед выгрузкой к самым свежим ценам, то он после загрузки терминала срабатывает согласно коду. Если же перед выгрузкой не вернуть к свежим ценам, то после загрузки график остаётся там, где был перед выгрузкой.

 
Vladimir Karputov:

Build 1865.

Внёс изменение в индикатор:

то, есть каждый 12-й тик принудительно передвигаем график. Для чего это нужно:

  1. Между 12-ти тиками можно вручную сдвинуть график и увидеть номер первого видимого бара
  2. Визуальное отслеживание перемещения.


Пока наметилась теория: сдвиг графика зависит ОТ МАСШТАБА ГРАФИКА!

Vladimir Karputov:

Индикатор версия 1.002:

...

Явная зависимость от масштаба графика. Причём какая-то память есть, если успеть сдвинуть график вручную один раз.


Автор темы создал её по следующему вопросу - ChartNavigate при инициализации:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

ChartNavigate при инициализации

Ihor Herasko, 2018.06.25 12:17

...

Итак, суть проблемы: ChartNavigate не смещает график при старте терминала, если вызывать функцию в OnInit()


Вы, Владимир, проводите свои  исследования не в OnInit(), а в OnCalculate(). Не по вопросу, описанному автором темы.

Т.е., рассматриваете в этой теме что-то другое.

Если вы обнаружили реальную проблему, то может вам обратиться в Сервисдеск с её описанием?


P./S.: Согласно последнему тестовому коду индикатора, прикреплённому тут, у вас уже не происходит принудительной перерисовки графика на каждом тике. Но вместо этого теперь идёт печать в лог на каждом тике. За счёт того, что нет проверки на то, что изменился ли номер первого бара на графике.

Кроме того, у вас в коде содержится активным удаление комментариев. Т.е., если поставить ваш код на график, где будут созданы какие-то нужные комментарии какой-то другой программой, ваш тестовый код их снесёт

P./S.: Удалила в начале поста дубликат цитируемого, поставила вместо него цитаты из другого, взаимосвязанного.

 
Dina Paches:


Автор темы создал её по следующему вопросу - ChartNavigate при инициализации:


Вы, Владимир, проводите свои  исследования не в OnInit(), а в OnCalculate(). Не по вопросу, описанному автором темы.

Т.е., рассматриваете в этой теме что-то другое.

Если вы обнаружили реальную проблему, то может вам обратиться в Сервисдеск с её описанием?


P./S.: Согласно последнему тестовому коду индикатора, прикреплённому тут, у вас уже не происходит принудительной перерисовки графика на каждом тике. Но вместо этого теперь идёт печать в лог на каждом тике. За счёт того, что нет проверки на то, что изменился ли номер первого бара на графике.

Кроме того, у вас в коде содержится активным удаление комментариев. Т.е., если поставить ваш код на график, где будут созданы какие-то нужные комментарии какой-то другой программой, ваш тестовый код их снесёт

Дина, а у Вас работает? Я вот уже часа 2-3 (только сегодня, не считая вчерашних тестов) бьюсь в попытках получить неработающий вариант в OnInit но всё безуспешно. Всё и всегда отрабатывает как положено. Замечена только такая особенность: Если поставить индикатор на два графика и перезапустить терминал, то отработает только на том графике который был активен в момент закрытия и открытия терминала. На втором, не активном графике не срабатывает. Но это, на мой взгляд, вполне объяснимо, нет отрисовки графика и нет самого графика несмотря на то, что данные поступают.

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