если "определенный промежуток времени" кратен периодам графиков, то используйте тиковые объемы: Volume[]
вот набросал индикатор для подсчета 10-тиминутных тиковых объемов (онлайн не правильно работать будет - нулевой бар не правильно пересчитывается), индикатор бросать на М1
#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red extern int min = 10; double buf[]; int init(){ SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,buf); return(0); } int deinit(){ return(0); } int start(){ int i,limit,tmp_vol; limit=Bars-IndicatorCounted(); if (limit>1) limit = Bars-1; tmp_vol = 0; for(i=limit; i>=0; i--){ tmp_vol += Volume[i]; if(TimeMinute(Time[i])%min == 0){ buf[i] = tmp_vol; tmp_vol = 0; } } return(0); } //+------------------------------------------------------------------+
если речь идет о подсчете тиков онлайн - тогда нужно создать эксперт и в ф-ции start() считать кол-во вызовов start(), в эксперте вызов ф-ции start() происходит по приходу нового тика
ну или как вариант: зацикленный скрипт, который будет отслеживать изменение Ask и Bid, что будет соответствовать приходу нового тика
добавлю - при постоянном спреде всё равно, что отслеживать, либо по Ask, либо по Bid... а вот на плавающем - любое изменение и Ask и Bid...
(при всем при том - конструкции логического "ИЛИ" обслуживаются намного дольше...это может быть важно...)
тестовый скрипт:
int start(){ int i,count,x,y,st_ms; x = 1; y = -1; // || count = 0; st_ms = GetTickCount(); for(i=0;i<1000000;i++) if(x > y || x > y || x > y || x > y || x > y || x > y || x > y || x > y || x > y || x > y || x > y || x > y) count++; Print(" || = ",GetTickCount()-st_ms); // && count = 0; st_ms = GetTickCount(); for(i=0;i<1000000;i++) if(x > y && x > y && x > y && x > y && x > y && x > y && x > y && x > y && x > y && x > y && x > y && x > y) count++; Print(" && = ",GetTickCount()-st_ms); return(0); }
на 1 миллион операций вроде не сильно критично:
10:39:53 test EURUSD,M1: loaded successfully 10:39:53 test EURUSD,M1: || = 156 10:39:54 test EURUSD,M1: && = 172 10:39:54 test EURUSD,M1: uninit reason 0 10:39:54 test EURUSD,M1: removed
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Как можно посчитать количество тиков за определенный промежуток времени, ведь в mql4 нет такой функции?