Счетчик тиков. Куда деваются тики?

 

Сделала счетчик тиков для mt4. 

Вопрос: Почему количество тиков, на моем индикаторе не соответствует объему индикатора Volumes (из штатной поставки MT4)???

Код:

 

 

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers  1
#property indicator_color1 clrGreen
#property indicator_width1 3
double mas[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {IndicatorSetInteger( INDICATOR_DIGITS,0);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,mas);
   SetIndexEmptyValue(0,0);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
mas[0]++;
return(rates_total);
  }
 
Anna Cvarc:

Сделала счетчик тиков для mt4. 

Вопрос: Почему количество тиков, на моем индикаторе не соответствует объему индикатора Volumes (из штатной поставки MT4)???

Код:

 

 

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers  1
#property indicator_color1 clrGreen
#property indicator_width1 3
double mas[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {IndicatorSetInteger( INDICATOR_DIGITS,0);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,mas);
   SetIndexEmptyValue(0,0);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
mas[0]++;
return(rates_total);
  }

А как вы сравниваете, на глазок? Сравнивайте с iVolume(...). Второе, где обнуление mas[0] в начале нового бара? Третье, возможно, вы не знаете, что при переключении таймфрейма в индикаторах обнуляются глобальные переменные и происходит вызов OnInit. 

Вы приведите полный код, как и где вы mas[0] выводите на печать, а мы напрягемся и поможем )) 

 

Сюрпиз : кол-во тиков и тиковый объём это разные вещи :-)

 
Maxim Kuznetsov:

Сюрпиз : кол-во тиков и тиковый объём это разные вещи :-)

Я тоже не знаю. Расскажите.
 
Yuriy Asaulenko:
Я тоже не знаю. Расскажите.

тут полфорума забито этой истоптанной темой - эпопея CopyTicks покруче "приключений Петрова и Васечкина", читайте там..

Кратко для ТС: Volume это тиковый объём от сервера и он не равен (и обычно больше) чем число тиков которые в реальном времени обрабатывает терминал.

Плюс к сведению ТС: OnCalculate может быть вызван вообще без тика от сервера :-)

 
Maxim Kuznetsov:

тут полфорума забито этой истоптанной темой - эпопея CopyTicks покруче "приключений Петрова и Васечкина", читайте там..

Кратко для ТС: Volume это тиковый объём от сервера и он не равен (и обычно больше) чем число тиков которые в реальном времени обрабатывает терминал.

Плюс к сведению ТС: OnCalculate может быть вызван вообще без тика от сервера :-)

Я думал что-то другое.

Плюс к сведению ТС: OnCalculate может быть вызван вообще без тика от сервера :-)  

Если пользоватемем как функция - понятно. Возможно запуском программы (типа как индикаторы). А чем еще? 

 
Yuriy Asaulenko:

Я думал что-то другое.

Плюс к сведению ТС: OnCalculate может быть вызван вообще без тика от сервера :-)  

Если пользоватемем как функция - понятно. Возможно запуском программы (типа как индикаторы). А чем еще? 

подгрузка истории например.

не уверен (можно поставить эксперимент, но лень), на границе минутных баров также может случаться

 
Maxim Kuznetsov:

Сюрпиз : кол-во тиков и тиковый объём это разные вещи :-)

Anna Cvarc:

Сделала счетчик тиков для mt4. 

Вопрос: Почему количество тиков, на моем индикаторе не соответствует объему индикатора Volumes (из штатной поставки MT4)???

Код:

 

 

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers  1
#property indicator_color1 clrGreen
#property indicator_width1 3
double mas[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {IndicatorSetInteger( INDICATOR_DIGITS,0);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,mas);
   SetIndexEmptyValue(0,0);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
mas[0]++;
return(rates_total);
  }
Этого никто не знает, у меня робот под MT4 пинг до сервера 60мс у разных людей работает по разному, я незнаю почему это происходит. Сервер одинаковый, думаю дело в поступлении тиков.
 
Anna Cvarc:


Анна, такое всегда было или при void OnTick() заметили в мт4 ?
 
Anna Cvarc:

Сделала счетчик тиков для mt4. 

Вопрос: Почему количество тиков, на моем индикаторе не соответствует объему индикатора Volumes (из штатной поставки MT4)???

Код:

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers  1
#property indicator_color1 clrGreen
#property indicator_width1 3
double mas[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {IndicatorSetInteger( INDICATOR_DIGITS,0);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,mas);
   SetIndexEmptyValue(0,0);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
mas[0]++;
return(rates_total);
  }

Вы что хотите посчитать? Тиковый объем? А зачем?)

Если Вы хотите посчитать торговый объем - Вам в МТ5 и использовать CopyTicks(). Но, к сожалению, вряд ли Вы сможете правильно его подсчитать без потерь. 

 
Alexey Kozitsyn:

Вы что хотите посчитать? Тиковый объем? А зачем?)

Если Вы хотите посчитать торговый объем - Вам в МТ5 и использовать CopyTicks(). Но, к сожалению, вряд ли Вы сможете правильно его подсчитать без потерь. 

Я хочу посчитать количество тиков которые пришли мне в терминал. Мой код правильный?

Если индикатора Volumes (из штатной поставки MT4) это тиковый который послал мне сервер, то почему происходит расхождение? 

Получается тики либо не доходят до меня либо мой код не успевает их обрабатывать.

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