14 ноя 2025 · 16:17    
{"document": [{"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "6467c6b5-b773-43a0-bb0e-e0959c9d1ad7.jpeg", "filesize": 126010, "height": 577, "pic_id": 1038461, "url": "http://storage.yandexcloud.net/pabliko.files/article_cloud_image/2025/11/14/6467c6b5-b773-43a0-bb0e-e0959c9d1ad7.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YCAJEsyjwo6hiq7G6SgeBEL-l%2F20251114%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20251114T131425Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=350fe7a5b922ba5b179b7054d37ccc413f8969dd01c50e70c2b38aed7220359a", "width": 1024}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Друзья, продолжаю держать вас в курсе разработки робота Scatter&Gather."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Готовый робот, кстати, уже торгует на реальном счете реальными деньгами. Робота можно скачать на моем сайте "}, {"type": "string", "attributes": {"href": "https://ikinvestor.ru/roboty/robot-scattergather-vremya-razbrasyvat-kamni-i-vremya-sobirat-kamni/"}, "string": "ikinvestor. ru"}, {"type": "string", "attributes": {}, "string": ". Но у него есть один недостаток."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Улучшеная версия робота Scatter&Gather"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Представьте ситуацию, когда вы остановили робота, или он перестал покупать акции по тому, что у вас кончились деньги на счете. Через некоторое время вы запустили робота или добавили денег, чтобы робот смог продолжить торговлю."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Первым делом он смотрит последнюю покупку и выставляет заявки на покупку и продажу от этой цены. Но вот незадача - цена уже другая. Если цена выросла, ничего страшного. Робот v4. 0 продает все купленные акции, цена которых ниже текущей + шаг цены в %. А если цена упала?"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Повторюсь, в предыдущей версии робот выставляет заявки на покупку и продажу от цены последней купленой акции. Представьте, выставлена заявка на покупку по цене 290 рублей. А текущая цена снизилась до 160 рублей, подение на 44, 83%. Когда цена вернется к этим 290 рублей? Робот замрет на месяцы, если не годы. Как поступит в этой ситуации человек? Он на время оставит в покое те старые акции и начнет торговлю по новым ценам, тем самым продолжит получать прибыль. А когда цена вернется к предыдущему уровню - человек продолжит торговлю теми акциями, которые успел закупить ранее."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Вот вам и новшество версии v4. 0 - организовать торговлю по более низким ценам, чем было ранее. В результате, эффективность робота повышается, но нужно посторить алгоритм параллельной торговли по новым ценам. В этом и есть фишка робота v4. 0."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Ключевые особенности новой версии:"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "1. Динамический порог - основан на торговом шаге. Если цена упала ниже, чем на два Шага цены в %, то запускается параллельный алгоритм торовли. Напомню, «Шаг цены в %» - это тот шаг, с которым мы вставляем заявки на покупку и продажу от цены последней покупки."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "2. Три режима работы:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Нормальный - обычная торговля"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Мониторинг - отслеживание умеренного расхождения цен. Это когда цена ниже заявки на покупку (1 Шаг цены в %) но выше поргового значения (2 Шага цены в %). Непонятная ситуация, когда робот мониторит в какую сторону пойдет цена. Если вверх - запустится старый алгоритм, если вниз - новый (параллельный)"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Восстановление - параллельная торговля при значительном расхождении"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "3. Интеллектуальный запуск - добавлена функция, которая анализирует состояние при старте"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "4. Селективная продажа - продаются только выгодные позиции при росте цены. Это если цена не упала, а, наоборот, выросла, пока робот не работал."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "5. Параллельная торговля - отдельный стек для работы при падении цены"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "6. Автоматическое объединение - возврат к нормальной торговле при восстановлении цен"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "7. Обработка появления средств - умное возобновление торговли после пополнения счета"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Робот написан и готов к тестированию! Но есть проблемка - у меня нет возможности протестировать робота на исторических данных. А на реальных данных нужно ждать, когда цена упадет достаточно для запуска параллельной торговли."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Ждать у моря погоды - это так скучно"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Пока я жду нужной ситуации, решил привести в проядок программу. Если вы скачали моего робота, то можете посмотреть каким длинным оказался итоговый скрипт. С ним тяжело работать уже сейчас, а я планирую развивать своего робота дальше. Поэтому я предложил DeepSeek разбить скрипт на отдельные модули и он поддержал это решение."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Почему модульная архитектура целесообразна:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Упрощение разработки - можно править отдельные модули"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Переиспользование кода - модули можно использовать в других роботах"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Тестируемость - можно тестировать модули по отдельности"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Читаемость - код становится структурированным"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Безопасность - ошибки в одном модуле не ломают всю систему"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Новая архитектура:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "main. lua # Главный скрипт"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "config. lua # Конфигурация и параметры"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "utils. lua # Вспомогательные функции"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "file_manager. lua # Работа с файлами"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "data_manager. lua # Получение данных из QUIK"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "price_manager. lua # Управление ценами и расчеты"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "trading_core. lua # Основная торговая логика"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "order_manager. lua # Управление заявками"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "recovery_system. lua # Система восстановления"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "monitoring. lua # Мониторинг и проверки"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "ui. lua # Пользовательский интерфейс"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "init. lua # Инициализация состояния"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Итого программа на данный момент состоит из 12 файлов, основными по распределению ответственности можно назвать:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "price_manager. lua - все расчеты цен, порогов, адаптация к шагу цены"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "data_manager. lua - получение рыночных данных (цены, деньги, заявки)"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "trading_core. lua - бизнес-логика торговли (когда и что торговать)"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "order_manager. lua - техническая работа с заявками (выставление, отмена)"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Перехожу к тестированию модульной версии v4. 0M."}], "attributes": []}], "selectedRange": [3689, 3707]}
Комментарии 5