Обсуждение статьи "Как перенести расчетную часть любого индикатора в код эксперта" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
@Dmitriy Gizlyk Очень хорошая статья. Я внедрил ваш код в свой советник и понял, что индикатор не строится на графике. Как мне построить этот индикатор, созданный внутри советника, на графике?
Спасибо.
Жоао Луис Са Марчиоро:
Я искал что-то подобное. Большое спасибо. Отличная статья.
Здравствуйте, вы реализовали этот пример? Я реализовал его и понял, что индикатор не строится на графике. Я пробовал и исследовал различные способы, но безуспешно. Можно ли построить индикатор в коде советника, как это было сделано в исследовании выше?
@Dmitriy Gizlyk Очень хорошая статья. Я внедрил ваш код в свой советник и понял, что индикатор не строится на графике. Как мне построить этот индикатор, созданный внутри советника, на графике?
Спасибо.
В статье представлен метод переноса математической части индикатора в советник. Такой подход применим для ускорения расчетов и скрытия индикатора от пользователя. Вывести индикатор из советника, как и индикатор, невозможно. Для его отображения придется создавать графические объекты на графике для каждого движения. Этот процесс займет много времени у программиста и будет стоить вычислительных ресурсов при использовании. Если вам нужен индикатор на графике, нет смысла переносить его код в советник, проще использовать сам индикатор. Чтобы перенести советник с индикатором с помощью файла, можно воспользоваться функционалом ресурса.
DMITRIY GIZLYK, спасибо за статью.
Интересует вопрос многопоточности, можно ли как-то класс запустить параллельно, на отдельном ядре процессора? Вы упомянули в конце статьи "преимущество может быть нивелировано многопоточной архитектурой MetaTrader 5".
Да, в статье сразу написано, что расчет делается по закрытым свечам. Для расчета на каждом тике нужно из кода убрать проверку открытия нового бара и копировать историю с "0" бара, а не с "1", как сейчас.
Я правильно понял, для работы с полным набором данных таймсерий нужно добавить массивы кроме этого:
То есть если индикатор обращается к разным данным по барам - времени time[], максимальной и минимальной цене high[] low[], то нужно добавить еще 3 массива аналога m_source_data и скопировать туда данные в CIndicator::LoadHistory,
а так как функция виртуалка, то можно её переписать прямо в индикаторе?
Вот здесь вылетает ошибка, если сделать больше одного буфера
array out of range in 'Indicator.mqh' (156,20)
UPD: добавил в начале функции строчку и проблема решилась.
ArrayResize(ar_IndBuffers,m_buffers,m_buffers);Еще раз огромное спасибо за статью, всё получилось! Самое интересное, что в таком исполнении работает быстрее. Мой стрелочный индикатор использует запрос тиков через функции CopyTicksRange и CopyTicks, что вызывало массу глюков и приводило зачастую к неверным данным. Через class всё работает как часы. Связываю это с тем, что CopyTicksRange и CopyTicks в индикаторах работают несколько иначе, система не дает им время на синхронизацию.
ps. кто будет переносить стрелочные индикаторы с несколькими буферами, учтите, требуются правки функций Indicator.mqh
ну и метод записи и получения данных из индикаторных буферов ar_IndBuffers для стрелочника другой
Привет, ребята,
У меня есть индикатор, который я сам запрограммировал в mql5, и я хотел бы вызывать информацию из буфера этого индикатора в советнике, который я программирую. Не могли бы вы помочь мне, как это сделать? Помогут ли мне коды, приведенные в статье?
Спасибо
Персонал,
У меня есть индикатор, который я сам запрограммировал в mql5, и я хотел бы вызывать информацию из буфера этого индикатора в советнике, который я программирую. Не могли бы вы помочь мне, как это сделать? Помогут ли мне коды, приведенные в статье?
Спасибо
Добрый вечер
Ознакомьтесь с функцией iCustom