Задержка обновления графика по тикам

 

Добрый день!

М‌еня интересует вопрос:

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

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

 
Попробуйте доработать такую идею, библиотека на 99% будет работать и на MQL4

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

Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"

fxsaber, 2016.11.14 10:11

Прошу доработать CGraphic и CCurve. Слабые классы получились. И наследоваться от них почти нереально, потому что нужное - private. Долго вникал, но чтобы поправить до нормальной эксплуатации, требовалось переписывать самому классы.

Захотел сделать интерактивный тиковый график - вышло только костыльно (без переписывания классов)

#include <Graphics/Graphic.mqh>

void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
  MqlTick Ticks[];
  
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
  
  ArrayResize(Bids, Amount);
  ArrayResize(Asks, Amount);
  
  for (int i = 0; i < Amount; i++)
  {
    Bids[i] = Ticks[i].bid;
    Asks[i] = Ticks[i].ask;
  }
}

CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());

void OnDeinit( const int Reason )
{
  Graphic.Destroy();
  delete Graphic;
  
  ChartRedraw();
}

void GraphTicks( const double &Price1[], const double &Price2[] )
{
   Graphic.Destroy();
   delete Graphic;

   Graphic = new CGraphic;  
   Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));

   Graphic.AddCurve(Price1, CURVE_LINES);
   Graphic.AddCurve(Price2, CURVE_LINES);
  
   Graphic.PlotAllCurves();
   Graphic.Update();
}

void OnTick()
{
  double Bids[], Asks[];
  GetPrices(Bids, Asks);
  
  GraphTicks(Bids, Asks);
}

 

Нет DeleteCurve, ChangeCurve и т.д.

 
fxsaber:
Попробуйте доработать такую идею, библиотека на 99% будет работать и на MQL4


Спасибо! Идея понятна.

Может есть другие варианты?

 
Dmitry Kolesnikov:


Спасибо! Идея понятна.

Может есть другие варианты?

По принципу период_конвертера генерируйте 10-секундный тайм-фрейм, открывайте график автономно и работайте с ним.

 
Andrey Khatimlianskii:

По принципу период_конвертера генерируйте 10-секундный тайм-фрейм, открывайте график автономно и работайте с ним.


Тоже вариант, спасибо!

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

Может, это технически не реализуемо?

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

 
Dmitry Kolesnikov:


Тоже вариант, спасибо!

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

Может, это технически не реализуемо?

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

Нет, МТ не даст фильтровать свой поток тиков. Надо собрать свой график или индикатор.