Счетчик тиков. Куда деваются тики? - страница 2

 
Alexey Volchanskiy:

А как вы сравниваете, на глазок? 

В индикаторе есть гистограмма.
 
Alexey Volchanskiy:

 Второе, где обнуление mas[0] в начале нового бара? 

Обнуление тут не к чему.
 
Alexey Volchanskiy:

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

Это я знаю.
 
Anna Cvarc:

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

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

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

В четверке, насколько я знаю, Вы не сможете подсчитать точно сколько тиков пришло в терминал. Вы сейчас считаете количество вызовов OnCalculate() :)

Однако, если Вы хотите тиковый объем (тиковый, а не реальный) - используйте конструкцию tick_volume[0].

Так Вы получите тиковый объем на текущей свече. 

 
Anna Cvarc:
Это я знаю.
#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[],masbuffer;
//+------------------------------------------------------------------+
//| 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[])
  {
  int i;
  mas[i] = masbuffer + 1;
  masbuffer = mas[i];
  
  if(rates_total > prev_calculated)
  {
      masbuffer = 0;
  }
return(rates_total);
  }
типо того
Причина обращения: