Пользовательские графики. Range-бары

 

При создании пользовательских графиков существует ограничение, тянущееся еще со времен МТ4 - в течение одной минуты нельзя создать два или более баров. В итоге приходится переносить данные на следующую минуту. И таких переносов на графиках Range-баров достаточно много, если высота Range-бара небольшая (меньше высоты средней минутной свечи). Результатом является уход графика в будущее. К примеру, если начать создавать пользовательский график с 2019-го года при высоте бара 20 пунктов (GBPJPY), то нынешняя дата (2021.06.28) размещается на графике аж в 2023.05.04. 

Таким образом, мало того, что пользовательский график становится оторванным от реального времени, так еще и протестировать эксперт на таком графике невозможно, т. к. в МТ5 даже текущий день невозможно протестировать, не говоря уже о последующих днях. Да и в журнале огромное количество ошибок выводится о будущих котировках.

2021.06.28 22:11:10.069 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.425/153.430/0.000
2021.06.28 22:11:12.575 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.422/153.428/0.000
2021.06.28 22:11:12.706 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.418/153.423/0.000
2021.06.28 22:11:12.819 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.418/153.424/0.000
2021.06.28 22:11:12.921 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.418/153.423/0.000
2021.06.28 22:11:13.036 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.418/153.422/0.000
2021.06.28 22:11:13.149 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.417/153.422/0.000
2021.06.28 22:11:15.456 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.420/153.422/0.000
2021.06.28 22:11:15.767 Ticks   future price Range_20_2_GBPJPY_20190102 (tick: 2023.05.04 11:31:00, last: 1970.01.01 00:00:00.000) 153.420/153.424/0.000

Описанные проблемы можно было бы решить, уменьшив дискретность времени для создания свечей до секунды, а лучше даже до миллисекунд, которые уже давно имеются в MQL. Хотя боюсь, что указанное ограничение является одним из важных архитектурных столпов МТ... Но в таком случае пользовательские графики теряют львиную долю своего непосредственного применения.

 
Но ведь можно создать индикатор. ?
 
Сергей Таболин:
Но ведь можно создать индикатор. ?

И?

 
Ihor Herasko:

При создании пользовательских графиков существует ограничение, тянущееся еще со времен МТ4 - в течение одной минуты нельзя создать два или более баров. В итоге приходится переносить данные на следующую минуту. И таких переносов на графиках Range-баров достаточно много, если высота Range-бара небольшая (меньше высоты средней минутной свечи). Результатом является уход графика в будущее. К примеру, если начать создавать пользовательский график с 2019-го года при высоте бара 20 пунктов (GBPJPY), то нынешняя дата (2021.06.28) размещается на графике аж в 2023.05.04. 

Таким образом, мало того, что пользовательский график становится оторванным от реального времени, так еще и протестировать эксперт на таком графике невозможно, т. к. в МТ5 даже текущий день невозможно протестировать, не говоря уже о последующих днях. Да и в журнале огромное количество ошибок выводится о будущих котировках.

Описанные проблемы можно было бы решить, уменьшив дискретность времени для создания свечей до секунды, а лучше даже до миллисекунд, которые уже давно имеются в MQL. Хотя боюсь, что указанное ограничение является одним из важных архитектурных столпов МТ... Но в таком случае пользовательские графики теряют львиную долю своего непосредственного применения.

не понял...вы в CustomSymbol пытаетесь пытаетесь делать Range бары ? ну да, там это никак..точнее всё сделается, но визуально отобразиться неверно. поверх ренжей терминал пересчитает текущий тайм-фрейм

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

 
Maxim Kuznetsov:

не понял...вы в CustomSymbol пытаетесь пытаетесь делать Range бары ? ну да, там это никак..точнее всё сделается, но визуально отобразиться неверно. поверх ренжей терминал пересчитает текущий тайм-фрейм

