Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А как вы сравниваете, на глазок?
Второе, где обнуление mas[0] в начале нового бара?
Третье, возможно, вы не знаете, что при переключении таймфрейма в индикаторах обнуляются глобальные переменные и происходит вызов OnInit.
Я хочу посчитать количество тиков которые пришли мне в терминал. Мой код правильный?
Если индикатора Volumes (из штатной поставки MT4) это тиковый который послал мне сервер, то почему происходит расхождение?
Получается тики либо не доходят до меня либо мой код не успевает их обрабатывать.
В четверке, насколько я знаю, Вы не сможете подсчитать точно сколько тиков пришло в терминал. Вы сейчас считаете количество вызовов OnCalculate() :)
Однако, если Вы хотите тиковый объем (тиковый, а не реальный) - используйте конструкцию tick_volume[0].
Так Вы получите тиковый объем на текущей свече.
Это я знаю.
#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);
}