Здравствуйте уважаемые читатели и гости моего канала.
1 декабря 2025 года, в память о моей любимой жене, я выложил в свободный доступ кардинально переработанную версию Робота, на основе стратегии StepByStep от брокера Альфа. На данной версии стратегии у меня работает около сотни Роботов, и версия была выложена "как есть"
Вот ссылка на статью с Роботом.
Я веду данный канал уже 3,5 года (как быстро летит время) на котором пишу про применение роботов и описываю стратегию StepByStep. Скажу честно, у меня есть и другие роботы, но для описания я выбрал робота на стратегии StepByStep потому, что он эффективен и надежен как автомат Калашникова даже в руках новичков. Другие роботы более сложны для понимания принципов работы.
Как уже сказал выше, я выложил Робота "как есть" в том виде, в котором использую сам. Но дело в том, что я наблюдаю за работой Роботов и практически постоянно вношу большие и малые изменения в код Робота. Я давно отказался от тестирования на истории или виртуальных счетах, Все Роботы у меня работают на отдельном экспериментальном счете с реальными деньгами, основное ядро и принцип работы робота уже отточен и протестирован реальной эксплуатацией, поэтому не вижу смысла терять время и деньги на пустые эксперименты. Пусть Роботы зарабатывают и в процессе тестирования, как сказано в статье, выложенный там ВАРИАНТ Робота отработал без проблем 9 месяцев. На основной счет переводятся Роботы и тикеры показавшие очень хорошие результаты за время многомесячного тестирования.
При таком подходе к работе, неизбежно получается, что Роботы имеют множество, порой излишних для работы настроек и даже присутствуют "рудименты" от моих прежних экспериментов. Версию 62 я выкладывал в облегченном варианте, постарался убрать по максимуму лишнее, а в выложенной версии RS_v3 ничего не убирал (кроме одного блока, но на это есть причина). И как оказалось множество настроек вызвало недопонимание и трудности с запуском и настройкой нового Робота. Дзен отключил возможность бесплатно демонстрировать скриншоты в комментариях, поэтому разобраться и помочь с возникающим недопониманием и вопросами очень проблематично. Для решения проблемы, по многочисленным просьбам подписчиков, я создал канал в Телеграмм @investing_robot. Многие конечно удивятся, но телеграмм я раньше не пользовался, поэтому канал и работу с телеграмм мне еще только предстоит освоить, буду рад любым подсказкам.
Описание работы и настроек.
Как следует из комментариев, даже у подписчиков, которые давно используют Робота, проблему вызвала организация первоначального запуска, так как на основании этого выстроена логика некоторых настроек.
И так приступим.
StartQ и Q.
StartQ это параметр, который используется только один раз, при первом запуске Робота за все время работы. Он важен и не обходим, но он одноразовый. Этот параметр определяет сколько лотов купит Робот при первом запуске. Дело в том, что я определяю робота StepByStep как радикальное улучшение долгосрочной дивидендной стратегии. Все эксперименты с ним на других активах это совсем другое, хотя и показывают очень не плохие результаты, но без должного внимания не гарантирует стабильной доходности на долгосрок в отличии от дивидендный инструментов.
Подавляющее большинство новичков, придя на биржу, начинают именно с долгосрочной дивидендной стратегии, видя в ней аналог банковских вкладов, большинство остальных новичков уходят ругаясь, что Биржа это Казино. Вот для новичков - долгосрочников я и рассказываю про Робота StepByStep.
Именно в подходе долгосрочной дивидендной стратегии параметр StartQ определяет какое количество акций вы планируете держать на своем счете максимально долго. Конечно нет гарантии, что Робот сразу не начнет распродавать эти акции, это зависит от точки входа, но идея заложена именно такая.
Q. Это один их важнейших параметров, определяющий всю работу Робота и доход (не путать с доходностью, которую определяет стратегия и другие настройки). Q определяет максимальное количество акций которое вы, в данный момент, разрешаете покупать Роботу на новых уровнях, так как этот параметр можно менять в процессе работы Робота.
Параметр Q определяет и сколько уровней Робот создаст из нашей первой покупки, при запуске Робота по параметру StartQ.
Число уровней которые будут созданы вычисляется по формуле StartQ/Q. Уровни будут созданы от цены покупки StartQ с увеличением цены каждого уровня на процент определяемый заданным вами процентом на продажу. (DeltaPercentSell). Каждый Робот ведет собственный учет купленных активов используя метод называемый СТЕК, это когда данные располагаются в прядке возрастания или убывания и работа ведется с данными расположенными с краю. В данном случае Робот работает с данными имеющими минимальную цену. Так как каждый Робот ведет собственный СТЕК покупок/продаж Роботы не мешают друг другу и сделкам совершаемыми вручную на счете.
Пример.
Возьмем параметры StartQ =50, Q =10, DeltaPercentSell=2%. DeltaPercentBuy = 2%, Текущая цена =100 рублей.В итоге при запуске Робота мы получим начальный СТЕК следующего вида.
108,24 - 10
106,12 - 10
104,04 - 10
102,00 - 10
100,00 - 10 - цена покупки StartQ.
98,00 - 10 - Уровень который создаст Робот если цена упадет на DeltaPercentBuy
96,04 - 10 - Уровень который создаст Робот если цена продолжит падать на DeltyaPercentBuy.
Как видим уровни отсортированы по убыванию и ключевым параметром для сортировки является ЦЕНА. Обратите внимание что хотя весь объем StartQ был куплен по 100 рублей, Робот поставил уровням цену больше фактической, а значит и распродаваться верхние уровни будут дороже, чем
Цена покупки * DeltaPercentSell. давая дополнительную прибыль при продаже уровней созданных из StartQ.
Робот всегда работает с последним купленным уровнем, ведь он всегда самый дешевый. Именно поэтому в Роботе заложен принцип учета результатов LIFO. И правильные результаты работы показывает именно учет по LIFO. Число акций на уровне может отличаться от Q, но только в меньшую сторону. Например когда заявка на покупку/продажу не была исполнена полностью, а цена ушла в противоположную сторону,. А вот если мы в процессе работы Робота изменили значение Q в меньшую сторону, то на ранних уровнях у нас число акций окажется больше текущего Q и будет соответствовать действовавшему Q на момент создания уровня.
Созданный Роботом СТЕК мы всегда можем посмотреть в Отчете Робота на закладке Переменные.
Параметр LastPrice это и есть Стек Робота, если уровней много его видно не весь, но если навести на него мышку в отдельном окне откроется весь СТЕК, смотрите данные на белом фоне. Мы привыкли писать слева на право, поэтому самый дешевый уровень у нас находится именно слева, с ним и работает Робот.
Следующим важным событием, связанным с StartQ является момент, когда цена выросла так, что Робот распродал все купленные уровни. Как поступить в этом случае? Существует 2 подхода к дальнейшей работе Робота.
1. После распродажи сразу купить 1 уровень. Этот подход был реализован в Роботе Версии v.62
2. Дождаться когда цена упадет на DeltaPercentBuy и уже тогда купить уровень. Но так как цена может продолжить расти неопределенно долго, нам нужно будет найти локальный максимум и уже от него ждать падения. Этот подход и был реализован в выложенной последней версии Робота RS_v3. Дело в том, что некоторые подписчики и читатели настойчиво критиковали подход "покупки сразу" мотивируя это тем, что мы покупаем фактически по цене, по которой только, что продали последний уровень, и поэтому платим двойную комиссию. И я решил попробовать метод не покупать сразу, а дождаться падения. Пока рынок в 2025 году в основном падал, этот подход себя практически не проявлял. Но вот сейчас, когда рынок локально растет, некоторые Роботы запушенные на новых активах недавно (а значит на локальных минимумах) стали полностью распродавать активы и я вижу, что уже часто цена продолжает рост, Робот ждет падения и не покупает, цена уходит значительны выше цены распродажи всех уровней, в итоге покупка происходит по цене сильно дороже цены распродажи. Это конечно не убыток, но точно упущенная выгода. Можно конечно в этой ситуации купить в ручную и изменить вручную же Роботу позицию, но для этого нужно уловить момент распродажи или все равно получится купить дороже, чем продали. Ну или остановить Робота и ждать надеясь, что цена упадет ниже распродажи. В попытке нивелирования данного эффекта были введены 2 дополнительных параметра, но об них чуть ниже.
QSlippage.
QSlippage. Это параметр Проскальзывания, при докупки последнего уровня до значения параметра Q если по какой то причине, число акций на нем меньше текущего значения Q. (не полная продажа/покупка уровня или изменения значения Q в большую сторону в процессе работы) Не нужно путать с параметром "проскальзыванием в ордерах" которое устанавливается при запуске Робота.. Дело в том, что с введением 2х дополнительных уровней на которых выставляются лимитные заявки на продажу/покупку на уровни где мы реально хотим продать/купить соответственно. А дополнительные уровни были добавлены, что бы цены сделки были предсказуемыми и точными, и не было пропуска сделок при резких колебаниях цены. Но параметр проскальзывание в ордерах был встроен в сам терминал и изначально работал немного по другому, чем хотелось. Поэтому и пришлось добавить параметр QSlippage., буква Q впереди означает, что параметр предназначен для блока докупки Q на последнем уровне.
SellAboveThisLevel, BuyBelowThisLevel.
Идеей введения этих параметров была организация сделок в задаваемом диапазоне, параметры в этом случае задают границы интересующего нас границ в которых могут совершаться сделки.
SellAboveThisLevel, параметр определяет цену ниже которой сделки продажи запрещены. Идея в том, что бы получить снижение учетной цены по активу, это должно повысить дивидендную доходность по данной акции. Если присвоить этому параметру значение 0, продажи будут происходить без ограничения, так как цены ниже нуля не бывает.
BuyBelowThisLevel. параметр определяет цену выше которой сделки покупки совершаться не будут. Идея в том, что бы не набирать позицию на исторических максимумах. Это с одной стороны увеличит учетную цену, а с другой набранные на максимумах активы долгое время не будут проданы с прибылью. Чтобы сделки проходили без ограничения параметру присваивается завышенная цена. По умалчиванию BuyBelowThisLevel=1 000 000..
DeltaIncBuy, DeltaIncSell, MaxLevels, MinLevels.
В кризисы, когда котировки на рынке длительное время снижаются, может наступить момент, при котором имеющего КЭШа может не хватить для продолжения работы Роботов. Два параметра введены для экономии КЭШа, что позволяет если не решить проблему, то значительно увеличить адаптацию к падению котировок. Другие два параметра предназначены для увеличение времени до момента полной распродажи актива, о чем сказано выше.
MinLevels, DeltaIncSell. параметр MinLevels определяет количество уровней, начиная с которого, установленный процент на продажу увеличивается на величину DeltaIncSel за каждый проданный уровень. Процент на продажу рассчитывается по формуле.
DeltaPercentSell + (MinLevels - LastPriceCount + 1) * DeltaIncSell
где LastPriceCount это число оставшихся уровней.
При использовании этих параметров, мы продаем последние уровни с большей прибылью, а значит цена должна вырасти гораздо больше, что бы распродать все набранные роботом акции. Как видно из формуле, процент для продажи увеличивается с арифметической прогрессией. Если мы не хотим, что бы процент на продажу у нас увеличивался, нужно просто DeltaIncSell =0, значение параметра MinLevels можно не менять.
MaxLevels, DeltaIncBuy, параметр MaxLevels определяет количество уровней начиная с которого происходит увеличения процента для покупки этого и каждого следующего уровня на величину заданную параметром DeltaIncBuy . Процент на покупку вычисляется по формуле.
DeltaPercentBuy + (double)(LastPriceCount - MaxLevels + 1) * DeltaIncBuy
где LastPriceCount это число купленных уровней.
При использовании этих параметров у нас начинает увеличиваться процент для покупки (расстояние между уровнями), значит покупки совершаются реже и КЭШ расходуется экономнее. Если мы не хотим, что бы процент на покупку у нас увеличивался, нужно просто поставить DeltaIncBuy =0, значение параметра MaxLevels можно не менять.
Устанавливать и изменять значения параметров можно во время работы Робота.
BuyOK, SellOK.
Параметры BuyOK, SellOK. предназначены для запрета соответствующих сделок.
Если установить BuyOK=0, Робот не будет совершать сделок покупки, если BuyOK=1, покупки происходят.
Если установить SellOK=0, Робот не будет совершать сделок продажи, если SellOK=1, продажи происходят.
ClosePositionAtPrice.
Параметр ClosePositionAtPrice введен в качестве идеи закрыть позицию Робота при достижении заданной параметром цены. При этом Робота можно перевести в аналог стратегии усреднения, при которой КЭШ освобождается быстрее, но появляются часть уровней которые будут проданы в убыток.
MaxPriceParam, MinPriceParam.
Эти параметры изменять строго не рекомендуется без крайней необходимости.
MaxPriceParam позволяет изменить глобальную переменную MaxPrice в которой хранится максимальная цена актива которая наблюдалась за время работы Робота. Может понадобиться поменять эту цену если мы запускаем нового Робота на ту же акцию, что бы знать на сколько текущая цена ниже максимума.
MinPriceParam вообще определяет торгуемый уровень который используется в формулах расчета цены покупки/продажи. Изменить может понадобиться если вы вручную, через отчет Робота, решите поменять число уровней и удалить какие то уровни, и запустите нового Робота из измененного отчета. Допустим когда Робот из-за сбоя потерял сделку продажи и оказалось, что в учете Робота акций больше, чем реально на счете. Но тут нужно очень хорошо понимать, что вы и как делаете. Пользоваться этим параметром, пока досконально не поймете как робот функционирует, очень опасно.
DohodZakr.
Этот параметр нужен для учета дохода по закрытым Роботам на одном и том же активе. Когда вы только начинаете использовать Роботов, или обновляете на модернизированного, наработанный доход теряется вместе с закрытым Роботом.
Знать сколько средств заработали Роботы на конкретном активе необходимо для определения эффективности использования Робота на этом активе, иначе серьезной работы с большим пулом Роботов не получится.
Dividend.
Смысл параметра понятен из названия. Сюда вносятся выплаченные по активу дивиденды, так как Робот не учитывает дивидендный доход, вносить приходится вручную.
Dohod, DohodAkc, DohodLot.
Эти глобальные переменные добавлены с целью управления доходом генерируемыми роботами.
В глобальной переменной Dohod суммируются доход по закрытым Роботам, полученным дивидендам и доход работающего сейчас Робота. То есть мы видим, сколько Роботы всего заработали на этом активе (акции) за все время.
В глобальной переменной DohodAkc посчитано сколько акций можно сейчас купить на общий доход заработанный Роботами на этом активе.
В глобальной переменной DohodLot посчитано сколько лотов данного актива можно купить на общий доход заработанный Роботом на данный момент. Я для себя решил, на 10% от этого числа лотов, увеличиваю значение Q Робота, тем самым, в зависимости от заработанного Роботом общего дохода, у меня растет оборот по активу. То есть, чем больший доход зарабатывает Робот, тем больше денег ему выделяется еще увеличивая доход. Если доходность по любой причине замедлится, то и увеличение Q замедлится или прекратится.
PS.
Из присланных для пояснения вопросов скриншотов, я заметил, что установившие Робота не произвели настройку столбцов "Диспетчера Роботов" для удобной работы. В частности не установили столбец "Доход" (за вычетом всех комиссий) который зарабатывает Робот.
У меня колонки Диспетчера Роботов настроены следующем образом.
В красном прямоугольнике выделены важные колонки которые необходимы для предварительной оценки доходности работы Робота.
НПУ (Накопленная прибыль/убыток), показывает на сколько потраченная на покупку уровней сумма отличается от текущей цены. То есть общая сумма использованного Роботом КЭШа равна Объем+НПУ.
ПУ (прибыль/убыток), это суммарная разница зафиксированной прибыли до вычета комиссий.
Прибыль, зафиксированная Роботом за время работы прибыль после вычета комиссий, но без учета дивидендов и дохода закрытых Роботов.. Значит сумма уплаченных по сделкам Робота комиссий равна ПУ-Прибыль.
В каждой ячейке можно настроить размер и цвет шрифта. Для добавления ячеек в Диспетчере Роботов, нужно кликнуть правой кнопкой мыши и в выпавшем меню выбрать пункт Настроить..
Откроется окно, в котором справа выбирается пункт Колонки, далее в нужных вам ячейках из выпадающего меню выбираются нужные пункты, настраивается размер шрифта и цвет.
PS1.
В связи с тем, что в Дзен отключили возможность показывать в комментариях скриншоты, а без них бывает трудно найти ошибку и подсказать как ее исправить, меня попросили открыть канал в телеграмм.
Вот адрес канала в телеграмм. Заходите, можете задавать вопросы там и обмениваться скриншотами.
@investing_robot
Так же открыт чат канала,.
@invest_robot_notes
Подписывайтесь, заходите, будем обсуждать идеи новых модернизаций Роботов.