- [Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2.
- Помогите МА открыть не на графике, а в окне индикаторов
- [АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
Подскажите как на индикаторы RSI или Stohastic наложить МА т.е. МА взять не от графика, а от индикатора?
В МТ4 есть функция iMAOnArray() но в пятёрке её наверно забыли реализовать.
Остаётся самому посчитать по формулам. У машки не сложные формулы думаю не запутаетесь. Формулы все есть в документации к mql4.
Подскажите как на индикаторы RSI или Stohastic наложить МА т.е. МА взять не от графика, а от индикатора?
если в индикаторе используется всего один буфер, то просто передаем в качестве цены в качестве цены в OnCalculate хендл индикатора, как то так примерно.
OnCalculate
Функция OnCalculate() вызывается только в пользовательских индикаторах при необходимости произвести расчет значений индикатора по событию Calculate. Обычно это происходит при поступлении нового тика по символу, для которого рассчитывается индикатор. При этом индикатор не обязательно должен быть прикреплен к какому-нибудь ценовому графику данного символа.
Функция OnCalculate() должна иметь тип возвращаемого значения int. Существует два варианта определения. В пределах одного индикатора нельзя использовать оба варианта функции.
Первая форма вызова предназначена для тех индикаторов, которые могут быть рассчитаны на одном буфере данных. Пример такого индикатора - Custom Moving Average.
int OnCalculate (const int rates_total, // размер массива price[] |
В качестве массива price[] может быть передана одна из ценовых таймсерий либо рассчитанный буфер какого-либо индикатора. Чтобы определить направление индексации в массиве price[], необходимо вызывать функцию ArrayGetAsSeries(). Чтобы не зависеть от умолчаний, необходимо безусловно вызывать функцию ArraySetAsSeries() для тех массивов, с которыми предполагается работать.
Выбор необходимой таймсерии или индикатора в качестве массива price[] производится пользователем при запуске индикатора на закладке "Parameters". Для этого необходимо указать нужный элемент в выпадающем списке поля "Apply to".
Для получения значений пользовательского индикатора из других mql5-программ используется функция iCustom(),
возвращающая хэндл индикатора для последующих операций. При этом также
можно указать необходимый массив price[] или хэндл другого индикатора.
Этот параметр должен передаваться последним в списке входных переменных
пользовательского индикатора.
Пример:
void OnStart() |
В данном примере последним параметром передано значение PRICE_TYPICAL (из перечисления ENUM_APPLIED_PRICE ), которое указывает, что пользовательский индикатор будет построен по типическим ценам, полученным как (High+Low+Close)/3. Если параметр не указывается, то индикатор строится по значениям PRICE_CLOSE, то есть по ценам закрытия каждого бара.
Другой пример, демонстрирующий передачу хендла индикатора последним параметром для указания массива price[], приведен в описании функции iCustom().
Спасибо!
Да вот еще есть такая функция в стандартной библиотеке
int SimpleMAOnBuffer(const int rates_total,const int prev_calculated,const int begin, const int period,const double& price[],double& buffer[])она находиться в файле MovingAverages.mqh
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования