Обсуждение статьи "Пользовательские символы: основы применения на практике"

 

Опубликована статья Пользовательские символы: основы применения на практике:

Статья посвящена программной генерации пользовательских символов, с помощью которых демонстрируется несколько популярных способов отображения котировок. Предложен вариант малоинвазивной адаптации советников для торговли реальным символом с графика производного пользовательского символа. Исходные коды MQL прилагаются.

Для фондовых инструментов эксперт позволяет использовать режим реальных объемов, например, так:

Исходный график LKOH с реальным объемом 10000 на бар, сгенерированный экспертом EqualVolumeBars в MetaTrader 5

Эквиобъемный график LKOH с реальным объемом 10000 на бар, сгенерированный экспертом EqualVolumeBars в MetaTrader 5

Исходный (a) и эквиобъемный (b) график LKOH с реальным объемом 10000 на бар, сгенерированный экспертом EqualVolumeBars в MetaTrader 5

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

Таймфрейм графиков пользовательского символа должен быть равен M1 (как наименьший доступный в терминале). Таким образом, время баров, как правило, максимально близко соответствует моментам их формирования. Однако при сильных движениях на рынке, когда количество тиков или размер объемов формирует несколько баров в минуту, время баров будет убегать вперед от реального. Когда рынок успокоится, ситуация с временными отметками эквиобъемных баров нормализуется. Это ограничение платформы, вероятно, не особенно критично для равнообъемных или равнодиапазонных баров, поскольку весь смысл их использования заключается в отвязке от абсолютного времени.

Автор: Stanislav Korotky

 
В статье увидел особенность MQL, которую не знал. Пример ее использования.
template <typename T>
void f( T& ) {}

// Пашет только для объектов структур и классов.
template <typename T>
void OnlyObjects( T& )
{  
  const T Tmp;
  
  f((T)Tmp);
  
  // ....
}

void OnStart()
{
  int i;
  MqlTick Tick;
  
  OnlyObjects(Tick); // OK
  OnlyObjects(i);    // Error
}
 
fxsaber:
В статье увидел особенность MQL, которую не знал. Пример ее использования.

Это, видимо, к другой статье относится ;-) - https://www.mql5.com/ru/articles/8028/ - шаблоны там использовались, а пример оттуда сюда просто переехал уже в готовом виде.

Вычисление математических выражений (Часть 2). Парсеры Пратта и сортировочной станции
Вычисление математических выражений (Часть 2). Парсеры Пратта и сортировочной станции
  • www.mql5.com
В этой статье мы продолжаем изучать различные методы парсинга математических выражений и их реализацию на языке MQL. В первой части были рассмотрены парсеры рекурсивного спуска. Их главное достоинство — интуитивно понятное устройство, напрямую связанное с конкретной грамматикой выражений. Но если речь заходит об эффективности и технологичности...
 

Станислав, спасибо за проделанную работу!

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


К сожалению, имя исходного символа и созданного на его основе ренко никак нельзя связать средствами самой платформы. Было бы удобно иметь среди свойств пользовательского символа строковое поле "origin" (источник) или "parent" (родитель), в которое мы могли бы записать имя реального рабочего инструмента. По умолчанию оно было бы пустым, но если его заполнить, то платформа могла бы автоматически и прозрачно для пользователя подменять символ во всех торговых приказах и запросах истории.

Очень хорошая идея. Плюс торговля с графика встроенная работала бы.

Кого-бы пингануть? @Renat Fatkhullin @Slava

 
Andrey Khatimlianskii:

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

Во-первых, исторически они были сделаны раздельно (начать с того, что кое-то - не моё ;-). Во-вторых, ИМХО у каждого типа графиков есть свои приверженцы и они мало пересекаются (например, любители тиков - это не любители ренко, а таймшифт - вообще отдельная песня). В третьих, у них общего - только инициализация, да и то не полностью, потому что продолжение генерации после перезапуска нужно делать по-разному. Была идея вынести общее в отдельный инклудник, но с учетом пункта 2 каждому проще выбрать для себя один файл без зависимостей.

 
Stanislav Korotky:

Во-первых, исторически они были сделаны раздельно (начать с того, что кое-то - не моё ;-). Во-вторых, ИМХО у каждого типа графиков есть свои приверженцы и они мало пересекаются (например, любители тиков - это не любители ренко, а таймшифт - вообще отдельная песня). В третьих, у них общего - только инициализация, да и то не полностью, потому что продолжение генерации после перезапуска нужно делать по-разному. Была идея вынести общее в отдельный инклудник, но с учетом пункта 2 каждому проще выбрать для себя один файл без зависимостей.

Ну, смысл-то у них у всех один — взять тики (или минутки), и построить из них график без временной шкалы.

И подготовка истории (в идеале однократная, с продолжением после паузы с нужного места), и генерация новых баров, и эмуляция тиков — все похоже. Только правила для "нового бара" отличаются.

Но я ответ понял, тоже бы начал с адаптации готового, а не изобретал бы велосипед.

 
в MetaTrader 5 добавлена поддержка истории реальных тиков и сама платформа позиционируется, среди прочего, и как инструмент для высокочастотной торговли (High Frequency Trading, HFT).

Забавно) а кто и где его так позиционирует?

У моего брокера сервер МТ5 за 100мс не успевает отложенный ордер исполнить, какое уж тут HFT)

Не говоря уже о том, что отложенные ордера исполняются как рыночные.

 
secret:

Забавно) а кто и где его так позиционирует?

У моего брокера сервер МТ5 за 100мс не успевает отложенный ордер исполнить, какое уж тут HFT)

Не говоря уже о том, что отложенные ордера исполняются как рыночные.

https://www.mql5.com/en/welcome/en-metatrader-5-high-frequency-trading

MetaTrader 5 – the best solution for HFT traders!
MetaTrader 5 – the best solution for HFT traders!
  • www.mql5.com
Speed is a key attribute of High-Frequency Trading. Everything from data delivery and trade execution to the instant analysis based on huge amounts of data using hundreds of analytical tools must be as fast as possible. All this is available in MetaTrader 5! In MetaTrader 5, quotes are updated dozens of times per second. The quoting speed is an...
 
Stanislav Korotky:

Ренко

Для реализации графиков ренко используем неторгующий эксперт RenkoTicks.mq5. Он генерирует ренко в виде котировок пользовательского инструмента, обрабатывая для этого реальные тики (доступные в MetaTrader 5 от вашего брокера). Котировки (бары) исходного символа и таймфрейм рабочего графика, на который помещен RenkoTicks, не имеют значения.

Альтернативой пользовательским символам при построении ренко мог бы быть индикатор или рисование (с помощью объектов или на холсте (canvas)), но в обоих случаях невозможно было бы применять индикаторы или скрипты на таком псевдографике.

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





 
Nikolai Semko:

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

Это решение не покрывает всего разнообразия используемых на практике инструментов.

 
Andrey Khatimlianskii:

Это решение не покрывает всего разнообразия используемых на практике инструментов.

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

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