Прошла еще неделя и я снова по уши в трудах. Несмотря на неоднократные заявления, что все уже сделано и делать больше ничего не хочу и не буду. Но заявления заявлениями, а реальность немного другая.
Первое, что нужно было сделать, это увязать в систему и в программы «неожиданно» выскочивший положительный эффект от использования более точных и/или более сложных фильтров.
Неожиданность конечно условная, фильтры были запрограммированы достаточно давно, и индикаторы и роботы на их основе тоже были реализованы и лежали на дальней полке в ожидании своего часа.
Час наступил, когда была реализована автоматическая настройка, которая и позволила выявить потенциал более сложных методов фильтрации.
Сгоряча я хотел идти еще дальше, использовать еще более сложные фильтры более высокого порядка. Но вовремя остановился. И так нерешенных проблем еще хватает. Проблемы эти в основном технического характера, но тем не менее сами они не устранятся. Кто-то должен сделать и эту работу.
В чем суть проблем?
Ну первая проблема — это увязка параметров всего комплекса инструментов SWT-метода.
Есть робот, в котором задаются параметры автоматической торговли. И есть индикаторы, которые иллюстрируют состояние рынка и его характеристики, и в этих индикаторах также задаются определенные параметры. А вот согласования между параметрами робота и индикаторов никакого. Т.е. нужно и там и там задавать все вручную, да еще не ошибиться, чтобы однотипные настройки робота и системы индикаторов совпадали. Занятие не из приятных, особенно если торгуется туева хуча инструментов и роботов на этих инструментах.
Поэтому было принято кардинальное решение. Если на график какого-либо инструмента сброшен модуль торгового робота, то этот робот принимает на себя управление параметрами всех индикаторов и этого графика и других графиков по данному инструменту, независимо от собственных установок в индикаторах.
При удалении робота внешнее управление с его стороны отключается, а эстафету принимает базовый индикатор SWT, который в свою очередь начинает управлять параметрами остальных индикаторов метода, сброшенных на графики.
При удалении базового индикатора SWT начинают работать параметры автономной настройки оставшихся индикаторов.
Вторая проблема, которая вылезла довольно неожиданно — это быстродействие компьютера. Проблем с быстродействием не возникало в принципе, пока не возникла необходимость расширить диапазон свечей (баров) активных графиков в связи с увеличением порядка фильтров, которым требуется больше данных. И тут включились тормоза. При работе с 24-мя инструментами включение терминала не всегда происходило успешно, так как при включении пересчитывается весь диапазон значений индикаторов, дальше обновляются только последние бары. Можно конечно было грузить пустой профиль, а потом поочередно заполнять его окнами графиков с индикаторами и роботом и больше не выключать компьютер — пусть работают. Но это не дело. Пришлось искать другие решения. И они нашлись.
Дело в том, что в силу природной лени я использовал каскадную схему работы индикаторных модулей. В каждом модуле реализовывалась определенная функция, и при необходимости из программного кода этого индикатора вызывался соответствующий модуль другого индикатора и производил все расчеты. Это очень экономило силы в написании кодов программ, но в силу совершенно естественных причин тормозило расчеты. Всего каскадов было три. Первичный модуль цифровой фильтрации, базовый модуль индикатора SWT и вспомогательные модули плюс робот.
Устранение одного каскада за счет совмещения функций цифровой фильтрации и базового модуля SWT в одном блоке позволило повысить быстродействие в 2-3 раза.Выигрыш колоссальный, все проблемы исчезли или по крайней мере частота их проявления снизилась до незаметной.
Следующий этап — переход к однокаскадной схеме, когда внутри каждого модуля рассчитывается всё необходимое, должен дать еще более высокую скорость расчетов. Но коды становятся чересчур громоздкими, и я пока что не решаюсь браться за эту проблему — и глаза боятся, и руки делать не хотят. И так код робота уже превысил тысячу строк и только модульная организация структуры программы позволяет не запутаться в этой мешанине операторов и команд.
Вот такой краткий отчет.
Да, с центовым счетом, пока шла отладка программ, случилась пара сбоев из-за ошибок кода, и работа на нем приостановлена. Возможно на следующей неделе возобновим.
Для более серьезной работы в четверг открыт счет на $1000. Деньги небольшие, но для меня уже что-то значат, и просто выбрасывать на помойку их не стоит. Поэтому с понедельника начну постепенно и по возможности аккуратно и осторожно вводить на этот счет новые инструменты и включать для них копии робота.
_______________________________________________________________
Тест: Роботы, роботы...
Реальный (USD), RoboForex, Технический, Автоматизированный, 1:1000, MetaTrader 4
Депозит — $1000. Тест начат 21 сентября 2017 года.