подскажите BestPractice для offline-chart`ов

 

захотелось в MT4 нарисовать свечи чуть-по-другому (немного пофильтровать/сгладить)
и посмотреть как себя ведут стандартные и не очень индикаторы.

конечно могу и сам раскопать как работать с .hst и обновлять графики, НО

это явно давно многие делали и наверное есть грамотные статьи, записи в блогах, темы форума, примеры в CodeBase

поделитесь. Не только мне будет полезно 

 

ключевое слово "periodconverter"

...и одноименный скрипт в Скриптах

 
Maxim Kuznetsov:

поделитесь. Не только мне будет полезно  

основа как и сказали выше стандартный PeriodConverter, могу в ЛС бросить индикатор, который строит оффлайн-график по торговым сессиям (1 бар = 1 сессия ) и обновляет онлайн, в открытый доступ не хотелось бы, под заказ писал. Пишите если интересно

 
Igor Makanu:

основа как и сказали выше стандартный PeriodConverter, могу в ЛС бросить индикатор, который строит оффлайн-график по торговым сессиям и обновляет онлайн, в открытый доступ не хотелось бы, под заказ писал. Пишите если интересно

оттуда (из PeriodConverter) разве что заголовки файла можно стащить (подсмотреть) :-)

меня немного смущает в нём логика обновления бара, но это скрипт ему можно...


 

будучи неоднкратно послан к PeriodConverter, его чуть-чуть процитирую:

Заголовок .hst средствами MQL записывается так (copy-paste из PeriodConverter) :

//--- write history file header
   FileWriteInteger(ExtHandle,file_version,LONG_VALUE);
   FileWriteString(ExtHandle,c_copyright,64);
   FileWriteString(ExtHandle,c_symbol,12);
   FileWriteInteger(ExtHandle,i_period,LONG_VALUE);
   FileWriteInteger(ExtHandle,i_digits,LONG_VALUE);
   FileWriteInteger(ExtHandle,0,LONG_VALUE);
   FileWriteInteger(ExtHandle,0,LONG_VALUE);
   FileWriteArray(ExtHandle,i_unused,0,13);

всего 168 байт вроде как (double по 8, i_unused по 4 байта, строки по байту на символ).

PS/ кстати в других форумах видел отсылки что последние 2 лонг - это на самом деле DATETIME - время создания и время последней синхронизации. Так или нет ?
 
Maxim Kuznetsov:

будучи неоднкратно послан к PeriodConverter, его чуть-чуть процитирую:

Заголовок .hst средствами MQL записывается так (copy-paste из PeriodConverter) :

//--- write history file header
   FileWriteInteger(ExtHandle,file_version,LONG_VALUE);
   FileWriteString(ExtHandle,c_copyright,64);
   FileWriteString(ExtHandle,c_symbol,12);
   FileWriteInteger(ExtHandle,i_period,LONG_VALUE);
   FileWriteInteger(ExtHandle,i_digits,LONG_VALUE);
   FileWriteInteger(ExtHandle,0,LONG_VALUE);
   FileWriteInteger(ExtHandle,0,LONG_VALUE);
   FileWriteArray(ExtHandle,i_unused,0,13);

PS/ кстати в других форумах видел отсылки что последние 2 лонг - это на самом деле DATETIME - время создания и время последней синхронизации. Так или нет ?

да правильно, вот пример в КБ где это используется  https://www.mql5.com/ru/code/9888  (Быстрый метод загрузки истории ( FastMethod = TRUE ):)

GetHistoryAllSymbols
GetHistoryAllSymbols
  • www.mql5.com
Накидываете данный советник на любой график и ждете (процесс будете видеть), пока история по всем символам из "Обзора рынка" будет закачана. Входные параметры: period - таймфрэйм, по которому будет загружена история. FastMethod - выбор метода загрузки истории (подробности ниже). Медленныйй метод загрузки истории ( FastMethod = FALSE...
 
Maxim Kuznetsov:

захотелось в MT4 нарисовать свечи чуть-по-другому (немного пофильтровать/сгладить)
и посмотреть как себя ведут стандартные и не очень индикаторы.

конечно могу и сам раскопать как работать с .hst и обновлять графики, НО

это явно давно многие делали и наверное есть грамотные статьи, записи в блогах, темы форума, примеры в CodeBase

поделитесь. Не только мне будет полезно 

С обновлением оффлайн-графиков, действительно, не все так просто. Много нюансов. Но это касается лишь действительно нестандартных графиков. Если графики обычные (тйамфреймы) с периодом не менее одной минуты, то особых проблем нет.

Мои мучения в этом направлении вот здесь. )))

 
Ihor Herasko:

Если графики обычные (тйамфреймы) с периодом не менее одной минуты, то особых проблем нет.

Мои мучения в этом направлении вот здесь. )))

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

а как выглядит проблема? 

 
Igor Makanu:

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

а как выглядит проблема? 

Например, если период графика 30 секунд. Тогда на одну минуту будет приходится две свечи. МТ4 такого поворота не ожидает и пишет об ошибке истории. Решается проблема только сдвигом новых свечей в будущее. В итоге получаем правильный ценовой ряд, но неправильный - временной. С графиками, не зависящими от времени (ренко, эквиобъемные, крестики-нолики, равновысокие), этот вопрос стоит наиболее остро.

Самое интересное, что тестер стратегий ведет себя по-другому, разрешая существование двух и более свечей с одной минутой открытия.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Ihor Herasko:

Например, если период графика 30 секунд. Тогда на одну минуту будет приходится две свечи. МТ4 такого поворота не ожидает и пишет об ошибке истории. Решается проблема только сдвигом новых свечей в будущее. В итоге получаем правильный ценовой ряд, но неправильный - временной. С графиками, не зависящими от времени (ренко, эквиобъемные, крестики-нолики, равновысокие), этот вопрос стоит наиболее остро.

Самое интересное, что тестер стратегий ведет себя по-другому, разрешая существование двух и более свечей с одной минутой открытия.

понятно, да видел и знаю, но тут терминал сам проверяет при первом открытии графиков корректность построения баров и пишет в лог об ошибках

как построить корректно бары с временем открытия в секундах вариантов особо нет... хотя насколько я помню вызов iCustom() с параметрами нестандартного ТФ в МТ4 без проблем работает, можно попробовать строить ТФ с 30-секундными барами, но не открывать его в терминале, а вызывать через iCustom() - может тогда терминал не будет проверять корректность построения графика?

 
Igor Makanu:

понятно, да видел и знаю, но тут терминал сам проверяет при первом открытии графиков корректность построения баров и пишет в лог об ошибках

как построить корректно бары с временем открытия в секундах вариантов особо нет... хотя насколько я помню вызов iCustom() с параметрами нестандартного ТФ в МТ4 без проблем работает, можно попробовать строить ТФ с 30-секундными барами, но не открывать его в терминале, а вызывать через iCustom() - может тогда терминал не будет проверять корректность построения графика?

Да, тогда ошибок не пишет. То есть виртуально такой график существовать может. А вот с отображением, что и нужно большинству пользователей, проблема.

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