Теория ускорения работы советника при использовании пользовательского индикатора (функция - iCustom) - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Значит солянка из нужных индикаторов будет работать быстрей, чем использование индикаторов по отдельности - так меньше раз будет запрошена информация о котировках?
Не существенно. Надо следить, чтобы вычисления не дублировались. Если в двух индикаторах предварительные вычисления одинаковые, то стоит объединить их в один. Так просто лепить в один все индикаторы не стоит.
Проблем с запросом котировок не существует. Их не надо запрашивать, они сами приходят.
Пробовал использовать задержку по времени для пересчета индикатора:
При тестировании на "OHLСнаМ1" разницы почти нет, возможно тестирование на "всех тиках" будет проходить быстрее.
мое впечатление как работает iCustom (если за 2 последних месяца ни чего не поменяли)
при вызове индикатора из iCustom
будут рассчитаны все буферы для возможной истории и результаты загнанные в кеш, также будет привязка кеша к параметрам и имени индикатора
если следующий раз вызвать тот же индикатор и те же параметры для второго индексного массива - результат вернется с кеша (+ поправка на новые данные истории)
если вызвать тот же индикатор, но изменить хоть один параметр - происходит полный расчет все буферов для возможной истории и сохранение еще одного кеша, но с привязкой уже к новым параметрам.
Из эксперта можно указать сколько истории надо загрузить, если сделать такой параметр в индикаторе, но при таком вызове надо постоянно передавать одно и то же число - размер истории.
(повлияет на скорость первого вызова iCustom)
Так же можно попытаться убрать расчет ненужных буферов если это возможно, как в самом индикаторе так и через параметр индикатора, как в примере с размером истории
(уменьшит размер кеша - увеличит скорость расчета)
Всем спасибо за информацию.
Хочу уточнить, если в индикаторе с 5 граф буферами использовать не графический буфер, а обычный массив - вывод данных сделать через один графический буфер, как я предложил, то скорость работы советника при оптимизации будет больше, так как памяти для индикатора будет выделено меньше, а соответственно и время на работу с ней будет тратиться меньше?
Если происходит оптимизация и настройки индикатора не меняются на каждом из проходов, то происходит ли перерасчет индикатора?
Всем спасибо за информацию.
Хочу уточнить, если в индикаторе с 5 граф буферами использовать не графический буфер, а обычный массив - вывод данных сделать через один графический буфер, как я предложил, то скорость работы советника при оптимизации будет больше, так как памяти для индикатора будет выделено меньше, а соответственно и время на работу с ней будет тратиться меньше?
Если происходит оптимизация и настройки индикатора не меняются на каждом из проходов, то происходит ли перерасчет индикатора?
Буфер - это и есть массив, только удобный для отображения данных.
При оптимизации индикатор рассчитывается каждый раз заново.
Буфер - это и есть массив, только удобный для отображения данных.
Я понимаю, что массив, но массив для расчета индикатора может быть гораздо меньше - часто динамичным.
К примеру в истории 1000 баров - пользовательский индикатор отрисовывает 3 SMA - 5/8/10.
При стандартном варианте у нас будет забит графический буфер на почти 3000-10-8-5
А если использовать мой метод, то:
для расчета SMA(5) нужен массив размером (извиняюсь за терминологию) в 4 бара
для расчета SMA(8) нужен массив размером (извиняюсь за терминологию) в 7 баров
для расчета SMA(10) нужен массив размером (извиняюсь за терминологию) в 9 баров
и графический массив в 1000 баров, в итоге нужно занимать память 1000+4+7+9 так как массивы будут просто перезаписываться.
Где я не прав?
Всем спасибо за информацию.
Хочу уточнить, если в индикаторе с 5 граф буферами использовать не графический буфер, а обычный массив - вывод данных сделать через один графический буфер, как я предложил, то скорость работы советника при оптимизации будет больше, так как памяти для индикатора будет выделено меньше, а соответственно и время на работу с ней будет тратиться меньше?
Если происходит оптимизация и настройки индикатора не меняются на каждом из проходов, то происходит ли перерасчет индикатора?
Я понимаю, что массив, но массив для расчета индикатора может быть гораздо меньше - часто динамичным.
К примеру в истории 1000 баров - пользовательский индикатор отрисовывает 3 SMA - 5/8/10.
При стандартном варианте у нас будет забит графический буфер на почти 3000-10-8-5
А если использовать мой метод, то:
для расчета SMA(5) нужен массив размером (извиняюсь за терминологию) в 4 бара
для расчета SMA(8) нужен массив размером (извиняюсь за терминологию) в 7 баров
для расчета SMA(10) нужен массив размером (извиняюсь за терминологию) в 9 баров
и графический массив в 1000 баров, в итоге нужно занимать память 1000+4+7+9 так как массивы будут просто перезаписываться.
Где я не прав?
Если нужно значение на одном баре, то буфер действительно не нужен. Как и индикатор ;)
А если нужно значение индикатора на каждом баре, то часто экономнее будет рассчитать все, а потом досчитывать только новый бар.
И далеко не все алгоритмы такие простые, как SMA, их просто не получится рассчитать "для 5-ти баров". Посмотрите хотя бы зиг-заг.
Больше всего меня смущает, что вы не пробуете применять полученные ответы на практике. Такое ощущение, что и задачи практической нет, только теоретические изыски.
Тогда я не понимаю, зачем принимаю в этом участие.
МТ4, кстати, прекрасно справляется с расчетом только части истории и не съедает память под весь буфер, если цикл идет по последним 1000 барам (даже если "в окне" - 50000).
А вот в МТ5 я с этой проблемой столкнулся - память выделяется под все 50000 баров, даже если считать только последние 100.
Если нужно значение на одном баре, то буфер действительно не нужен. Как и индикатор ;)
Почему же на одном баре? Речь шла лишь о том, что для расчета значения индикатора редко требуется знание всех его же показателей за всю историю времени. Поэтому и написал, что буфера (массивы) будут использоваться только для расчета, а вот результат расчета 3х МА будет сводно храниться в одном графическтом буфере.
Касаемо Zig-zag - это сейчас для меня головная боль - требуется ряд ответов, но я открою отдельную тему.
Больше всего меня смущает, что вы не пробуете применять полученные ответы на практике. Такое ощущение, что и задачи практической нет, только теоретические изыски.
Тогда я не понимаю, зачем принимаю в этом участие.
Дело в том, что я сам не программирую - изыскания помогут в составлении тех задания. Сейчас ведется разработка индикатора, который будет составляющим движка советника - в нём много буферов, вот я и думаю, как ускорить работу советника не путем интеграции индикатора в код, а иными методами.
А ещё надеялся, что будет кому либо интересно попробовать на деле такой алгоритм - произвести сравнение по скорости работы...
МТ4, кстати, прекрасно справляется с расчетом только части истории и не съедает память под весь буфер, если цикл идет по последним 1000 барам (даже если "в окне" - 50000).
А вот в МТ5 я с этой проблемой столкнулся - память выделяется под все 50000 баров, даже если считать только последние 100.
Печальный факт для пятерки, а разработчики не поясняют сакральный смысл сего?