Друзья, продолжаю держать вас в курсе разработки робота Scatter&Gather.
Предыстория:
Готовый робот, кстати, уже торгует на реальном счете реальными деньгами. Робота можно скачать на моем сайте ikinvestor.ru. Но у него есть один недостаток.
Улучшеная версия робота Scatter&Gather
Представьте ситуацию, когда вы остановили робота, или он перестал покупать акции по тому, что у вас кончились деньги на счете. Через некоторое время вы запустили робота или добавили денег, чтобы робот смог продолжить торговлю.
Первым делом он смотрит последнюю покупку и выставляет заявки на покупку и продажу от этой цены. Но вот незадача - цена уже другая. Если цена выросла, ничего страшного. Робот v4.0 продает все купленные акции, цена которых ниже текущей + шаг цены в %. А если цена упала?
Повторюсь, в предыдущей версии робот выставляет заявки на покупку и продажу от цены последней купленой акции. Представьте, выставлена заявка на покупку по цене 290 рублей. А текущая цена снизилась до 160 рублей, подение на 44,83%. Когда цена вернется к этим 290 рублей? Робот замрет на месяцы, если не годы. Как поступит в этой ситуации человек? Он на время оставит в покое те старые акции и начнет торговлю по новым ценам, тем самым продолжит получать прибыль. А когда цена вернется к предыдущему уровню - человек продолжит торговлю теми акциями, которые успел закупить ранее.
Вот вам и новшество версии v4.0 - организовать торговлю по более низким ценам, чем было ранее. В результате, эффективность робота повышается, но нужно посторить алгоритм параллельной торговли по новым ценам. В этом и есть фишка робота v4.0.
Ключевые особенности новой версии:
1. Динамический порог - основан на торговом шаге. Если цена упала ниже, чем на два Шага цены в %, то запускается параллельный алгоритм торовли. Напомню, "Шаг цены в %" - это тот шаг, с которым мы вставляем заявки на покупку и продажу от цены последней покупки.
2. Три режима работы:
- Нормальный - обычная торговля
- Мониторинг - отслеживание умеренного расхождения цен. Это когда цена ниже заявки на покупку (1 Шаг цены в %) но выше поргового значения (2 Шага цены в %). Непонятная ситуация, когда робот мониторит в какую сторону пойдет цена. Если вверх - запустится старый алгоритм, если вниз - новый (параллельный)
- Восстановление - параллельная торговля при значительном расхождении
3. Интеллектуальный запуск - добавлена функция, которая анализирует состояние при старте
4. Селективная продажа - продаются только выгодные позиции при росте цены. Это если цена не упала, а, наоборот, выросла, пока робот не работал.
5. Параллельная торговля - отдельный стек для работы при падении цены
6. Автоматическое объединение - возврат к нормальной торговле при восстановлении цен
7. Обработка появления средств - умное возобновление торговли после пополнения счета
Робот написан и готов к тестированию! Но есть проблемка - у меня нет возможности протестировать робота на исторических данных. А на реальных данных нужно ждать, когда цена упадет достаточно для запуска параллельной торговли.
Ждать у моря погоды - это так скучно
Пока я жду нужной ситуации, решил привести в проядок программу. Если вы скачали моего робота, то можете посмотреть каким длинным оказался итоговый скрипт. С ним тяжело работать уже сейчас, а я планирую развивать своего робота дальше. Поэтому я предложил DeepSeek разбить скрипт на отдельные модули и он поддержал это решение.
Почему модульная архитектура целесообразна:
Упрощение разработки - можно править отдельные модули
Переиспользование кода - модули можно использовать в других роботах
Тестируемость - можно тестировать модули по отдельности
Читаемость - код становится структурированным
Безопасность - ошибки в одном модуле не ломают всю систему
Новая архитектура:
- main.lua # Главный скрипт
- config.lua # Конфигурация и параметры
- utils.lua # Вспомогательные функции
- file_manager.lua # Работа с файлами
- data_manager.lua # Получение данных из QUIK
- price_manager.lua # Управление ценами и расчеты
- trading_core.lua # Основная торговая логика
- order_manager.lua # Управление заявками
- recovery_system.lua # Система восстановления
- monitoring.lua # Мониторинг и проверки
- ui.lua # Пользовательский интерфейс
- init.lua # Инициализация состояния
Итого программа на данный момент состоит из 12 файлов, основными по распределению ответственности можно назвать:
- price_manager.lua - все расчеты цен, порогов, адаптация к шагу цены
- data_manager.lua - получение рыночных данных (цены, деньги, заявки)
- trading_core.lua - бизнес-логика торговли (когда и что торговать)
- order_manager.lua - техническая работа с заявками (выставление, отмена)
Перехожу к тестированию модульной версии v4.0M.