Здравствуйте,
есть задача, рассчитать МА внутри эксперта по массиву.
Имеется библиотека 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);)
Может кто-то делал такое? Или видел где-нибудь?
А какая МА нужна? Там же просто функции фильтрации. Зачем смотреть примеры для индикатора, загоняйте свои данные в функции и все.
Нужна SMA.
Просто загнать свои данные не могу, т.к. есть еще rates_total; prev_calculated; begin_my; которыми надо правильно управлять.Нужна SMA.
Просто загнать свои данные не могу, т.к. есть еще rates_total; prev_calculated; begin_my; которыми надо правильно управлять.Вам эти индикаторные переменные не нужны. Вам надо сделать имитацию системы из МТ, которая передает данные в индикатор. Надо:
- Определиться, на каком ТФ вы работаете. Так как если надо реагировать на переключение ТФ, все сложнее
- На каждом тике проводить фильтрацию по барам от нулевого до Period с помощью этой функции
- Использовать полученное значение
- Блииииииин я скоро взорвусь от этого форумного движка, из списка не выйти уже..
Вам эти индикаторные переменные не нужны. Вам надо сделать имитацию системы из МТ, которая передает данные в индикатор. Надо:
- Определиться, на каком ТФ вы работаете. Так как если надо реагировать на переключение ТФ, все сложнее
- На каждом тике проводить фильтрацию по барам от нулевого до Period с помощью этой функции
- Использовать полученное значение
- Блииииииин я скоро взорвусь от этого форумного движка, из списка не выйти уже..
HTML редактировтаь типа не царское дело?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,
есть задача, рассчитать МА внутри эксперта по массиву.
Имеется библиотека 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);)
Может кто-то делал такое? Или видел где-нибудь?