Обсуждение статьи "Индикатор от индикатора в MQL5" - страница 2

 

Я поддерживаю пользователя Urain. Как узнать, что содержится в массиве price[] ? Какая именно цена?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{

Если нельзя узнать, то смысл пользоваться массивом price[] тоже пропадает.

Эта проблема встаёт каждый раз при программировании мультивалютного индикатора. Например, мы хотим создать индикатор корреляции между валютами. Массив с ценами у нас уже есть. Это price[]. Загружаем цены второго инструмента. Но какого типа?

Придётся выносить в инпут параметр app_price и загружать два массива с ценами самостоятельно, минуя price[].

Не удобно!

Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
 
EvgeTrofi:

Я поддерживаю пользователя Urain. Как узнать, что содержится в массиве price[] ? Какая именно цена?

а в чем логичность ? ведь не подгонкой занимаемся, а просто расчетом на массиве цен.

но если вам нужно точно делать расчет на конкретной цене - то используйте вызов OnCalculate в первой форме с явным выносом app_price наружу

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
sergeev:

а в чем логичность ? ведь не подгонкой занимаемся, а просто расчетом на массиве цен.

но если вам нужно точно делать расчет на конкретной цене - то используйте вызов OnCalculate в первой форме с явным выносом app_price наружу


Алекс название темы посмотри...

вызываешь ты индикатор от индикатора, который в свою очередь вызывает другой индикатор, все индикаторы построены на OnCalculate по схеме с "price",

как в нижние индикаторы при вызове передать какой app_price требуется.

Согласись не экономно таскать за каждым индюком весь набор прайсов если пользователь чётко определил один. Но если выбрать перегрузку OnCalculate с полным набором то так и будет.

Если же применить урезанную версию OnCalculate и и при этом вынести app_price в инпуты то получится неразбериха, тогда у пользователя будет возможность совершить ошибку указав в инпутах один app_price, а в параметрах другой.


 

Чего сильно не хватает, так это возможности вызова внешнего индикатора, использующего буфер текущего индикатора.

Например, в сделаем допущение, что в поставке нет стохастика.

Я посчитал линию %К поместил в буфер.

Далее мне нужно посчитать линию %D.

И вот здесь я бы вызвал бы внешнюю машку.

Мне ответят посчитай сам, используя буфер %К.

Но что делать:

1, если код сей машки мне не известен и я эту машку купил как откомпилированный индикатор

2. встроенные индикаторы считаются существенно быстрее: чем аналоги на MQL

Так же очень полезна была бы возможность вызова индикаторов и на входной буфер.

М.б, это всё уже есть? тогда дайте, пожалуйста ссылку на документацию.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
VladMsk:

Чего сильно не хватает, так это возможности вызова внешнего индикатора, использующего буфер текущего индикатора.

Например, в сделаем допущение, что в поставке нет стохастика.

Я посчитал линию %К поместил в буфер.

Далее мне нужно посчитать линию %D.

И вот здесь я бы вызвал бы внешнюю машку.


вам наверно надо, чтоб та внешняя машка отвечала такой возможности из документации?


 
sergeev:


вам наверно надо, чтоб та внешняя машка отвечала такой возможности из документации?


Алексей,
Спасибо за потраченное время.
По документации нужно передавать Хэндл ДРУГОГО индикатора,
а я высказался за возможность обрабатывать буфер ТЕКУЩЕГО индикатора.
Далее.
Хэндл ДРУГОГО индикатора возможность передать есть, а вот где указать какой из буферов нужно использовать я не нашёл.

 

я представляю себе кучу вариантов, что именно вам надо. нужны уточнения. много уточнений.

у вас есть индикатор, в буфере которого записаны Close цены баров

вы хотите из этого индикатора вызвать другой индикатор (Например МА) и скормить ему буфер Close

вопрос -

- вы на каком этапе расчета Close это планируете сделать?

- куда вы планируете полувчить результат того второго индикатора?

 
Вот и я решил освоить способы построения индикатора от индикатора и столкнулся с некоторыми проблемами решение которых не нашёл даже в этой статье. Проблемы уже озвученные


Vladislav Eremeev:
Алексей,
Спасибо за потраченное время.
По документации нужно передавать Хэндл ДРУГОГО индикатора,
а я высказался за возможность обрабатывать буфер ТЕКУЩЕГО индикатора.
Далее.
Хэндл ДРУГОГО индикатора возможность передать есть, а вот где указать какой из буферов нужно использовать я не нашёл.


o_O:

я представляю себе кучу вариантов, что именно вам надо. нужны уточнения. много уточнений.

у вас есть индикатор, в буфере которого записаны Close цены баров

вы хотите из этого индикатора вызвать другой индикатор (Например МА) и скормить ему буфер Close

вопрос -

- вы на каком этапе расчета Close это планируете сделать?

- куда вы планируете полувчить результат того второго индикатора?

Много уточнений:

Чтобы было более понятно моё пояснение обратимся к написанию индикатора MACD при условии что его в поставке МТ5 нету... Но зато есть iMA с возможностью передать в качестве ценовой константы хендл индикатора. Но вот незадача, для этого нам потребуется написать индикатор разницы значений МА и отдельно к нему, получив хендл, делать сигнальную линию. А вот внутри, как в mql4 использовать iMAOnArray() возможности нет.

Ещё уточнения:

По какой либо формуле, получили значения индикаторного буфера 0. Затем надо вычислить среднюю этих значений. Иных вариантов как считать по собственной формуле нет? В инклюднике MovingAverages.mqh те-же самые формулы. Это не тот вариант который хотелось-бы выяснить.


Другие много уточнений:

Имеем пользовательский индикатор с двумя или тремя буферами. Задача посчитать среднюю буферов 1 и 2 по отдельности. Получив хендл такого индикатора, есть возможность посредством CopyBuffer() получить значения этих буферов, но нет возможности отправить их в iMA. Как быть?


Если Вас не затруднит... Вопрос не получить результат, а понять как пользоваться возможностью в некоторые технические индикаторы передавать хендл другого индикатора и что можно получить, а чего нельзя.

 

Alexey Viktorov:

Имеем пользовательский индикатор с двумя или тремя буферами. Задача посчитать среднюю буферов 1 и 2 по отдельности. Получив хендл такого индикатора, есть возможность посредством CopyBuffer() получить значения этих буферов, но нет возможности отправить их в iMA. Как быть?

Сделать обертку вокруг этого индикатора, которая копирует определенный буфер, под номером заданным дополнительным параметром в свойствах.

И вот именно его хендл и передавать.

 
Комбинатор:

Сделать обертку вокруг этого индикатора, которая копирует определенный буфер, под номером заданным дополнительным параметром в свойствах.

И вот именно его хендл и передавать.

А поподробней не затруднит?

Как я понял, на основании этого скопированного буфера сделать индикатор, и потом, получив его хендл, уже в следующем индикаторе можно попользовать полученные данные. Или не так?