- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Только "Полезные функции от KimIV".
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
Добрый времени суток. Подскажите пожалуйста по такому вопросу. Решился написать индикатор на MQL4. Перелопатил уже все учебники, но найти не смог, то что искал. В моем индикаторе есть массив, в котором мне нужно найти определенные значения, а потом посчитать их количество. Подскажите как это сделать? ArrayBsearch возвращает индекс только первого найденного элемента в первом измерении массива.
// код для себя любимого но о вашей проблеме, он не проверенный, нету компилятора (((( не с своего компа писал //********************************************************************************** // функция возвращает количество значений равных find в массиве muss[] с определенной точностью accuracy //********************************************************************************** int F( double& muss[], // массив в котором ищем double find, // что ищем int begin=-1, // откуда (номер элемента в массиве) (если -1 - ищем от начала до кончала) (если -2 - ищем от конца до начала) int end=-1, // покуда (номер элемента в массиве) (если -1 - ищем до конца) (если -2 - ищем до начала) int accuracy=8 // точность сравнения типов double, если меньше 0 - сравниваем без точности ){ //********************************************************************************** int size=ArraySize(muss); //********************************************************************************** // блок проверки верности входящих данных //********************************************************************************** if (size==0) return (-1); // массив не заполнен if (begin<-2) return (-2); // значение begin меньше допустимого if (end<-2) return (-3); // значение end меньше допустимого if (begin>=size) return (-4); // значение begin больше допустимого if (end>=size) return (-5); // значение end больше допустимого //********************************************************************************** // блок подготовки данных к расчету //********************************************************************************** int dd=1, // имеет значение +1 или -1 count=0; // количество совпадений - возвращаемый результат if (begin==-1){ // параметры для расчета от начала до конца i=0; end=size-1; } else{ if (begin==-2){ // параметры для расчета от конца до начала i=size-1; begin=0, end=i; dd=-1; } else{ if (end==-1){ // параметры для расчета от кудось до конца i=begin; end=size-1; } else{ if (end==-2){ // параметры для расчета от кудось до начала i=begin; end=i; begin=0; dd=-1; } else{ i=begin; if (begin>end){ // если begin>end dd=-1; begin=end; end=i; } } } } } //********************************************************************************** // блок расчета //********************************************************************************** if (accurecy<0){ // если точность < 0 for(,i>=begin && i<=end,i+dd) if (muss[i]==find) count++; return count; } else // если точность > 0 for(,i>=begin && i<=end,i+dd) if (NormalizeDouble(muss[i]-find,accurecy)==0) count++; return count; } //**********************************************************************************
Спасибо огромное!
Буду признателен если поможешь еще в одном.
Количество я посчитал. Но мне теперь надо каждое найденное значение сравнить через определенное количество баров с другим значением. Допустим с последующим баром.
Например: есть массив из 10 значений, в нем нужно найти "2", допустим их в массиве 3. И мы должны сравнить эти найденные "2" с последующими барами.
Поможешь?!
Спасибо огромное!
Буду признателен если поможешь еще в одном.
Количество я посчитал. Но мне теперь надо каждое найденное значение сравнить через определенное количество баров с другим значением. Допустим с последующим баром.
Например: есть массив из 10 значений, в нем нужно найти "2", допустим их в массиве 3. И мы должны сравнить эти найденные "2" с последующими барами.
Поможешь?!
1) Рад что помог
2) помог от того что не было чего делать в тот вечер (код этот еще не смотрел даже)
3) ни чего не понял что вы просите в этот раз
4) нет не помогу - причины тут и тут.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования