Проект публичного торгового бота

Часть 1. Предыстория.

Доброго всем времени. Меня зовут Денис и здесь я, естественно, с корыстной целью. Но о ней немного позже. Для начала расскажу историю, которая меня привела на эту площадку. Началась она довольно давно. В бытность любителя-программиста я завел себе электронный кошелек, на тот момент очень популярный.

В какой-то момент я нашел пару способов зарабатывать, только лишь прокручивая средства через разные кошельки. Конечно, это были сравнительно небольшие деньги при довольно значительных временных затратах, а из-за длительности цикла операций имелись серьезные риски курсовых колебаний.

Тогда я обратил внимание на внутреннюю площадку обмена этого электронного кошелька и, пораскинув мозгами, запилил торгового бота, который круглосуточно работая, осуществлял обмены по цепочкам разных валют (из одной в другую и т.д.). И где-то тогда же, познакомился с очень заинтересованным человеком в подобных технологиях. Развивая совместно с ним концепцию, я довел бота до некоторого предела развития. После которого стало ясно: 1) оборотов кошелька для работы данной концепции недостаточно — «выхлоп» маленький; 2) необходимо переходить на реальную биржу, чтобы зарабатывать «по-настоящему». Но первый подход остановился на величине порога вхождения в качестве брокера на биржу. В связи с этим, история с моим знакомым, была отложена до более лучших времен.

Через некоторое время, а точнее весной-летом прошлого ковидного года, мой неугомонный знакомый – назовем его Фёдор – отвлек меня от текущей рутины и стал агитировать входить на биржу через брокерские услуги банков. С месяцок поковырявшись в предложениях от банков и проотдыхав все лето на море с детьми (ну когда еще так совпадет — пандемия + небольшие накопления), осенью я приступил к созданию бота (программы) под брокера одного известного банка. И тут начались сложности. Чисто валютная торговля оказалась невозможна, а уже вложенных усилий в разработку было жалко. Остался только фондовый рынок, под него я и переделал своего бота.

Первую и к тому же неудачную сделку бот совершил вначале декабря, на самом деле сделка была в плюс, но с Фёдором мы на радостях совсем забыли про комиссию брокера за сделку и на этом приобрели бесценный опыт… Пошлифовав еще неделю стратегию, затем еще неделю потратив на то, чтобы бот расширил торговлю с рублевых акций на долларовые и евро, незадолго до Нового 2021-го года бот был отпущен в свободное плавание под моим строгим надзором.

Федя фонтанировал идеями об оформлении внешнего вида панели управления ботом, из-за чего я на него бурчал в духе: «…вам шашечки или ехать…» и продолжал работать над улучшением стратегии торговли, попутно нарабатывая приемы ручного управления ботом. Некоторые из них, таки, были реализованы в виде элементов и решений по интерфейсу. Бот довольно неплохо торговал, неся прибыль в диапазоне от 0,1% до 1,2% в день от депозита, чем, безусловно, чрезвычайно радовал Федю. С другой стороны, Федя весьма печалился, когда бот, иногда открывал неудачные позиции, которые порой значительно проседали. Впрочем, поводов к радости было всегда больше и даже по итогу фиксации текущих убытков в сумме он в любом случае оставался с ощутимой прибылью. Так история неспешно двигалась поступательно, развиваясь и обретая какую-никакую статистику. За это время Федя подключил к боту свою супругу. Я, в свою очередь, подключил свояка, и пару знакомых, один из которых просто пробует бота на зуб, а вторая решила стартовать в инвестиции именно с моего бота, насмотревшись на его результаты.

Вскоре работа уперлась в глыбу нейронной сети и с наскоку ее решить не удалось. Тем не менее, нейросеть вскоре была подключена, но нормально обучаться на собранном наборе данных не желала. Различные эксперименты к решению проблемы нисколько не приблизили. А времени заниматься глубоким анализом в силу необходимости обеспечивать текущую жизнедеятельность не очень-то и хватало. И вот на этом этапе я решил обратиться за помощью к заинтересованному сообществу. В общем, я попробовал решить задачу радикально: Как предложить людям то, что им нужно, при этом исключив для них риски и при этом заработать, не беря ни у кого никаких денег для этого? Ответ, я надеюсь, смогу изложить в следующей части.

Часть 2. Суть.

Познакомимся с ботом. Архитектурно он состоит из двух блоков: торговое ядро и панель управления. Торговое ядро представляет собой периодически выполняемый скрипт, который получает данные о ситуации на бирже, сверяется со своей стратегией, осуществляет покупку акций в соответствии с заданными настройками и выставляет ордер на продажу, таким образом фиксируя прибыль. Интерфейс панели управления представляет собой минималистически оформленное диалоговое окно. В нём совмещены как вывод справочной информации, возможность менять настройки так и инструменты непосредственного вмешательства в ход торгов. На приведенном ниже скрине панель представлена в свернутом виде. Это, кстати, данные торговли моего приятеля Феди, о котором упоминал в первой части.

