12 фев 2026 · 17:05    
{"document": [{"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "6ac22ed4-ff8c-46ac-95ba-771b12b01424.jpeg", "filesize": 129846, "height": 576, "pic_id": 1048212, "url": "http://storage.yandexcloud.net/pabliko.files/article_cloud_image/2026/02/12/6ac22ed4-ff8c-46ac-95ba-771b12b01424.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YCAJEsyjwo6hiq7G6SgeBEL-l%2F20260212%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20260212T140239Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=eeca980835c2cb0071284e7707997f19de5f03961bcee2d0fe2e6154d31a7dc1", "width": 1024}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Знаете, есть два способа потерять деньги на бирже. Первый — торговать самому, мужественно принимая все удары судьбы. Второй — попытаться автоматизировать первый способ и наблюдать за этим со стороны, попивая остывший чай. Я выбрал второй. И теперь у меня есть Scatter&Gather, а скоро будет еще и TrendPlus. Это конечно же шутка, но в каждой шутке есть доля правды, не так ли?"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Не думайте, я не из тех наивных романтиков, которые верят, что можно написать скрипт за вечер и проснуться миллионером. Я прекрасно знаю, на что иду. Просто однажды поймал себя на мысли: я слишком много смотрю на графики и слишком часто говорю экрану «ну почему ты не купил, идиот». И решил: пусть теперь экран сам отвечает за свои ошибки. Справедливо же?"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Четыре круга алгоритмического ада, или Как робот выбирает, куда вложить мои нервы"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Весь процесс работы TrendPlus разбит на четыре этапа. Я специально сделал их последовательными, а не параллельными. Параллельные процессы — это как пытаться гладить кошку и играть на пианино одновременно. Вроде обе руки заняты делом, но кошка уходит, а соседи стучат по батареям."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Первый этап — отбор кандидатов"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Робот берет топ-30 акций Московской биржи по объему торгов. Не по капитализации, не по красивым названиям, а именно по тому, сколько раз их толкнули локтем в толпе. Знаете, как в школе: популярные дети всегда в центре внимания, даже если дневник их не радует. Так и здесь. Если акцию сегодня много покупают и продают — значит, вокруг нее что-то происходит. А где движение, там и тренд. Или, наоборот, паника. Но это мы выясним позже."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Второй этап — собеседование"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Из этих тридцати счастливчиков TrendPlus должен выбрать одного. Всего одного. Как в «Голосе», только вместо кресел — свечные графики, а вместо наставников — скользящие средние. Я научу робота смотреть на индикаторы технического анализа. Иногда мне снится, как мой робот сидит, перебирает паттерны, вздыхает (мысленно), сравнивает скользящие средние. Ему не нравятся перекупленные активы. Ему не нравятся те, кто слишком долго стоит на месте. Он ищет того, кто уже разбежался, но еще не взлетел. Идеальный момент."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Тут, кстати, кроется главная разница между мной и машиной. Я, глядя на график, могу сказать: «О, смотри,» чашка с ручкой «, классика!» А чтобы робот эту чашку увидел, нужно написать длиннющий код. Придется каждую «красивую свечку» переводить на язык математики. Понимаю, что это будет утомительно. Но и увлекательно!"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Третий этап — поиск точки входа"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Самый волнубщий момент. TrendPlus вычисляет, когда именно нажать кнопку «Купить». Чуть раньше — цена уйдет в минус. Чуть позже — поезд ушел, хвостом помахал, спасибо за участие. Я сравниваю это с танцами. Важно не просто услышать ритм, а шагнуть точно в такт."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Четвертый этап. Фиксация прибыли"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Или, если мы пессимисты, фиксация убытков. Мне кажется, что это самое сложное из того, что я пытался запрограммировать. Потому что рынок — тот еще манипулятор. Он делает вид, что тренд будет длиться вечно, а потом резко разворачивается и убегает, прихватив с собой ваш депозит."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Я буду честно стараться заложить в TrendPlus адекватные правила выхода. Трейлинг-стоп, который ползет за ценой как верный пёс. Стоп-лосс — на случай, если пёс вдруг облаял не того. Но каждый раз, глядя на историю своих ручных сделок, я вижу одно и то же: либо выскочил слишком рано, не дав прибыли вырасти, либо сидел в позиции до последнего, надеясь на лучшее. Уверен, робот будет более последовательным, более дисциплинированным и более успешным, чем я."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Скучное, но важное: что происходит под капотом"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Пока робот делает вид, что думает о высоких материях, под капотом копошатся скучные, но жизненно необходимые механизмы. Знаете, как в театре: зритель видит Гамлета, а за кулисами монтировщики двигают декорации и тихо матерятся. У меня эти монтировщики — системы контроля и логирования."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Например, я потратил три вечера на то, чтобы научить TrendPlus отличать работающую биржу от формально открытой. Казалось бы: проверил расписание — и работай. Но нет, расписание может измениться, биржа может закрыться на праздники. Как же тогда проверить, работает ли биржа? QUIK не дает информации о том, идут ли торги. Но может сообщить, торгуется ли конкретная акция. И в Scatter&Gather я решил эту проблему, получая от QUIK информацию, совершаются ли сделки по моей акции. Но беда в том, что в TrendPlus изначально нет определенной акции. Работа начинается со всеми акциями сразу. Проверять наличие торгов по всем акциям — избыточная деятельность, излишне нагружающая QUIK. Провести проверку по одной (любой) акции — а вдруг именно по ней сейчас торги остановлены…"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Чтобы решить эту проблему, я создал систему-индикатор на основе трех акций-тяжеловесов: Газпром, Роснефть, Сбербанк. Если они дышат ровно, значит, рынок жив. Если замерли — уходим в наблюдатели."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Еще я научил робота писать дневник. Ну ладно, сохранять логи. Каждое действие, каждая ошибка, каждая секунда раздумий записывается в лог-файлы. Они аккуратно складываются в отдельную папку, ротируются, архивируются. Это не просто записи. Это исповедь машины. Когда случается какой-либо сбой, я не злюсь. Я открываю логи и пытаюсь понять, где именно мой код предал меня."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "И да, задержки. Я намеренно замедлил робота. Он не должен пытаться делать всё и сразу: анализировать, покупать, проверять, снова анализировать. Для этого между этапами стоит пауза. Десять секунд. Выдох. Собраться. Продолжить. Это как научить гиперактивного щенка ждать команды. Помогает."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Куда мы движемся (и движемся ли вообще)"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Если честно, прямо сейчас TrendPlus — это недострой. Работают подготовительная стадия и первый этап. Второй, третий и четвертый — в процессе обдумывания, а пока всего-лишь заглушки. Особенно четвертый. Особенно выход из сделки."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Я иногда думаю: может, я просто перекладываю свою нерешительность на код? Может, не робот боится закрывать позицию, а я сам не готов принять убыток или остановить прибыль? Программирование — штука интимная. Ты передаешь машине свои привычки, свои страхи, свои дурацкие надежды на «а вдруг откат». И она честно их выполняет. И винить, кроме себя, некого."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Но сдаваться я не собираюсь. Впереди — настройка фильтров, эксперименты с индикаторами. Пусть TrendPlus учится. Пусть ошибается. Пусть иногда теряет деньги, но становится умнее."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Знаете, я ведь не ради денег это затеял. Ну, не только ради них. Мне правда интересно: можно ли научить железку чувствовать рынок? Можно ли переложить на алгоритм ту смутную тревогу, которая охватывает меня, когда цена подходит к уровню сопротивления? Или ту эйфорию, когда график уходит вверх и кажется, что так будет всегда?"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Посмотрим. Поживем — увидим. А пока — пожелайте моему роботу удачи. Ему, в отличие от меня, повезло: он не умеет нервничать."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Ну а если вас интересуют подробности, милости прошу на сайт "}, {"type": "string", "attributes": {"href": "https://ikinvestor.ru/roboty/trendplus-v1-0-kak-ya-stroyu-torgovogo-robota-kotoryj-chuvstvuet-trend/"}, "string": "ikinvestor.ru"}, {"type": "string", "attributes": {}, "string": "."}], "attributes": []}], "selectedRange": [6743, 6756]}
Комментарии 1