Еще один вид графических объектов - Тики

 

В теме искусственные индикаторные буферы был представлен демонстрационной индикатор. В потрохах которого лежит новый вид графических объектов - Тики. Чтобы не вникать в чужой ООП-индикатор, покажу MT5-советник, который на 99% делает то же самое, что и индикатор, но код в разы проще. Этот советник призван показать, насколько просто можно работать с графический объектом Тики. Если что-то не получается, можете спросить в ветке. Подробные комментарии даны в самом коде.

#property strict

// Нужно распаковать в папку MQL5 содержимое архива https://c.mql5.com/3/93/Ticks.zip
#include <comp\ChartObjects\ChartObjectTicks.mqh>

CHARTOBJECT* ChartObject;

void OnInit( void )
{
  ChartObject = new CHARTOBJECTTICKS; // Создаем объект "Тики"
  
  return;
}

void OnDeinit( const int reason )
{
  delete ChartObject;;

  ::ChartRedraw();

  return;
}

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  EVENTBASE::MyEvent(id, lparam, dparam, sparam);

  return;
}

Рекомендуется запускать на Metaquotes-Demo сервере M1-таймфрейм с данными на чарте за текущий день, с масштабом, соответствующим самым крупным по размеру (в пикселях) барам. Такая рекомендация вызвана наибольшей вероятностью, что вопросов не возникнет. Если ничего на чарте не появляется, сделайте любое действие, что вызывет событие CHART_CHANGE - это инициирует доп. запрос на закачку тиков (CopyTicks)


Картинка должна получиться примерно такая



Графический объект Тики позволяет рассмотреть, как ходила цена внутри каждого бара. Это может быть полезно при анализе исполнения ордеров, движений во время новостей и т.д. На ФОРТС это позволяет еще и подробно видеть бидовые и асковые данные, помимо last (по которым строятся бары, если правильно понял).


В левом верхнем углу показывается количество тиков на чарте и время на их получение (при профилировании 85% времени выполнения уходит на CopyTicks). Это время зависит от многих факторов. У меня производительность около 100К тиков в секунду. Так что можете оценить работу CopyTicks у себя локально.


Если видны разрывы или некое несоответствие тиков барам, то это ошибки CopyTicks, о которых плотно общался в Сервисдеске.


Графический объект Тики должен работать на любом MT5-сервере, где имеется тиковая история. Я пробовал еще Alpari-Ltd-MT5 - там работает, но медленнее, поскольку тиков значительно больше.


Если будет желание, отпишитесь, получается ли на ФОРТС и ЕСН. У меня таких счетов нет, чтобы проверить. Конечно, описание замеченных багов и пожелания по доработке не останутся незамеченным - постараюсь учесть.


Если бы масштабов чарта было больше, то и так визуализируемую тиковую историю можно было бы показать более подробно. У меня нет 4К-экрана. Возможно, там расстояние между барам в пикселях больше в два раза. Тогда на 4К-экранах можно будет видеть в два раза подробнее тиковую историю при подобной визуализации.


Хочется отметить замечательную производительноть CopyTicks, при запросе наиболее свежих данных. Там явно есть специальная оптимизация для этого.


Если хочется посмотреть тиковую историю на текущем баре (как формируется тиковая история реал-тайм), то либо запустите упомянутый индикатор, либо добавьте в код советника следующие строки

void OnTick( void )
{
  if (::ChartGetInteger(0, ::CHART_FIRST_VISIBLE_BAR) <= ::ChartGetInteger(0, ::CHART_VISIBLE_BARS))
    ChartObject.Visual();

  return;
}
 
Выкладывать данное решение в кодобазу считаю преждевременным.
 
comp:
Выкладывать данное решение в кодобазу считаю преждевременным.

Особенно если учесть, что якобы код для пятёрки (но ведь нет шапки и расширения), а в коде присутствует "#property strict". 

А теперь взгляните, как выглядит код, когда не ленятся его оформлять:

//+------------------------------------------------------------------+
//|                                               Design Example.mq5 |
//|                   Copyright 2009-2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2009-2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

// Нужно распаковать в папку MQL5 содержимое архива https://c.mql5.com/3/93/Ticks.zip
#include <comp\ChartObjects\ChartObjectTicks.mqh>

CHARTOBJECT *ChartObject;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ChartObject=new CHARTOBJECTTICKS; // Создаем объект "Тики"
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   delete ChartObject;;
   ::ChartRedraw();
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   EVENTBASE::MyEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
Файлы:
 

ну норм, ЧО, правда практической пользы глазами смотреть на тики никакой нет, но для красоты норм :) Тем более все тиковые изменения могут не влезть в 1 бар.

Хотя, для арбитражных стратегий может быть полезно такое отображение даже и в практическом ключе. Посмотреть на тиковые отклонения внутри баров, например. В любом случае интересно. Мне нра.

 
Karputov Vladimir:

Особенно если учесть, что якобы код для пятёрки (но ведь нет шапки и расширения), а в коде присутствует "#property strict". 

А теперь взгляните, как выглядит код, когда не ленятся его оформлять:

  1. МОЙ код никогда не будет иметь уродливых, с моей точки зрения, шапок и комментариев, перегружающих визуальное и смысловое восприятие.
  2. Представленный мною код компилируется и выполняется в обеих MT4/5 платформах. #property strict не является признаком MQL4.
  3. В первом посте четко сказано, что это MT5-советник. В коде в комментарии четко указана папка MQL5.

 
Maxim Dmitrievsky:

ну норм, ЧО, правда практической пользы глазами смотреть на тики никакой нет, но для красоты норм :)

Смысла смотреть на тики уж точно не меньше, чем смотреть на бары. Тем более

comp:

На ФОРТС это позволяет еще и подробно видеть бидовые и асковые данные, помимо last (по которым строятся бары, если правильно понял).

 
comp:

  1. МОЙ код никогда не будет иметь уродливых, с моей точки зрения, шапок и комментариев, перегружающих визуальное и смысловое восприятие.

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

Что касается тиков на графике - ну, не знаю. Красиво смотрится, но не вижу им реального применения. На Фортс стакан полезней и история сделок, которая, как я понимаю, в МТ отсутствует.

 
Yuriy Asaulenko:

Что касается тиков на графике - ну, не знаю. Красиво смотрится, но не вижу им реального применения.

Интересно, какое реальное применение видится в барах на графике...
 
comp:
Интересно, какое реальное применение видится в барах на графике...
Вы открыли тему, чтобы услышать мнения. Они могут быть разными.
 
Yuriy Asaulenko:
Вы открыли тему, чтобы услышать мнения. Они могут быть разными.

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

 
comp:

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

Не относится. Хотя, в некоторых случаях, и свечи неплохо бы было убрать.

Я не говорю, что тиковая история не нужна. Нужна, последние 2-3 мин перед сделкой и 2-3 мин после нее. Но мне хватает стакана и таблицы истории сделок с их объемами, на Фортс, разумеется. Излишняя визуализация, имхо, не делает картинку проще для восприятия. А визуализация нужна исключительно для зрительного восприятия, и ни для чего более. Но это кому как, разумеется.

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