хотя количество изменений цен BID/ASK на соответствующей столбику свече было равно ~300.
программно. Если новые значения BID/ASK отличаются от предыдущих, то +1. Делал на ф-ии OnTick
программно. Если новые значения BID/ASK отличаются от предыдущих, то +1. Делал на ф-ии OnTick
В индикаторе нет. В советнике есть.
программно. Если новые значения BID/ASK отличаются от предыдущих, то +1. Делал на ф-ии OnTick
OnTick иногда приходит 1 вместо нескольких, особенно если очень интенсивная торговля. Где-то об этом было ...
В документации, конечно-же! NewTick
NewTick
Событие NewTick генерируется при поступлении новых котировок и обрабатывается функцией OnTick() у присоединенных советников. Если при поступлении новой котировки выполнялась функция OnTick, запущенная на предыдущей котировке, то пришедшая котировка будет проигнорирована советником, так как соответствующее событие не будет поставлено в очередь событий эксперта.
Все пришедшие во время выполнения программы новые котировки программой игнорируются до тех пор, пока не завершится очередное выполнение функции OnTick(). После этого функция будет запущена только после прихода очередной новой котировки.
Событие NewTick генерируется независимо от того, запрещена или разрешена автоматическая торговля (кнопка "Разрешить/запретить Авто-торговлю"). Запрет автоматической торговли означает только запрет на отправку торговых запросов из эксперта, работа эксперта не прекращается.
Запрет автоматической торговли путем нажатия на указанную кнопку не прерывает текущее выполнение функции OnTick(). Функция OnTick() не запускается на выполнение при открытом окне свойств советника.
Давайте определяться: стандартный индикатор:
//+------------------------------------------------------------------+ //| Volumes.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "http://www.mql5.com" //---- indicator settings #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 Green,Red #property indicator_style1 0 #property indicator_width1 1 #property indicator_minimum 0.0 //--- input data input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; // Volumes //---- indicator buffers double ExtVolumesBuffer[]; double ExtColorsBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //---- buffers SetIndexBuffer(0,ExtVolumesBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtColorsBuffer,INDICATOR_COLOR_INDEX); //---- name for DataWindow and indicator subwindow label IndicatorSetString(INDICATOR_SHORTNAME,"Volumes"); //---- indicator digits IndicatorSetInteger(INDICATOR_DIGITS,0); //---- } //+------------------------------------------------------------------+ //| Volumes | //+------------------------------------------------------------------+ 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[]) { //---check for rates total if(rates_total<2) return(0); //--- starting work int start=prev_calculated-1; //--- correct position if(start<1) start=1; //--- main cycle if(InpVolumeType==VOLUME_TICK) CalculateVolume(start,rates_total,tick_volume); else CalculateVolume(start,rates_total,volume); //--- OnCalculate done. Return new prev_calculated. return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CalculateVolume(const int nPosition, const int nRatesCount, const long &SrcBuffer[]) { ExtVolumesBuffer[0]=(double)SrcBuffer[0]; ExtColorsBuffer[0]=0.0; //--- for(int i=nPosition;i<nRatesCount && !IsStopped();i++) { //--- get some data from src buffer double dCurrVolume=(double)SrcBuffer[i]; double dPrevVolume=(double)SrcBuffer[i-1]; //--- calculate indicator ExtVolumesBuffer[i]=dCurrVolume; if(dCurrVolume>dPrevVolume) ExtColorsBuffer[i]=0.0; else ExtColorsBuffer[i]=1.0; } //--- } //+------------------------------------------------------------------+
Да, в стандартном коде индикатора не увидел требования на то, чтобы увеличение объема на 1 обязательно сопровождалось изменением цены BID/ASK...
Тогда, если цены BID/ASK не меняются, а тиковый объем увеличивается, то как это правильно понять?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток, уважаемые гуру рынка!
Прошу подсобить в понимании индикатора Volumes.
Ковыряясь в просторах интернета, удалось выяснить, что данный индикатор показывает количество изменений цен BID/ASK за определенный временной период.
То есть, для того чтобы произошло увеличение текущего столбика индикатора на 1, необходимо изменение цены либо BID, либо ASK хотя бы на 0,00001.
В терминале на таймфрейме 1М вижу, что значение текущего столбика Volumes достигло значения ~1500, хотя количество изменений цен BID/ASK на соответствующей столбику свече было равно ~300.
Прошу скорректировать, как понимать подобные цифры...