Расчет индикатора внутри эксперта

 

Здравствуйте,

есть задача, рассчитать МА внутри эксперта по массиву.

Имеется библиотека https://www.mql5.com/ru/code/77

В которой имеет смысл использовать скоростные функции: SimpleMAOnBuffer(), ExponentialMAOnBuffer(), SmoothedMAOnBuffer(), LinearWeightedMAOnBuffer().

И имеется пример использования библиотеки в индикаторах https://www.mql5.com/ru/articles/10

А мне нужно использовать ее в эксперте. Мозг уже кипит...)

Вся сложность в ведении переменных

            int rates_total;          // размер массива price[]
            int prev_calculated;   // количество доступных баров на предыдущем вызове
            int begin_my;           // с какого индекса в массиве price[] начинаются достоверные данные

для каждой МА. В примере с индикатором они ведутся автоматически терминалом. А как делать это в эксперте?

Их надо инициализировать при первом расчете и далее изменять при каждом тике (баре).

Хотелось бы универсальное решение, как это сделано с индикаторами:

первоначальная инициализация в отдельной ф-ии iMA_my (наподобие    ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);)

И потом расчет + копирование результатов на каждом новом тике  в отдельной ф-ии CopyBuffer_my ( наподобие  CopyBuffer(ExtHandle,0,0,1,ma);)

Может кто-то делал такое? Или видел где-нибудь?

MovingAverages
MovingAverages
  • голосов: 30
  • 2010.02.04
  • MetaQuotes Software Corp.
  • www.mql5.com
Библиотека MovingAverages содержит функции для вычисления различных скользящих средних.
 
elibrarius:

Здравствуйте,

есть задача, рассчитать МА внутри эксперта по массиву.

Имеется библиотека https://www.mql5.com/ru/code/77

В которой имеет смысл использовать скоростные функции: SimpleMAOnBuffer(), ExponentialMAOnBuffer(), SmoothedMAOnBuffer(), LinearWeightedMAOnBuffer().

И имеется пример использования библиотеки в индикаторах https://www.mql5.com/ru/articles/10

А мне нужно использовать ее в эксперте. Мозг уже кипит...)

Вся сложность в ведении переменных

            int rates_total;          // размер массива price[]
            int prev_calculated;   // количество доступных баров на предыдущем вызове
            int begin_my;           // с какого индекса в массиве price[] начинаются достоверные данные

для каждой МА. В примере с индикатором они ведутся автоматически терминалом. А как делать это в эксперте?

Их надо инициализировать при первом расчете и далее изменять при каждом тике (баре).

Хотелось бы универсальное решение, как это сделано с индикаторами:

первоначальная инициализация в отдельной ф-ии iMA_my (наподобие    ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);)

И потом расчет + копирование результатов на каждом новом тике  в отдельной ф-ии CopyBuffer_my ( наподобие  CopyBuffer(ExtHandle,0,0,1,ma);)

Может кто-то делал такое? Или видел где-нибудь?

А какая МА нужна? Там же просто функции фильтрации. Зачем смотреть примеры для индикатора, загоняйте свои данные в функции и все.
 
Alexey Volchanskiy:
А какая МА нужна? Там же просто функции фильтрации. Зачем смотреть примеры для индикатора, загоняйте свои данные в функции и все.

Нужна SMA.

Просто загнать свои данные не могу, т.к. есть еще    rates_total; prev_calculated;  begin_my; которыми надо правильно управлять.
 
elibrarius:

Нужна SMA.

Просто загнать свои данные не могу, т.к. есть еще    rates_total; prev_calculated;  begin_my; которыми надо правильно управлять.

Вам эти индикаторные переменные не нужны. Вам надо сделать имитацию системы из МТ, которая передает данные в индикатор. Надо:

  1. Определиться, на каком ТФ вы работаете. Так как если надо реагировать на переключение ТФ, все сложнее
  2. На каждом тике проводить фильтрацию по барам от нулевого до Period с помощью этой функции
  3. Использовать полученное значение





  4. Блииииииин я скоро взорвусь от этого форумного движка, из списка не выйти уже..
  5.  

 
Alexey Volchanskiy:

Вам эти индикаторные переменные не нужны. Вам надо сделать имитацию системы из МТ, которая передает данные в индикатор. Надо:

  1. Определиться, на каком ТФ вы работаете. Так как если надо реагировать на переключение ТФ, все сложнее
  2. На каждом тике проводить фильтрацию по барам от нулевого до Period с помощью этой функции
  3. Использовать полученное значение





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

HTML редактировтаь типа не царское дело? 
 
Dmitry Fedoseev:
HTML редактировтаь типа не царское дело? 
А просто надоело уже.
Причина обращения: