- Разработка собственного торгового бота для криптовалюты
- Как все начиналось
- Знакомство с биржей
- Круговорот валюты
- Испытание боем
- Вместо заключения
- Создание бота для торговли бессрочными фьючерсами на криптовалюту на бирже FTX.com
- 1. Открытие аккаунта на бирже FTX.com
- 2. Пополнение счета биржи FTX.com
- 3. Создание API ключа на FTX.com
- 4. Добавление API ключа FTX.com в RevenueBot
- 5. Создание бота для FTX.com бессрочных фьючерсов на криптовалюту
- 6. Особенности и рекомендации по торговле на бирже FTX.com
- 7. Общие рекомендации по торговле фьючерсами на криптовалюту с использованием кредитного плеча
Разработка собственного торгового бота для криптовалюты
Рад приветствовать всех читателей топового блога о крипте!
В этой статье (а, скорее, даже – рассказе) я хочу поделиться с вами личным опытом создания программы-бота для работы на криптовалютной бирже. Сразу раскрою карты – с программированием на профессиональном уровне я не знаком и сложных программ никогда не писал. Но текст, по сути, и не об этом – он о том, как не бояться нового, ставить цели и добиваться их. И, если кого-то мой пример сможет вдохновить или хотя бы вызовет добродушную улыбку — это уже прекрасно.
Как все начиналось
Когда в размеренных буднях фрилансера настает полный штиль и заказов становится все меньше, поневоле обращаешь больше внимания на то, что происходит вокруг:
- в новостях по радио – «биткоин установил новый рекорд за год»;
- в интернетовских новостных лентах – обсуждение роста цен на новые монеты и много-много тем про ICO;
- даже на ТВ-каналах нет-нет, да и мелькало что-то про майнинг.
Последний работодатель пропал с письмом о том, что с разработки профильного ПО их команда переключается на программы, связанные с криптовалютами. И даже Топовый блог о хайпах стал не менее Топовым блогом о крипте 🙂
Я на минутку закрыл глаза и дал себе помечтать – чем занялся бы, если бы смог обеспечить себе достаточный пассивный доход. Как распорядился бы временем, которое не будет больше целиком проводиться в работе «на дядю», пусть даже и удаленно. Ради любопытства вбил в поисковик «криптобиржа», и среди прочих новостей взгляд зацепился за строчку о закрытии 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$. К примеру, при цене покупки в 6573$ этим «коридором» для бота станет 6570-6580$.
- Выставить ордер на покупку 0,0011 BTC по минимальной цене «коридора» – 6570$. Если закупочный ордер по такой цене уже выставлен, ничего не делать (иначе бот будет выставлять ордера на покупку, пока не израсходует весь баланс).
- Этот пункт работает при падении цены. Проверить, есть ли на верхней границе «коридора» (6580$) ордер на покупку и исполнен ли он. Если ордер был выставлен ранее и он исполнился, создать ордер на продажу 0,0010978 BTC. Цена продажи при этом рассчитывается ботом автоматически с учетом комиссии биржи (0,2%) и желаемой прибыли (1%). Если ордер на продажу по такой цене уже выставлен, ничего не делать (иначе бот будет спамить ордерами на продажу).
- Этот пункт работает при увеличении цены. Проверить, исполнился ли ордер на продажу по самой минимальной из выставленный ботом цен. Если ордер на продажу исполнился, то снова можно выставлять соответствующий ему ордер на закупку.
- Повторять пункты с 1 по 5 снова и снова.
- …
- PROFIT!
Таким образом бот должен был формировать список из пар ордеров (на закупку и продажу) и следить за их исполнением, подстраиваясь под текущую цену крипты. Всю информацию об ордерах программа должна была записывать в файл, при каждой успешной операции покупки или продажи, соответственно, изменяя его.
В теории все должно было замечательно работать. Заставив мозг хорошенько выложиться, я даже смог обучить бота всем этим премудростям. Время летело незаметно, и от идеи до первой стратегии и до ее реализации в строчках кода прошли уже без малого две недели. Усталость давала о себе знать, но в один прекрасный момент я внезапно осознал: все, бот готов. Мозг молил о передышке, но желание опробовать программу в действии было гораздо сильнее 🙂
Испытание боем
На старт, внимание, марш!
Следующие несколько дней прошли, как в тумане. Это сейчас я вспоминаю их с неизменной улыбкой, а тогда они казались мне маленьким, но очень чувствительным адом. В программе не работало чуть более, чем все. Мозг уже напрочь отказывался понимать происходящее. Жутко хотелось спать, и запасы кофе в квартире стремительно уменьшались. Но бот учился торговать, и оставить его без присмотра на бирже против сотен других ботов я попросту не мог.
Ох, как я завидовал в те дни мирно дремавшему рядом кошаку…
Не забросить всю мою затею помогла только появившаяся «спортивная злость». Если уже потратил столько времени на изучение, стратегию, код, так уж доделай все до конца!
И прогресс с каждым днем становился заметнее и заметнее. Программа все реже вылетала с ошибками, а потом я и вовсе мог спокойно спать всю ночь, а бот работал без сбоев. Это была маленькая, но такая ценная победа! При текущих колебаниях курса накапливалось 10-15 ордеров на продажу, но в течение дня, как правило, они все исполнялись. И баланс ежедневно подрастал на доллар-полтора. Через некоторое время я осмелел и увеличил стоимость торгуемых ордеров. Прирост баланса возрос уже до 3-4-5 долларов в день. В абсолютных цифрах, разумеется, это немного. Но в относительных накапливалась неплохая прибыль – 1-1,5% от суммы баланса за сутки.
Конечно, со временем находились и другие, незаметные при начальной отладке программы, «косяки». К примеру, она вылетала с ошибкой при неправильном ответе от сервера биржи (такое случается, когда торги ведутся слишком активно). Или файл со списком ордеров, предназначенный для первоначальной загрузки бота при сбое – при выключении электричества или перезагрузке компьютера – был «криво» пересохранен программой как раз во время выключения электричества. Шанс подобного совпадения – минимален, но оно случилось, и такие случаи тоже нужно учитывать. Спас вовремя сделанный бэкап.
Вплоть до резких колебаний цен и последующего падения при новости об отмене SegWit2x бот торговал прекрасно и чуть менее, чем за 2 недели увеличил баланс моего счета на бирже почти на 15% .
А после я стал «счастливым» обладателем BTC по цене в 7500-7700 долларов. Так ли это плохо? Не думаю. С одной стороны, за время работы бот вывел баланс в полный безубыток, даже если я продам крипту по текущей цене. С другой – я верю, что курс биткоина вернется на прежний уровень и дальше будет расти, и тогда бот продолжит приносить небольшую, но ежедневную прибыль.
Спорный момент – стоит ли ради непрерывной работы и получения прибыли сейчас продавать крипту дешевле, или выгоднее ждать. Пока биткоин подешевел, как раз есть время подумать об этом 🙂 Тем более, что бот сохраняет цены с биржи в отдельный файл и я могу вдоволь изучать динамику цен за все время его работы – видны колебания курса с точностью до нескольких секунд.
В целом, направлений для доработки и развития бота теперь более, чем достаточно. Улучшать текущую стратегию или попробовать совсем новую. Или торговать не биткоинами, а другой криптой. Настроить программу для работы с API других бирж. Все это возможно. Но это уже совсем другая история.
Вместо заключения
Искренне надеюсь, что этот рассказ будет для кого-то полезным.
Он не о том, как можно научиться торговать или программировать… Вовсе нет. Я просто хотел рассказать вам о том, как важно пробовать себя в чем-то новом и не бояться неизвестного, ставить новые цели и не отказываться от старых.
Стоит сделать шаг вперед, чуть-чуть выйти за привычные рамки – и уже понимаешь, что криптовалюта повсюду. Что будущее уже наступило. И вместе с этим первым шагом начинаешь видеть для себя огромное число новых перспектив и возможностей.
Хотите зарабатывать на крипте? Подписывайтесь на наши Telegram каналы!
Источник
Создание бота для торговли бессрочными фьючерсами на криптовалюту на бирже FTX.com
1. Открытие аккаунта на бирже FTX.com
Вам нужно зайти на сайт биржи и пройти регистрацию .
После перехода на сайт биржи кликните «Регистрация», в правом верхнем углу, заполняете нужные поля и подтверждаете аккаунт из письма, которое придет на электронную почту.
В этой статье мы рассматриваем торговлю только бессрочными фьючерсами, список которых можно посмотреть тут , либо при выборе торговой пары при создании бота.
2. Пополнение счета биржи FTX.com
Пополнить кошелек биржи можно перейдя по ссылке, после чего кликнуть на «Депозит».
В зависимости от того, в какой криптовалюте вы хотите пополнить счет, перед вами откроются разные окна. На бирже FTX торговля фьючерсами идет к USD. Если вы кликните на «Депозит» напротив USD и стейблкоин, то перед вами откроется следующее окно:
Сумма всех стейблкоинов в кошельке биржи составляет общую корзину USD. Отметим, что в USDT можно пополнять кошелек биржи, но USDT не будет являться частью корзины USD. Это значит, что нужно использовать другие стейблкоины для пополнения кошелька биржи FTX, для торговли фьючерсами. На момент написания статьи это TUSD, USDC, PAX, BUSD, HUSD.
Если же вы решили пополнить счет, например, в BTC, то откроется следующее окно:
Пополнить счет можно с помощью разных криптовалют (их подробный список указан здесь ). После этого можно воспользоваться функцией «Конвертация» и обменять вашу криптовалюту на нужный стейблкоин. Это относится и к фиатным валютам.
3. Создание API ключа на FTX.com
Чтобы создать API ключ на бирже FTX нужно перейти по ссылке. Перед вами откроются всевозможные настройки вашего аккаунта.
Далее прокручиваем вниз, до раздела «Ключи API».
Кликаем на «Создать ключ API».
Система отобразит сам ключ и секретную часть ключа.
4. Добавление API ключа FTX.com в RevenueBot
Переходим в личный кабинет RevenueBot для добавления созданного на бирже FTX API ключа.
Кликаем на «Добавить API ключ». Перед вами появляется форма, в которой нужно заполнить все поля.
Внимание! Если вы создавали API ключ на бирже используя субаккаунт, то поле API Key должно быть заполнено в формате «apiKey/subaccountname», например: «C1ZhRKLl0nnTiNjsq1no3Bb9OlSZ-jU6HKwGuLl6/subacc1»
5. Создание бота для FTX.com бессрочных фьючерсов на криптовалюту
Переходим во вкладку «Боты», в личном кабинете, и нажимаем «Создать нового бота».
По порядку заполняем все появляющиеся поля. После указания биржи и API ключа вам откроются подробные настройки бота. Изначально выбираем торговую пару, алгоритм, депозит и размер кредитного плеча. Все представленные настройки используются исключительно в целях ознакомления.
Прокручиваем далее. Тут можно выбрать готовые шаблоны для бота или же сбросить все настройки до исходных. После нам открывается множество настроек, предлагаю поговорить о каждой по порядку:
- Перекрытие изменения цены. Данная настройка по сути задает на сколько процентов бот покроет возможное изменение цены в торговой паре своими страховочными ордерами. Эта настройка задает пределы, в которых бот сможет усредняться. Если цена изменится больше чем указано в настройке Перекрытие изменения цены , то бот там уже не будет усредняться, так как уже исполнится последний ордер страховочной сетки. Мы не рекомендуем выставлять Перекрытие изменения цены ниже 30-40%
- Отступ первого ордера. Задает, на сколько процентов от текущей цены будет стоять первый ордер в сетке ордеров. Например, BTC стоит $50 000, вы хотите, чтобы первый ордер в сетке открылся при $49 000. Для этого это нужно выставить Отступ первого ордера 2%.
- Цена на бирже. Цена, которая будет использоваться при расчете в сетке ордеров. Цену продажи рекомендуется использовать при алгоритме LONG, цену покупки при алгоритме SHORT.
- Сетка ордеров, % мартингейла. Количество ордеров в сетке зависит от депозита, выделенного боту. Депозита должно хватать на создание всех ордеров сетки. Мы обычно рекомендуем депозит не меньше 200-300 USD и количество ордеров при этом 15-20. Мартингейл задает на сколько процентов объем каждого следующего ордера сетки будет больше чем предыдущий. Чем больше мартингейл, тем меньший отскок цены нужен будет, чтобы исполнился тейк-профит ордер. Чем больше мартингейл, тем меньше по объему будут первые ордеры сетки, что уменьшает профит, но сокращает риски. Мы обычно рекомендуем использовать мартингейл не меньше 3-5%. При больших депозитах можно увеличить мартингейл до 10%. Нажав на кнопку PRO можно создать собственную сетку ордеров, которой нет в представленных вариантах.
- Включить частичное выставление сетки ордеров. Данная настройка позволяет задать количество одновременно активных ордеров, которые будут размещены на бирже из всей сетки ордеров. По мере их исполнения бот будет выставлять новые ордеры, чтобы одновременно активных на бирже было ровно столько, сколько указанно в этой настройке.
- Включить реструктуризацию цикла. Используя данный механизм, вы можете увеличить значение настройки «перекрытие изменения цены (%)» в текущем активном цикле бота. Новое значение будет применено, когда на бирже исполнится заданное количество ордеров страховочной сетки. Таким образом, вы можете переместить цены оставшихся (новых) страховочных ордеров дальше от текущей цены на бирже, когда цена меняется сильно и часть страховочных ордеров бота уже исполнена.
- Профит. Тейк-профит ордер, сюда указываете процент прибыли, при котором бот завершит рабочий цикл. Важно: комиссия биржи не учитывается при выставлении тейк-профит ордера.
- Монета профита. Здесь указывается криптовалюта, в которой будет получаться прибыль. Настраивать это для фьючерсной торговли нельзя, тут профит получается всегда в USD.
- Подтяжка сетки ордеров. Рынок не статичен, поэтому разворот цены не в нужном направлении – обычное дело. Чтобы не ждать, пока цена вернется к нужному уровню, для начала исполнения ордеров, можно настроить Подтяжку сетки ордеров , которая будет актуализировать сетку к актуальной цене. Стоит отметить, что данный параметр не должен быть меньше чем Отступ первого ордера. Это способствует большому количеству отмен ордеров, а это не приветствуется биржами.
- Задержка перед отменой сетки ордеров для подтяжки. Здесь задается время, через которое текущая сетка будет отменена и произойдет подтяжка к актуальной цене на бирже. Это позволяет избежать ложных срабатываний подтяжки сетки ордеров.
- Задержка после отмены сетки ордеров для подтяжки. Здесь задается время, через которое новая сетка будет выставлена. Бывает, что цена очень быстро возвращается на прежнее место, поэтому сетка может быть неактуальной.
- Задержка после завершения цикла. Задается время, через которое начнется новый цикл, после окончания старого.
Далее кликаем на «Расширенные настройки бота». Здесь мы видим:
- Капитализация профита. Всю полученную прибыль или указанный процент бот будет добавлять к своему депозиту, тем самым увеличивая его.
- Логарифмическое распределение цены. Когда на рынке небольшая волатильность, будут исполняться только первые ордеры сетки, остальные останутся неисполненными и будут отменены после исполнения тейка и завершения цикла бота. Чтобы задействовать больше депозита в торговле, можно прибегнуть к Логарифмическому распределению цен ордеров. С его помощью настраивается плотность ордеров. Значения логарифмического коэффициента > 1 увеличат плотность ордеров вблизи текущей цены (вовлекает больше депозита в торговлю при малой волатильности, что увеличит профит, но увеличим и риски). Значения логарифмического коэффициента Показать сетку ордеров , вы можете увидеть рассчитанные цены и объемы ордеров сетки.
- Ограничение цены. Здесь задается ценовой уровень, выше которого, при алгоритме LONG, бот не начнет цикл. При алгоритме SHORT нужно установить минимальную цену, при которой бот не начнет цикл.
- Фиксить частично выполненный ордер. Включив данную настройку можно задать процент профита для расчета такой цены, при достижении которой мы получим профит, если отменим частично выполненный ордер.
После заполнения всех вышеописанных настроек нажимаем на «Создать нового бота».
Теперь в стартовой странице вкладки «Боты», в таблице снизу, располагается ваш созданный бот.
6. Особенности и рекомендации по торговле на бирже FTX.com
- На бирже FTX нет режима позиции – хеджирование. Если вы хотите реализовывать механизмы хеджирования рисков, то можете использовать субаккаунты, которые можно создавать в настройках вашего аккаунта. Субсчета могут использоваться, чтобы реализовывать различные стратегии торговли и при этом исключить влияние открытых позиций друг на друга.
- Если у вас в кошельке биржи FTX есть средства (любые другие криптовалюты) помимо стейблкоинов, которые обеспечивают корзину USD, то имейте в виду, что при недостатке маржи/обеспечения USD, эти средства будут автоматически обменены на спот рынке биржи по текущему курсу, чтобы поддержать маржу USD. Это правила биржи. Подробнее про маржу/обеспечение можно почитать тут и тут .
- Чтобы торговать некоторыми торговыми парами нужно пройти на бирже KYC level 2. Это касается, например, пары XRP/USD.
- Если вы хотите торговать с плечом >20, то такое плечо можно выставить только если нет активных ордеров и(или) открытой позиции по любой из торговых пар. Это правило биржи. Поэтому если вы намерены торговать с плечом >20, используя несколько ботов по разным торговым парам, то нужно заранее вручную нужное плечо назначить всем парам на бирже, по которым планируете вести торговлю. Иначе боты не смогут выставить сами такие плечи.
- Изначально на вывод доступно только $1 000 за все время. Что бы увеличить лимит с $2 000 до $9 000 в сутки, нужно указать настоящее имя и страну проживания. Для пополнения счета в фиатных валютах нужно пройти полную процедуру верификации, с предоставлением документов подтверждающими личность.
7. Общие рекомендации по торговле фьючерсами на криптовалюту с использованием кредитного плеча
Мы обычно рекомендуем использовать в торговле, ботами и вручную, не больше 20-30% от средств, которые находятся на вашем фьючерсном кошельке на бирже. Остальные 70-80% обеспечат маржу и позволят вытянуть открытые позиции в плюс, при экстремальном изменении цены не в нужную сторону. Главной целью торговли должно являться недопущение ликвидации (margin call).
Также мы рекомендуем торговать только монеты из ТОП-20 coinmarketcap.com и не рекомендуем использовать экстремальные кредитные плечи >20.
Перекрытие изменения цены используйте не менее 40%, используйте настройку реструктуризации цикла, которая увеличит перекрытие изменения цены до например 60% при сильном изменении цены, что позволит боту расширить возможности по усреднению.
Источник