Как написать пассивный доход: Пишем качественного трейд бота на JS (часть 1)
Начнем писать трейдинг бота, который будет работать на криптобирже Binance. Бот должен уметь:
торговать самостоятельно, принося какой-то доход
должен быть удобен для создания и обкатывания различных стратегий торговли
тестировать стратегию на исторических данных
Пожалуй, начнем с архитектуры
У нас есть биржа Binance, у которой есть шикарное api. Поэтому архитектура могла бы выглядеть так:
Вызвать пару методов “купи дешевле” и “продай дороже”. Но задача для нас написать такого бота, при котором условный программист-трейдер сможет создавать и тестировать на прибыльность новые стратегии. Поэтому, необходимо отделить логику торговли от всего прочего. А также модулю логики должно быть все равно к какой бирже его подключили: к реальному API или к псевдо-API (для тестирования). С учетом всего этого получилась примерно вот такая архитектура:
Базу выбрал PostgreSQL. Тут нет никакого тайного умысла. Вы можете использовать любую.
Сервис для логов
Теперь подключим биржу
Дальше добавляем метод создания ордера, с учетом правильного количества знаков после запятой для цены и обьема:
Теперь бот умеет создавать ордера. Научим его слушать события из биржы для того, чтоб он мог отлавливать изменения статуса ордеров. Для этого создадим класс TradeService.
Перейдем к базе данных
Для чего она нужна? В базе будем хранить все ордера, а также всю историю торговли бота. Пользователей с их ключами к бирже и балансами. В последствии сможем считать сколько бот принес прибыли/убытка. Тут останавливаться долго не буду. Подключаю sequlize.
Добавим docker-compose.yml файл для локальной базы:
В следующей статье будем писать ядро, которое соединит все эти части и заставит бота торговать.
Простой торговый робот для биржи Binance без индикаторов
Бот исключительно в демонстрационных целях. Когда я писал своего первого бота мне не хватало чего-то такого.
Идею для торговой стрегии взял из книги Ларри Вильямса «Долгосрочные секреты краткосрочной торговли» и слегка упростил. Он называет это прорыв волатильности. В чём суть:
— считаем разницу между хай и лоу предыдущей свечи
— к цене открытия текущей свечи прибавляем разницу из предыдущего пункта, это и будет ценой для входа в позицию
— если цена достигла этой цены покупаем
— выход на октрытии следующего бара
Всё. Максимально просто.
Теперь ещё раз то же самое на примере.
— Хай прошлой свечи 251 USDT, лоу 248 USDT. Разница 3 USDT.
— Открытие текущей свечи 250 USDT. Цена входа 253 USDT.
— Как только цена достигла 253 USDT покупаем 0,1 BNB
— На следующем открытии свечи выходим. Если цена выше, то заработали что-то, если нет, то нет.
Торговая пара BNB/USDT с биржи binance.
В боте я рассматриваю минутный таймфрейм, чтобы можно было быстро посмотреть что и как работает. График цен можно смотреть на самой бирже Можете поменять на любой на ваше усмотрение.
Торговля идёт фиксированным лотом 0,1 BNB. Можно поменять в переменной `quantity`.
Что нужно для работы:
— установить все зависимости из файла `requirements.txt`
— зарегистрироваться на бирже https://www.binance.com и получить ключи для api и заполнить глобальные переменные `BINANCE_API` и `BINANCE_SECRET`
— залогиниться в тестовой сети testnet.binance.vision/ через github, тоже получить ключи и заполнить переменные `TEST_BINANCE_API` и `TEST_BINANCE_SECRET`
— запустить файл `barackbot.py`
В консоли должны увидеть что-то такое:
Ещё раз. Бот максимально простой. Не учитывает ни статусы заявок, ни комиссии, нет стопов. Нет обработки минимального лота. Обработка ошибок минимальная. Нет контроля непрерывной работы. Просто механика выставления заявок.
Как создать бота для торговли на бирже Binance
В данной статье мы расскажем вам о том, как создать и настроить вашего первого бота. Данная инструкция поможет вам лучше разобраться в интерфейсе и параметрах настройки. Итак, приступим:
Регистрируемся и логинимся в https://revenuebot.io/, переходим во вкладку «Bots» (https://app.revenuebot.io/office/#/bots/)
Раскрываем меню «CREATE NEW BOT»…
Идентификация, API и кошелек бота
Bot name: Название бота (чаще всего в названии используются характеристики: биржа, торговая пара криптомонет, алгоритм работы и тп.)
Exchange: Выбираем биржу в выпадающем списке (рассмотрим на примере Binance)
Как только вы выберете биржу вам станут доступны следующие поля для заполнения:
Pair: Выбрать торгуемую пару криптомонет. О том, как выбрать эффективную торговую пару подробно написано тут — «Как подобрать эффективную торговую пару криптомонет»
API key: Выбрать API ключ из ранее созданных, либо создать новый.
Depo: Выбрать виртуальный кошелек из ранее созданных, либо создать новый, где ввести:
Commission: Выбрать вариант комиссии, которая будет применятся биржей. Данная настройка актуальна только для биржи Binance, так как на ней возможна оплата комиссии в третьем токене, который не участвует непосредственно в текущей торговле (BNB токен).
Для использования такого вида комиссии, необходимо активировать ее в аккаунте биржи Binance. Рекомендуем всегда использовать этот вид оплаты комиссии торговли на бирже Binance, так как это дешевле.
Необходимо лишь следить, чтобы BNB был на аккаунте. Для этого наш бот проверяет баланс BNB токена перед каждым пуском. Если баланс токена меньше необходимого, то бот не запускается в работу и отправляет нотификацию пользователю с информацией о необходимости пополнить баланс BNB токена для начала торговли.
Алгоритмы работы бота и его настройки
Algo: Выбрать алгоритм работы бота.
Бот использует API интерфейс бирж для выставления ордеров по выбранному алгоритму и отслеживания их выполнения.
На данный момент существует два алгоритма работы бота RevenueBot:
После выбора алгоритма работы бота, пользователю предлагается воспользоваться шаблонами настройки данного алгоритма: Light trade mode, Normal trade mode, Extreme trade mode.
Все поля настроек заполнятся автоматически при выборе любого из предложенных шаблонов.
Rate cover: Процент перекрытия изменения цены для расчета сетки ордеров. Данная настройка определяет в процентах отступ последнего ордера в сетке ордеров.
First order indent: Отступ в процентах первого ордера в сетке ордеров.
Price rate to use: Выбор рейта на бирже, от которого вести расчет сетки ордеров. Это могут быть рейты buy, sell, average.
Orders matrix, martingale: Сетка ордеров и мартингейл.
Тут задается количество ордеров в сетке и мартингейл (на сколько процентов каждый следующий ордер в сетке будет весомее предыдущего). Кликнув на view orders matrix, Вы сможете увидеть рассчитанную сетку ордеров.
Profit: Тут задаем в процентах профит, который будет заложен ботом при расчете цены завершающего цикл ордера.
Profit coin: Данная настройка доступна только для алгоритма short. Задает в какой из торгуемых монет будет профит.
Cycle up: Бывает, что бот выставил сетку ордеров, а цена ушла в другую сторону. Получается, что нужно ждать пока цена не вернется, а ждать можно долго.
Этого ожидания можно избежать, настроив актуализацию сетки ордеров к текущей цене. Тут задается процент, при достижении которого, текущая сетка ордеров отменяется и выставляется новая.
Sleep before cancel orders for cycle up: Тут задается задержка в минутах, перед тем как начать отменять текущую сетку ордеров, когда срабатывает настройка Cycle up.
Данная настройка позволяет избежать частых отмен текущей сетки ордеров, когда цена за очень короткое время изменилась и вернулась к прежнему уровню.
Можно выждать некоторое время, чтобы зря не снимать текущую сетку ордеров.
Sleep before cycle up after cancel orders: Тут задается задержка в минутах перед выставлением новой сетки после отмены предыдущей сетки ордеров.
Данная настройка также позволяет избежать негативных последствий в ситуации, когда цена за очень короткое время изменилась и вернулась к прежнему уровню.
Sleep after end of cycle: Тут задается задержка в минутах перед тем как начать новый цикл после завершения текущего цикла.
Так же можно задать каждую из этих настроек самостоятельно и сохранить свой шаблон.
Дополнительные настройки
add revenue to depo: При получении прибыли можно добавлять ее к депозиту который использует бот, таким образом увеличивая депозит.
При включенной настройке весь профит от работы бота зачисляется на виртуальный кошелек, который использует данный бот.
logarithmic scale for orders: Обычно сетка ордеров рассчитывается так, что все ордеры в ней расположены линейно, на одинаковом расстоянии друг от друга по всему перекрытию цены.
При небольших колебаниях цены будут чаще всего выполняться первые, самые маленькие по объему, ордеры в сетке.
Чтобы вовлечь побольше депозита в торговлю при небольших колебаниях цены, можно использовать логарифмическое распределение, которое позволит повысить плотность ордеров вблизи текущей цены и понизить плотность ордеров при удалении от текущей цены.
Плотность ордеров можно настроить для разных ситуаций по разному с помощью коэффициента logarithmic factor увеличивая или уменьшая его.
Для большинства случаев подойдет значение logarithmic factor = 1.5.
Кликнув на «view orders matrix», Вы сможете увидеть рассчитанную сетку ордеров.
cost limit: Используйте эту настройку, чтобы не начать покупать слишком дорого и не начать продавать слишком дешево.
Задает максимальную цену, выше которой бот не начнет цикл для алгоритма Long и минимальную цену ниже которой бот не начнет цикл при алгоритме Short.
fix first partial order with profit: Бывает, что первый ордер в сетке частично выполнился, но цена пошла в другую сторону. Такое случается, когда бот оперирует большим депо и ордеры в сетке довольно объемные, даже самый первый.
В такой ситуации можно долго ждать возвращения цены и выполнения ордера полностью, чтобы работа алгоритма продолжилась. Включив данную настройку можно задать процент профита для расчета такой цены, при достижении которой мы получим профит, если отменим частично выполненный ордер и выставим на его сумму завершающий цикл ордер. Ведь цена ушла в ту сторону, где мы получим профит, просто ордер оказался слишком объемным.
Фильтры для старта бота
Мы рекомендуем всегда настраивать фильтры для старта бота. Они необходимы для того, чтобы бот начал торговлю в самое выгодное время, основываясь на выбранном алгоритме торговли и ваших предпочтениях. Подробнее читайте тут: «Фильтры для старта бота. Описание и настройка.»
Уведомления
Выставляем необходимые уведомления: WEB, E-mail, SMS, Telegram
И нажимаем «Create New Bot».
Поздравляем! Вы создали своего первого бота для биржи!
Роботы на Тинькофф и Binance на JavaScript и +5000$;
Все комьюнити разработчиков торговых роботов, варится вокруг Python и C#. На вопрос почему именно эти языки они начинают неразборчиво бурчать про многопоточность, количество готовых библиотек, а иногда даже про семафоры. Вот и я решил попробовать влезть в эту солянку, да-да именно солянку, по другому это назвать и нельзя.
В общем, есть масса инструментов вроде бы годных прям для работы, но таких громоздких и как то все у них распихано по разным углам и существует в полном творческом бардаке. При этом никто не задается вопросом «как и почему это так работает?», все лишь пытаются что-то написать, чтобы заработать немного денег, если повезет.
Как это водится у многих разработчиков, мне стало интересно на что способен JavaScript и V8 с JIT, может ли он дать нужную скорость для сложной математики? И изначально все началось больше как исследовательская миссия. А дело, кстати, было полтора года назад.
Итак, что нам потребуются для разработки и запуска торговой стратегии, ну например, на Тинькофф Инвестиции :
Технические индикаторы на JavaScript. Хорошо что они есть, пусть и не сильно в изобилии. Возьмем самые популярные по скачиваниям technicalindicators
Что-нибудь для работы с Тинькофф, их библиотечка invest-openapi-js-sdk
Не смотря на тупость стратегии, оптимизировать ее нужно умненько: либо по Монте-Карло, либо с применением генетики, возьмем генетику, потому что просто красивее звучит. Подойдет библиотека geneticalgorithm
Немного подробнее про стратегию и про расхождение двух линий SMA. Основана она на стремлении рынка к коррекциям. Если SMA с более быстрым периодом уходит ниже SMA с медленным, то значит рынок совершил резкое изменение в цене, которое с определенной вероятностью будет корректироваться взад. На картинке ниже такие расхождение показаны стрелочками, почти все из них имеют обратное движение. Это хорошая точка входа в покупку акций. В короткие позиции можно входить когда быстрая SMA резко ушла выше медленной.
График акций тесла и тупой стратегии
В целом план есть, осталось написать только какой-нибудь модуль транспорта для более высокоуровневой работы и модуль генетики, для адаптации алгоритма все же под финансовые задачи.
Так сложилось, что SDK от Тинькофф на тот момент почти никто и не использовал. Так что пришлось его попутно переписать как следует, чтобы обеспечить надежную работу, а то свет мигнул, или кабель кто-то жует, или библиотека плохо написана, в общем коннект при пинге в 3 миллисекунды с разрывами. SDK переделал быстро, встретил кучу приятной отзывчивости от владельца репозитория на GitHub. Так совместными силами и вышел инструмент, который я до сих пор использую.
Вот примерно этим же занимается библиотека генетических алгоритмов. Чтобы не было очень скучно, вот серия картинок как «бабочки» обучаются лететь в нужную точку.
Бабочка случайно двигается
Одинокая бабочка со случайными параметрами выполняет пируэты броуновского движения, двигаясь во все направления.
Если применить немного генетики, взяв 100 бабочек и 20 поколений поскрещивать их, выдавая конфетки за приближение к точке и *текст заблокирован за жестокое обращение с бабочками*, если те двигаются не в нужном направлении. Получим следующий слайд.
Бабочки летят в указаную точку
В общем-то уже понятно, я надеюсь, как это с бабочками работает. Давайте теперь про торговлю.
Торговая стратегия это то, что у нас теперь будет вместо летающих насекомых. В качестве критерия оценки, обычно берется математическое ожидание выигрыша, это такая характеристика в теории азартных игр, она прогнозирует сумму выигрыша, которую может заработать или проиграть игрок, в среднем, по каждой ставке. На языке азартных игроков это иногда называется «преимуществом игрока» (если оно положительно для игрока) или «преимуществом казино» (если оно отрицательно для игрока). То что нам нужно, чтобы понять выигрываем ли мы у биржи с нашей торговой стратегией или нет. Вот это и будет главным критерием генетической оптимизации в нашей системе.
Вот формула подсчета мат. ожидания, на всякий случай:
Позволю себе немного кодовых вставок, без них никак. Чтобы крутить параметры стратегии потребуется некоторый интерфейс для их описания. Ниже он представлен в виде литерала объекта с различными полями.
Интерфейс позволяет задать значения, которые принимает тот или иной параметр, например целые или нет, четные или нет, булевы или числа. Теперь генетика будет знать как заполнять нашу популяцию в 100 или в 500 особей случайно сгенерированными параметрами.
Кстати, про популяцию, в нашем случае в качестве особи будет одна торговая стратегия с определенным набором настроек (генов). Которые мы и будем сохранять и передавать при скрещивании от родителей к детям.
Пишу статью легко и беззаботно, избегая возможно не нужных технических деталей, на на самом деле уже прошел целый год хардкорной разработки и эксперимент вышел из под контроля, свел так сказать, с ума группу энтузиастов.
В результате получилась либа async-genetic отвечающая всем стандартам, да еще и работающая быстрее. Не только в плане кода, но и в плане решения задач. Из-за дополнительных настроек, например, решает задачу «угадай какое слово я загадала» в 2 раза быстрее (в среднем).
Кроме этого давно не было картинок, поэтому пора показать результат визуализации работы стратегии и открытия сделок.
Визуализация сделок по стратегии
Чтобы вы могли видеть эту картинку со сделками и двумя SMA, потребовалось еще много времени на написание небольшой системы визуализации сделок. И загруженной истории. И тут стало понятно, что эксперимент ну совсем уже вышел из под контроля и начал жить своей жизнью. Конечно к этому времени что-то уже работало на бирже и пыталось заработать немного денег. И надо сказать любой заработок мотивировал как ничто другое продолжать это нелегкое дело.
И изначально генетика отрабатывала хорошо, но очень уж долго. Что мне показалось странным и я стал разбираться в проблеме. После дебага NodeJS приложения, удалось выяснить, что основная проблема это индикаторы, которые написаны ну очень плохо. Опять что ли писать свои? На этой фазе проект уже начал образовывать экосистему вокруг себя и первоначальное исследовательское направление стало разрушаться. Теперь фокус был на заработок и на создание полноценной платформы.
Тут только 3 индикатора, руки не дошли проверить остальные но уже было ясно что все работает быстрее. В общем то основным преимуществом стала специфика индикаторов, в данном случае они писались не для графиков, а для потоковых вычислений и результаты предыдущих расчетов используются по максимуму в расчете на движение всегда слева на право во времени. Так появились собственные индикаторы.
После этого момента стало очевидно, что получается готовый продукт, для разработки стратегий. Оставалось только отрефакторить все это 15 раз чтобы подготовить к опенсорцу.
Перед тем как я перейду в рекламе, хотелось бы дорассказать все же про стратегию. В общем то стратегию мы не бросили, она и по сей день где-нибудь да работает, но конечно заработать нам удавалось в основном на гораздо более сложных стратегиях. И вот сунув немного денег в крипту и тинькофф инвестиции уже заработано более 5000$, но в основном на крипте кнечно, акции только только начинают возвращаться в качестве активов.
Стриминг сделок мы ведем в нашем телеграмм канале. Здесь публикуются данные обо всех позициях, с небольшой задержкой примерно в 30-100 секунд. А также каждый вечер публикуется дневная и общая статистика (как на картинке). Подписывайтесь, будем рады.
В итоге в конце концов мы создали целую систему инструментов и назвали ее Debut.
В основе Debut лежит архитектура ядра и надстраиваемых плагинов, позволяющих гибко кастомизировать любые решения. Основной целью всей экосистемы Debut, является упрощение процесса создания и запуска рабочих торговых роботов на различные биржи. На данный момент поддерживаются: Тинькофф Инвестиции и Binance (и да, где-то по дороге подключилась крипта).
В проекте есть две стартовые торговые стратегии «Для примера» как нужно работать с системой. Репозиторий с образцами и примерами.
В общем полтора года разработки привели меня ко многим открытиям, часть из которых осталась за ширмой, но я обязательно расскажу о них в каком-нибудь докладе на конференции.
Разработка собственного торгового бота для криптовалюты
Рад приветствовать всех читателей топового блога о крипте!
Как все начиналось
Когда в размеренных буднях фрилансера настает полный штиль и заказов становится все меньше, поневоле обращаешь больше внимания на то, что происходит вокруг:
Последний работодатель пропал с письмом о том, что с разработки профильного ПО их команда переключается на программы, связанные с криптовалютами. И даже Топовый блог о хайпах стал не менее Топовым блогом о крипте 🙂
Я на минутку закрыл глаза и дал себе помечтать – чем занялся бы, если бы смог обеспечить себе достаточный пассивный доход. Как распорядился бы временем, которое не будет больше целиком проводиться в работе «на дядю», пусть даже и удаленно. Ради любопытства вбил в поисковик «криптобиржа», и среди прочих новостей взгляд зацепился за строчку о закрытии BTC-e. Еще через несколько минут после пары запросов в гугле я вышел на «наследника» соскамившейся биржи – Wex – и наблюдал размеренные волны «японских свечей» графика. И какой-то неугомонный исследователь внутри шепнул: «Смотри, как это интересно! Попробуй, ты же сможешь!»
Что именно я должен смочь и что вообще делать на бирже, я тогда представлял с трудом, но интерес не отпускал. С нулевыми знаниями финансового анализа и таким же нулевым чутьем я понимал, что торговать вручную – не вариант. Небольшой, но стабильный заработок без нервов и метания «а вот сейчас купить или не купить, продать или не продать?» казался идеальным вариантом. И еще через пару часов раздумий паззл, громко щелкнув, сложился.
Торговый бот! Вот она, мечта каждого ленивого уважающего себя трейдера! Не знающая усталости программа, торгующая на бирже 24 часа в сутки 7 дней в неделю. И, разумеется, постоянно приумножающая депозит.
Запретив себе мечтать о шкуре неубитого медведя, я начал вдумчиво изучать информацию. Во всяком случае теперь я знал, что именно я ищу и чего хочу в результате добиться.
Знакомство с биржей
Еще день или два прошли в изучении биржи и методов работы с ней. Я читал инструкции по инструментам разработчика (API), и, низкий поклон создателям биржи, там же нашел много примеров. Обнаружились готовые коды и на Python, и на PHP, и на С++/C#, и даже наработки для Excel (привет, старый добрый Visual Basic). Через некоторое время я уже мог смотреть на сделанное собственными руками окошко с динамикой курсов покупки и продажи.
Смотреть на статистику было приятно, и особых знаний такая мини-программа тоже не требовала, но к цели это не приблизило меня ни на шаг. И от публичного API я перешел к изучению торгового API. Он позволял:
Баланса еще не было. Поняв, что от теории пора переходить к практике, я зарегистрировался на бирже и пополнил счет, переведя с кошелька Advanced Cash оставшиеся после старых забав с хайпами 350 долларов. Еще день или два ушли на то, чтобы разобраться с тем, как получать ключи для торговли, отправлять через программу команды на биржу и как настроить аутентификацию через HTTP-запросы. Поначалу понятного было мало, но примеры чужих кодов, собственное упорство и всезнающий гугл помогли успешно пройти это испытание.
Поверьте – это очень приятное чувство: когда нажимаешь на кнопку в программе, и через секунду видишь в кабинете биржи торговый ордер, созданный автоматически. Начало было положено.
Круговорот валюты
И вот тут началось самое интересное. Я примерно понимал принцип работы программы, но четкой стратегии торговли еще не было. Да, разумеется: купить подешевле и продать подороже. Но когда и сколько купить? Когда и сколько продать? Как найти оптимальную точку входа и начала торгов? Все эти вопросы и еще с десяток других роем рассерженных ос клубились в голове. И ответов на них не было.
Дисклеймер: все, что касается выбранной мной стратегии, является лишь личным мнением человека, еще очень и очень далекого от принципов торговли. Не пробуйте подобное, не осознавая последствий. И не ругайте автора за незнание базовых принципов чего бы то ни было. Любым идеям и мнениям я буду рад в комментариях.
Я попробовал рассмотреть ситуацию с «механической» позиции. Иными словами, бот торгует криптовалютой полностью самостоятельно, без моего участия. С момента включения и далее постоянно. Что в это время происходит с ценой? Правильно: она может расти или падать.
Если цена падает, нужно закупить какое-то количество криптовалюты. Чтобы потом при росте курса продать ее по более выгодной цене. Если цена растет, нужно продавать купленное ранее. Все было логичным, за исключением одного «но»: наблюдая за скачкообразным ростом цены на биткоин, я подумал, что можно покупать монеты и по текущей цене, не ожидая снижения – при росте их все равно получится продать более выгодно. Впрочем, этот момент для меня до сих пор остается спорным, и в самом конце я объясню, почему.
Стоимость ордера решил сделать минимальным для данной биржи – 0,001 BTC, и сразу столкнулся с тем, что продать купленную крипту и получить обратно доллары не получится. Биржа берет комиссию в 0,2% от каждой сделки, поэтому на балансе после исполненного ордера на покупку окажется не 0,001, а 0,00998 BTC. В итоге цену ордера увеличил до 0,0011 BTC. При дальнейшем падении цены бот должен был снова и снова закупать 0,0011 BTC, пока на балансе есть средства для этого, а с приближением баланса к нулю – перестать закупать крипту и ждать исполнения ордеров на продажу. Если баланс пополнится – снова начать закупать. Шаг изменения цены для выставления нового ордера я определил в 10 долларов.
При росте цены бот, соответственно, должен продавать крипту и получать взамен фиат, но уже с определенной прибылью. Прибыль я ограничил 1% от каждой пары сделок (закупка + продажа). Жадничать и стремиться к большей прибыли не стал, так как в этом случае роста курса пришлось бы ждать долго. В то же время и уменьшать прибыль до минимума не имело смысла, так как большую ее часть «съедала» бы двойная комиссия – с покупки крипты и с ее последующей продажи.
Алгоритм работы бота для торговли криптовалютой становился все яснее и яснее:
Таким образом бот должен был формировать список из пар ордеров (на закупку и продажу) и следить за их исполнением, подстраиваясь под текущую цену крипты. Всю информацию об ордерах программа должна была записывать в файл, при каждой успешной операции покупки или продажи, соответственно, изменяя его.
В теории все должно было замечательно работать. Заставив мозг хорошенько выложиться, я даже смог обучить бота всем этим премудростям. Время летело незаметно, и от идеи до первой стратегии и до ее реализации в строчках кода прошли уже без малого две недели. Усталость давала о себе знать, но в один прекрасный момент я внезапно осознал: все, бот готов. Мозг молил о передышке, но желание опробовать программу в действии было гораздо сильнее 🙂
Испытание боем
Следующие несколько дней прошли, как в тумане. Это сейчас я вспоминаю их с неизменной улыбкой, а тогда они казались мне маленьким, но очень чувствительным адом. В программе не работало чуть более, чем все. Мозг уже напрочь отказывался понимать происходящее. Жутко хотелось спать, и запасы кофе в квартире стремительно уменьшались. Но бот учился торговать, и оставить его без присмотра на бирже против сотен других ботов я попросту не мог.
Ох, как я завидовал в те дни мирно дремавшему рядом кошаку…
Не забросить всю мою затею помогла только появившаяся «спортивная злость». Если уже потратил столько времени на изучение, стратегию, код, так уж доделай все до конца!
И прогресс с каждым днем становился заметнее и заметнее. Программа все реже вылетала с ошибками, а потом я и вовсе мог спокойно спать всю ночь, а бот работал без сбоев. Это была маленькая, но такая ценная победа! При текущих колебаниях курса накапливалось 10-15 ордеров на продажу, но в течение дня, как правило, они все исполнялись. И баланс ежедневно подрастал на доллар-полтора. Через некоторое время я осмелел и увеличил стоимость торгуемых ордеров. Прирост баланса возрос уже до 3-4-5 долларов в день. В абсолютных цифрах, разумеется, это немного. Но в относительных накапливалась неплохая прибыль – 1-1,5% от суммы баланса за сутки.
Конечно, со временем находились и другие, незаметные при начальной отладке программы, «косяки». К примеру, она вылетала с ошибкой при неправильном ответе от сервера биржи (такое случается, когда торги ведутся слишком активно). Или файл со списком ордеров, предназначенный для первоначальной загрузки бота при сбое – при выключении электричества или перезагрузке компьютера – был «криво» пересохранен программой как раз во время выключения электричества. Шанс подобного совпадения – минимален, но оно случилось, и такие случаи тоже нужно учитывать. Спас вовремя сделанный бэкап.
А после я стал «счастливым» обладателем BTC по цене в 7500-7700 долларов. Так ли это плохо? Не думаю. С одной стороны, за время работы бот вывел баланс в полный безубыток, даже если я продам крипту по текущей цене. С другой – я верю, что курс биткоина вернется на прежний уровень и дальше будет расти, и тогда бот продолжит приносить небольшую, но ежедневную прибыль.
Спорный момент – стоит ли ради непрерывной работы и получения прибыли сейчас продавать крипту дешевле, или выгоднее ждать. Пока биткоин подешевел, как раз есть время подумать об этом 🙂 Тем более, что бот сохраняет цены с биржи в отдельный файл и я могу вдоволь изучать динамику цен за все время его работы – видны колебания курса с точностью до нескольких секунд.
В целом, направлений для доработки и развития бота теперь более, чем достаточно. Улучшать текущую стратегию или попробовать совсем новую. Или торговать не биткоинами, а другой криптой. Настроить программу для работы с API других бирж. Все это возможно. Но это уже совсем другая история.
Вместо заключения
Искренне надеюсь, что этот рассказ будет для кого-то полезным.
Он не о том, как можно научиться торговать или программировать… Вовсе нет. Я просто хотел рассказать вам о том, как важно пробовать себя в чем-то новом и не бояться неизвестного, ставить новые цели и не отказываться от старых.
Стоит сделать шаг вперед, чуть-чуть выйти за привычные рамки – и уже понимаешь, что криптовалюта повсюду. Что будущее уже наступило. И вместе с этим первым шагом начинаешь видеть для себя огромное число новых перспектив и возможностей.
Хотите зарабатывать на крипте? Подписывайтесь на наши Telegram каналы!