Почему "пытаюсь"? Все сделано, работает. Проблемы две:

  1. Нет соответствия времени, т. к. Range-бары малой высоты зачастую не помещаются в одну минутную свечу. Для решения этой проблемы потребуется только воля команды MQ, чтобы разрешили устанавливать время открытия свечи с кратностью хотя бы в 1 секунду, а не минуту, как сейчас.
  2. Невозможно протестировать советник на созданном графике, т. к. график находится в будущем. Эту проблему в принципе можно решить, если начинать строить график ранее его реального начала. Все равно ведь время не соответствует реальному. Но если будет решена проблема 1, то автоматически решается и эта проблема.

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

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

 
Ihor Herasko:

Почему "пытаюсь"? Все сделано, работает. Проблемы две:

  1. Нет соответствия времени, т. к. Range-бары малой высоты зачастую не помещаются в одну минутную свечу. Для решения этой проблемы потребуется только воля команды MQ, чтобы разрешили устанавливать время открытия свечи с кратностью хотя бы в 1 секунду, а не минуту, как сейчас.
  2. Невозможно протестировать советник на созданном графике, т. к. график находится в будущем. Эту проблему в принципе можно решить, если начинать строить график ранее его реального начала. Все равно ведь время не соответствует реальному. Но если будет решена проблема 1, то автоматически решается и эта проблема.

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

Индикатор не решает эту проблему, но и не "улетает" в будущее. Дополнительная сложность - необходимость буферов для времени открытия-закрытия свечи. Хотя, и Вам тоже время надо куда-то записывать.

В любом случае я присоединяюсь к Вашей просьбе.

 
Ihor Herasko:

Почему "пытаюсь"? Все сделано, работает. Проблемы две:

  1. Нет соответствия времени, т. к. Range-бары малой высоты зачастую не помещаются в одну минутную свечу. Для решения этой проблемы потребуется только воля команды MQ, чтобы разрешили устанавливать время открытия свечи с кратностью хотя бы в 1 секунду, а не минуту, как сейчас.
  2. Невозможно протестировать советник на созданном графике, т. к. график находится в будущем. Эту проблему в принципе можно решить, если начинать строить график ранее его реального начала. Все равно ведь время не соответствует реальному. Но если будет решена проблема 1, то автоматически решается и эта проблема.

У меня знакомый купил ренко-комплект. Там генератор баров, какие-то ресурсы для тестера, куча индикаторов в наборе, которые с его ренко барами работает. Но протестировать и просто проследить, что где почему открывается, голову сломаешь. Временной шкалы нет, бары могут за один тик две-три штуки появляться и еще куча сюрпризов.
Вот здесь в статье понравилась на втором рисунке идея. Просто графические объекты на стандартном графике. С индикатором пришлось помучится немного, но потом в тестере все отлично проверяется.

Индикатор для построения графика "Ренко"
Индикатор для построения графика "Ренко"
  • www.mql5.com
В статье рассказывается о графике "Ренко" и приведен один из вариантов его реализации на языке MQL5 в виде индикатора. Индикатор имеет множество модификаций, отличающих его от классического графика. Реализовано построение не только в окне индикатора, но и на главном графике. Кроме того, реализовано представление индикатора в виде линий "ZigZag". Приведено несколько примеров стратегий работы с графиком.
 

Если не нужна синхронизация с другими инструментами, можно начинать построения из далекого прошлого.

Но неудобно, конечно, согласен.

 

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

Но проблема наверное фундаментальная, т.к. придется менять кодирование таймфрейма и все с этим связанное.

 
Сергей Таболин:

Индикатор не решает эту проблему, но и не "улетает" в будущее. 

Да, нарисовать любой график можно в индикаторе. В самом крайнем случае тот же Canvas задействовать. Но, к сожалению, толку от такого графика мало - просто красивая картинка. Ее не протестировать в тестере, советник (любой) не поставить в онлайн.

Смысл то пользовательских символов в том, что это полноценный график, у которого есть все те же самые свойства, что и у стандартного графика. Ну разве что кроме выполнения торговых операций. Для их выполнения нужно указать советнику, для какого символа отправлять торговые приказы.

 
Andrey Khatimlianskii:

Если не нужна синхронизация с другими инструментами, можно начинать построения из далекого прошлого.

Но неудобно, конечно, согласен.

Да, именно к этой идее пока и пришел. На безрыбье и рак - рыба...

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