Найти в Дзене
Старый биржевик

Торговый робот Scatter&Gather опубликован, но в lite-версии

Почему именно облегченная версия? Все просто. Я задался целью сделать для себя торгового робота, в процессе работы выкладывал несколько промежуточных версий, потом удалял их из-за серьезных недочетов, которые сам и выявлял. В итоге я решил не выкладывать промежуточные версии вообще. Робот пишется, обрастает возможностями, но и усложняется, само собой. Усложнения же приводят к увеличению ошибок, а разросшийся код программы затрудняет их поиск. В один "прекрасный" момент я зашел в тупик — во время торговли на реальном счете несколькими акциями пошли ошибки — QUIK отказывался совершать покупки, хотя денег она счету было достаточно. Я вводил дополнительные проверки, усложнял условие покупок, но ни чего не менялось. У меня не корректно работал блок линейной регрессии, а вместо этого я занимался ошибкой, которой раньше не было и вдруг появилась на ровном месте. Я грешил на ML-модуль, но связь с ошибкой найти не удавалось. И я сдался. Убрал все лишнее. Оставил голую функцию купли-продажи. По
Оглавление

Почему именно облегченная версия? Все просто. Я задался целью сделать для себя торгового робота, в процессе работы выкладывал несколько промежуточных версий, потом удалял их из-за серьезных недочетов, которые сам и выявлял. В итоге я решил не выкладывать промежуточные версии вообще. Робот пишется, обрастает возможностями, но и усложняется, само собой. Усложнения же приводят к увеличению ошибок, а разросшийся код программы затрудняет их поиск.

Как родилась lite-версия

В один "прекрасный" момент я зашел в тупик — во время торговли на реальном счете несколькими акциями пошли ошибки — QUIK отказывался совершать покупки, хотя денег она счету было достаточно. Я вводил дополнительные проверки, усложнял условие покупок, но ни чего не менялось. У меня не корректно работал блок линейной регрессии, а вместо этого я занимался ошибкой, которой раньше не было и вдруг появилась на ровном месте. Я грешил на ML-модуль, но связь с ошибкой найти не удавалось. И я сдался. Убрал все лишнее. Оставил голую функцию купли-продажи. Потом подумал и добавил модули прогона на исторических данных. Они не могли быть причиной ошибки, но я все же сделал возможность отключения этой функции. Потом подумал и решил, что робот должен быть защищен от сильных просадок и вернул ML-модуль, упростив его насколько это возможно — робот видит тренды, но реагирует только на один — сильное падение. В этом случае он прекращает торговлю.

В чем была проблема

Запустил робота и что я увидел? Правильно — ничего не изменилось. Я добавил возможность отключения и этого модуля полностью. И ничего… QUIK отказывает в выставлении покупки. Торгуют 4 робота, денег на счету достаточно, а заявки на покупку отклоняются. Я потратил на эту ситуацию 2 дня, перебрал все, что можно. И наконец, мне попалось на глаза, что количество денег на счету робот отображает неверно — 2,5 тыс. вместо 1,9 тыс. Полез искать в QUIK и нашел таблицу по деньгам. Там есть столбцы по входящему и текущему остатку. Так вот робот получал входящий остаток, а нужно было — текущий. Но и текущего остатка было достаточно для торговли, значит причина не в этом. Зато я нашел в таблице еще 2 параметра — заблокировано и доступно. И меня осенило — под заявку на покупку резервируются средства и, хотя они есть на счету, для новых покупок их использовать нельзя. Самое смешное, я знал об этом, но не придал значения. Теперь робот использует не наличие средств на счету, а наличие доступных средств. При их нехватке заявка на покупку не выставляется. Ошибку QUIK перестал выдавать.

Заключение

И вот теперь у меня есть робот, торгующий на реальном счету реальными деньгами, а его полную версию я могу дорабатывать не спеша. В конце концов, я хочу не только развивать робота, но и торговать. А раз все так сложилось, решил этой lite-версией поделиться с вами, ее можно скачать на сайте ikinvestor.ru. Подробная инструкция внутри архива.