Панель управления торговым ботом<br />
Панель управления торговым ботом

На что сразу хочу обратить внимание на этом скрине. В силу того, что «хотелки» оформления были не в приоритете и рассматривались лишь как возможность получения ориентировочной информации, данные о сегодняшнем заработке в последней колонке включают и данные о пополнениях и снятиях за этот день, однако в итоговом подсчете за день они не фигурируют, поскольку итог подводится по другому алгоритму с опорой на данные брокера по операциям купли и продажи акций за день. Это связано с тем, что существуют ограничения брокера на число запросов к его API. Как вы понимаете, каждый раз стучаться в API, выясняя, что уже заработано, чревато. «Цена портфеля» — это за сколько портфель акций был куплен ботом, а «стоимость» — это за сколько его можно сейчас продать. Других пояснений, полагаю, к этому скрину не нужно.

На следующем скрине всплывающее окно базовых настроек бота

Настройки
Настройки

Тут все просто, торговый токен выдает брокер в личном кабинете трейдера, «критерий доходности» — это множитель для цены покупки акции, результат умножения будет ценой, по которой выставится ордер на продажу, а «неснижаемый остаток» — это сумма баланса, меньше которой покупки осуществляться не будут.

На скрине ниже представлен список позиций портфеля трейдера, конечно не весь, со справочной информацией и некоторыми инструментами управления торговлей. И здесь остановлюсь подробнее.

Список позиций портфеля<br />
Список позиций портфеля

Количество акций и лотов показаны, поскольку они для рублевых акций не совпадают и покупка всегда лотами, а цена всегда указывается за акцию. Далее показана так называемая «буря в стакане», соотношение количества лотов на покупку и продажу в биржевом стакане от брокера. Следующая строчка с кнопками содержит такую информацию по порядку справа налево: в скобках количество лотов, а затем цена самой выгодной по цене позиции покупки в стакане, или то — сколько и за сколько Вы сможете продать эти акции сейчас, далее — кнопка продажи по цене с рынка указанной на ней акции, следующее текстовое поле содержит то количество лотов, которое будет продано или «долито» в позицию в портфеле по кнопкам справа и слева от этого поля, далее — собственно кнопка «долива», после которой указана цена самой выгодной по цене позиции продажи в стакане, по которой Вы и сможете «долить», а в скобках количество лотов в ней. Далее строчка миникалькулятора «долива». Иначе говоря, сколько и на сколько нужно купить лотов, чтобы средняя цена покупки данных акций стала той, что указана в тестовом поле ввода. На скрине — это нужно купить 2 акции на сумму 100,76$ чтобы средняя цена покупки акций BorgWarner изменилась с 50,99$ до 50,70$ или чуть меньше. Ну и последняя строчка, которую следует описать — это информация по выставленному ордеру, указано количество лотов в ордере, так удобно отслеживать частично проданные акции. Указана цена продажи и далее, кнопка удаления ордера. Это предусмотрено для обновления ордера если был осуществлен долив, поскольку в боте установлен режим автоордера на все позиции в портфеле если они есть в отслеживаемых. После удаления бот восстановит ордер на всё количество лотов.

На следующем скрине представлены инструменты работы со списком акций, по которому бот производит отслеживание и торговлю.

Список отслеживаемых акций<br />
Список отслеживаемых акций

Поясню для чего стал нужен список. Ну, во-первых, не все акции одинаково полезны для торговли по заложенной стратегии в боте. А во-вторых, у брокера есть ограничение на количество запросов к бирже, в результате чего в данное время отслеживать можно не более 240 акций почти одновременно (кстати, еще месяц назад было 120). Список поделен на акции по валютам, за которые их можно покупать. Выбранную акцию можно добавить в список, если ее там еще нет. Далее представлен упорядоченный по алфавиту список отслеживаемых акций. Каждая акция помечена либо зеленой галочкой, что означает в соответствие с индивидуальными для акции настройками ее бот будет покупать, либо не будет, если вместо зеленой галочки будет красный значок. После названия акции стоит кнопка полного удаления ее из списка отслеживания. У акций, которые уже есть в портфеле, эта кнопка неактивна. При нажатии на название акции откроется окошко индивидуальных настроек для нее, оно на картинке ниже.

Индивидуальные настройки<br />
Индивидуальные настройки

В окошке индивидуальный включатель/выключатель торговли по конкретной акции, количество покупаемых за раз лотов, и индивидуальный для определенной акции критерий доходности. Например, я хочу некоторой акцией встать в рост, а продать хочу когда цена увеличится на 47%, для этого достаточно поставить критерий доходности в 1,47 и бот прилежно будет выставлять ордер на продажу по соответствующей цене.

Ну и остался раздел с историей операций за выбранный период, указанный на кнопках.

Список операций<br />
Список операций

