Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опасное заблуждение.
Но мой массив редко бывает равным колличеству баров в чарте. Иногда меньше, иногда больше.
Меня тревожит то, что он может быть больше.
Во первых, кто мешает иметь внутренний массив данных, такой же как буфер индикатора, и заполнять его аналогично.
А что целесообразнее в смысле экономии ресурсов, считать в индикаторе или считать то же самое в советнике, что быстрее пробовали?
Но мой массив редко бывает равным колличеству баров в чарте. Иногда меньше, иногда больше.
Меня тревожит то, что он может быть больше.
Напрасно тревожитесь, Алексей.
Ситуаций может быть, когда такое необходимо, гугильён.
Например.
В основном я использую данные минутных баров или тики, вне зависимости от ТФ.
Это очень неправильно и расточительно, когда при каждой смене ТФ ваш эксперт должен пересчитывать все буферные индикаторы. У меня такого не происходит.
Поэтому если я на недельном ТФ, то понятное дело массив мой будет гораздо больше количества баров в чарте.
Про тики вообще молчу.
Как правило, у меня несколько массивов структур и индексные массивы для увеличения производительности и экономии памяти. Их размерность может быть самая разная.
Вообще, когда вы используете индикаторы через iCustom, вы очень ограничены во многих вещах.
Вы жестко привязаны к размеру массиву, равному количеству баров в чарте. А если там у вас стоит unlimited?
Вы привязаны только к одному типу double. Про массив структур можете даже и не мечтать.
С color индикаторами вообще смех. 8 байт на каждый бар - явный перебор.
Индикаторные буферы очень расточительны в плане потребления памяти.
Тем более доступ у вас к буферам только через CopyBuffer, даже если вам нужен только один последний бар. В любом случае эта операция значительно медленнее, чем простое обращение к элементу массива.
ЗЫ конечно если вы используете стандартные встроенные индикаторы типа iMA, то можно сильно не заморачиваться. Но все же я думаю, речь здесь именно о пользовательских индикаторах. Сомневаюсь, что профи используют встроенные индикаторы для реальной торговли.
А что целесообразнее в смысле экономии ресурсов, считать в индикаторе или считать то же самое в советнике, что быстрее пробовали?
Частично ответил в предыдущем посте.
Это чрезвычайно объемный вопрос и его лучше задавать разработчикам, причем именно тем кто отвечает за многопоточность.
Я в этом вопросе не являюсь специалистом. Но могу поделиться своими соображениями. Если в чем-то ошибаюсь, то пожалуйста поправьте, если точно это знаете.
Как известно, каждый эксперт работает в отдельном собственном потоке, а все индикаторы одного инструмента (даже в разных чартах) работают в одном общем потоке.
Поэтому можно предположить, что если символ не перегружен индикаторами, то работа эксперта и расчета индикаторного буфера будет происходить паралельно и даже в разных ядрах процессора, если повезет и планировщик ОС найдет для вашего индикаторного потока отдельное ядро процессора. И вполне возможно что результат будет при такой схеме более производительный. Насколько велика вероятность заполучить отдельное ядро для индикаторного потока - не знаю, но думаю не очень высокая.
Но существуют такие понятия как скорость переключение контекста потоков и много других тонкостей взаимодействия нескольких потоков. Я знаю что у потоков эта скорость переключения очень высокая по сравнению с процессами, но это все равно не бесплатно.
Тем более как я уже говорил, что доступ к элементу буфера индикатора через CopyBuffer будет стоить дороже? чем к элементу массива по его индексу.
Так же возможность оптимизации ненужных вычислений, размеров внутренних массивов данных и их индексация внутри эксперта дает очень большой потенциал для уменьшения ресурсозатрат.
Конечно чтобы полноценно ответить на Ваш вопрос - нужны эксперименты и правильные тесты. Но я все же больше склоняюсь к тому, что более производительнее в среднем это - все в одном потоке эксперта.
И каждый раз бегать в цикле? С ЕМА будет еще интересней.
Используйте однопроходный алгоритм расчета экспоненциально взвешенного среднего
ma = (1 - a) * price + a * ma
Нормальный индикатор считает все бары только на запуске, а потом досчитывает 1 бар. В индикаторе легко сделать SMA так, что даже при досчете 1-го бара не понадобится елозить в цикле по всему периоду МА.
Конечно, можно и в эксперте сделать буферы из массивом... Но зачем, если есть специально проработанный элемент - индикаторы?
Так в чём, собственно говоря, проблема? Появился новый бар - учли его.
Хочется чтобы советник не был привязан к индикатору. И рассчитывал бары и брал сигналы на покупку/продажу внутри себя. Возможно ли такое?
Используйте однопроходный алгоритм расчета экспоненциально взвешенного среднего
ma = (1 - a) * price + a * ma
Так неверно!
Правильно так:
ma[i] = (1 - a) * price + a * ma[i+1]
т.е. необходим массив, необходимая глубина которого зависит от параметра а.
Иначе будет полная ерунда, во всяком случае, до тех пор, пока будет длиться переходный процесс, который может проходить довольно долго, в зависимости от параметра а.
Всё это легко проверить, сравнив показания индикатора и соответствующие расчёты в эксперте.Конечно, можно и в эксперте сделать буферы из массивом... Но зачем, если есть специально проработанный элемент - индикаторы?
у меня есть проблема с пропусками сигналов от индикатора, рекомендацию никто не дал
https://www.mql5.com/ru/forum/365021
принты показали, что приходит событие от индикатор шпиона, проходит проверку нового бара, и там данные прошлого бара, а не нового
одновременно в 3 терминалах тестировал, оба пропуска были в одном из трех терминалов, может случайность