Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Ping - индикатор для MetaTrader 5

Просмотров:
3322
Рейтинг:
(31)
Опубликован:
2017.11.16 11:32
\MQL5\Indicators\fxsaber\ \MQL5\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

Но часто из виду упускается другой параметр: так называемый "внутренний пинг терминала" - дополнительный лаг котировок внутри самого терминала (платформы). Даже при нулевом сетевом пинге это запаздывание может быть существенным.

Оба варианта визуализации индикатора

Данный индикатор показывает динамику изменения этого параметра, который вычисляется следующим образом:

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

// Получение свежего тика с величиной внутреннего лага котировки (в миллисекундах)
bool SymbolInfoTick( const string &Symb, MqlTick &Tick, double &Ping )
{
  static const bool IsTester = (MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION));
  
  static MqlTick PrevTick = {0};
  static ulong PrevTime = 0;
  
  const ulong NowTime = IsTester ? 0 : GetMicrosecondCount();
  const bool Res = SymbolInfoTick(Symb, Tick);
  
  if ((!IsTester) && Res)
  {
    if (_R(Tick) != PrevTick)
    {
      Ping = PrevTime ? MathAbs(Tick.time_msc - PrevTick.time_msc - (NowTime - PrevTime) / 1e3) : 0;
      
      PrevTime = NowTime;
      PrevTick = Tick;
    }
    else
      Ping = 0;
  }

  return(Res);
}

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


Особенности

  • Временной лаг котировок вычисляется в миллисекундах;
  • Индикатор минимально потребляет вычислительные ресурсы терминала;
  • При сбросе индикатора (смена ТФ, символа и т.д.) накопленные данные теряются (БД не ведется);
  • После удаления индикатора его комментарий на чарте остается;
  • Невозможно создание такого индикатора для MetaTrader 4 - недоступны данные по тикам с точностью до мс;
  • SymbolInfoTick в индикаторах требует "разогрева" в виде нескольких первых Calculate-событий;
  • Индикатор может служить шаблоном для реал-тайм визуализации любых показателей - нужно заменить только одну строку;
  • Для компиляции индикатора требуется наличие библиотеки - используется для сравнения MqlTick-структур при вычислении лага:

    #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280
  • Индикатор имеет два вида отображения, в зависимости от этой строки:

    #define HISTOGRAM_VIEW // Закомментировать, чтобы сменить вид индикатора с гистограмм на свечи

Текущий индикатор, конечно, показывает лаг цен (далее пинг), связанный с Calculate-событием. Как оказалось, существует настолько много факторов серьезнейшим образом влияющих на пинг, что могут возникнуть сомнения в целесообразности использования каких-либо индикаторов в ТС (и анализе). Конечно, NewTick-событие слабее подвержено негативным влияниям, но и там пинг совсем не мал (если замерять в советнике), что может свести иногда к некоторой бессмысленности скоростные показатели платформы.

Daniella Daniella

Семафорный сигнальный индикатор с использованием Average True Range.

Exp_Stopreversal_Tm Exp_Stopreversal_Tm

Эксперт на основе сигналов индикатора Stopreversal с возможностью жесткой фиксации временного диапазона торговли.

RSI Eraser RSI Eraser

Советник по сигналам индикатора iRSI (Relative Strength Index, RSI).

OsMaSter v0 OsMaSter v0

Советник на базе сигналов индикатора iOsMA (Moving Average of Oscillator, OsMA).