Упомяну также о безопасности бота, она в том, что не надо никуда переводить Ваши деньги или давать к чему-либо доступ. Ваши деньги остаются на Вашем же брокерском счете под полным Вашим контролем в части снятия или пополнения. Кроме того, снять средства с брокерского счета возможно только на Вашу же карту, к которой брокерский счет привязан в этом же банке и никуда больше. Это Вы сможете уточнить в техподдержке, мне там сообщили что даже если удастся получить доступ к брокерскому приложению в телефоне и тогда деньги можно будет вывести только на Вашу карту.

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

1. Желающий пользоваться ботом человек связывается со мной любым удобным для себя способом и оставляет заявку на подключение бота к своему брокерскому счету у конкретного брокера. Если у него нет брокерского счета у данного брокера, то его следует оформить, можно по моей рефссылке, это дает плюшки при оплате подписки в дальнейшем. Далее следует пополнить брокерский счет на желаемую сумму. Рекламировать брокера не буду, он мне за это не платит, но бот сделан сейчас строго под него.

2. В течение часа я запущу торгового робота и сообщу адрес, логин и пароль для доступа в панель управления ботом. Доступ через браузер.

3. Для того чтобы бот работал правильно в личном кабинете трейдера на сайте брокера, кроме получения токена, проверьте чтобы настройка «Подтверждение сделки по смс» была отключена и так же должен быть отключен Маржинальный режим торговли.

4. Клиент заходит в панель управления ботом и устанавливает основные настройки бота: токен для торговли, критерий доходности и, по необходимости, неснижаемые остатки. После чего запускает торговлю соответствующим переключателем в настройках.

5. В списке акций клиент добавляет те акции, которые считает нужным отслеживать боту и по необходимости устанавливает индивидуальные настройки для каждой акции. Все, готово, бот приступил к работе.

6. Первые 30+ дней клиент может торговать при помощи бота совершенно бесплатно. По истечении 30 дней, в ближайшие выходные клиенту будет выставлен счет, который рассчитывается следующим образом, если клиент подключился к брокеру по моей рефссылке, то он должен будет заплатить только 5% от той суммы, которую бот заработал за этот период на его счете, если не по моей рефссылке, то заплатить уже будет нужно 10% от того, что заработал бот.

7. Если счет будет оплачен, то торговля бота возобновится со следующего понедельника, если нет, то торговля будет остановлена, доступ в панель управления отключен до произведения оплаты. Мне кажется, это самый справедливый способ, человек защищен от необходимости платить если ему не понравилось и тем более если нет доходов.

Некоторые советы:

  • подобранные акции должны быть достаточно волатильные и с хорошим объемом торгов за день, очень много зависит от списка торгуемых акций;
  • не бросайтесь немедленно на эмоциях доливать или продавать акции;
  • старайтесь держать неснижаемый остаток, это помогает при «доливе»;
  • слишком дешевые акции, это в основном касается нерублевых, старайтесь покупать ботом несколькими лотами, в сумме ближе к 20 баксам или евро, чтобы не терять слишком много на комиссиях;
  • для более эффективной торговли необходим тариф Трейдер у брокера.

Думаю, для старта этого будет достаточно.

Для чего я все это затеял? На самом деле мне нужно время и интеллектуальный ресурс на дальнейшее развитие торгового бота. Он показал себя весьма перспективным и для того, чтобы значительно увеличить эффективность его торговли я пришел к выводу, что настройка нейросети и правильное ее подключение к боту позволит добиться еще лучших результатов. Поэтому я и обратился к сообществу желая поделиться успехом с Вами и совместно развиваться. Вот ближайшие планы по развитию бота:

  • подключение нейросети к торговле, пока она только обучается не участвуя в ней;
  • показывать дату открытия позиции в панели управления;
  • просмотр доходов за период;
  • создание расширенного торгового календаря с расписанием;
  • создание личного кабинета клиента;
  • создание телеграм-бота для упрощения взаимодействия с клиентами;
  • возможно будет сформирована команда разработки проекта, если участников проекта окажется достаточно для этого.

З.Ы. Во внутренней соцсети брокера Фёдор значится под ником rostzol. Можете заглянуть в его профиль и ознакомиться с его результатами. И простите за «многобукаф», так много я написал для тех, кто любит во всем самостоятельно разобраться.

22
4 комментария

Если я правильно понял идею бота - то это классический (внутри)биржевой арбитражер, со всеми вытекающими

Ответить

На счет классическости не скажу я не сравнивал с другими подобными штуками, но арбитражер это точно. Перехваливать его не буду, однако убытков ни у одного из моих нынешних клиентов нет, как и у меня, причем клиенты в основном в баксе торгуют, а я в рублях. Просадки имеются, но они перекрыты прибылью. Единственно, что пока этого недостаточно для меня чтобы сконцентрироваться на дальнейшей его разработке.

Ответить

Комментарий недоступен

Ответить

Конечно.

Ответить