- Биржевой бот на Python — часть 1
- Пишем простого бота для поиска арбитражных ситуаций
- Терминология
- Задача
- Простой торговый робот для биржи Binance без индикаторов
- Как построить криптобот в Python и подключить его к Facebook Messenger
- Познакомьтесь с сато криптобота, который может привлечь любую цену криптовалюта с внешнего API!
- Что мы сегодня строим?
- 1. Создайте основу вашего чата: выберите свой путь
- Познакомьтесь с сато, криптобот
- Внутри Сато
- 2. Основной серверный код и требования
- Требования
- 3. Проверьте сервер: NGROK
- 4. Подготовка внешнего вызова API
- 5. Адаптируйте вызов API, чтобы включить символ, распознаваемый на входе пользователя
- Шаг 1: Поиск наших данных в SAP Consveration Ai Json
- Шаг 2: Сделайте вызов API, используя распознанный объект
- Шаг 3: Возврат данных, полученных пользователю
Биржевой бот на Python — часть 1
Пишем простого бота для поиска арбитражных ситуаций
Jan 30, 2018 · 3 min read
В одно время активно пилил букмекерских ботов и недавно заинтересовался очень похожей областью — криптовалютными биржами. В качестве первого проекта, который позволил бы мне разобраться с необъятным миром ордеров, спредов, шортов стал арбитражный бот, работающий внутри одной биржи — Poloniex.
Задача является простой и по сути как такого профита получить с такого бота нельзя, так как время жизни одной арбитражной ситуации в рамках конторы очень мала (около секунды). Но опять же, этого достаточно для входа в предметную область.
Терминология
Попробую описать необходимые для нас термины.
Криптовалютная биржа — это элемент инфраструктуры валютного рынка, деятельность которой состоит в предоставлении услуг по организации и проведению торгов, в ходе которых участники заключают сделки с криптовалютой.
Для заключение сделки продажи или покупки необходимо открыть биржевую заявку — ордер.
О р дер может быть описан следующими параметрами: пара, стоймость, объем, тип операции. Например:
Из данной таблицы видно, что вы можете купить 0.5 ETH за 1 BTC.
Пара читается справа налево при совершении операции. Например:
Если вы откроете страницу торгов на бирже Poloniex, то увидите ордера на продажу — SELL ORDERS и ордера на покупку — BUY ORDERS, которые выставляют трейдеры. Данные таблицы называются биржевым стаканом и отображают информацию о том сколько и за какую цену хотят купить / продать валюту.
Наша задача найти арбитражную ситуацию, используя информацию из биржевого стакана.
Арбитражная ситуация — это ситуация, при которой за счет разницы в оценке актива (в данном случае валюты) трейдер может получить прибыль.
Например на бирже Poloniex есть три пары валют: BTC, BCH, ETH. И представим, что в биржевом стакане были созданы следующие ордера:
Данная таблица демонстрирует арбитражную ситуацию внутри биржы. Если вы выполните ордера, выставленные трейдерами (совершите с ними сделку) :
то останетесь в прибыли на 0.6 BTC, так как изначально имели 1 BTC.
На Poloniex доступна документация API. В рамках нашей задачи нас интересует раздел Public API Methods, метод returnOrderBook .
Order Book — является описанным выше биржевым стаканом, который возвращается в JSON формате, а не на web-интерфейс.
Попробуйте перейти по ссылке Poloniex API. В результате вы должны получить ответ для BTC_ETH, похожий на этот:
- asks — ордера на продажу;
- bids — ордера на покупку;
Меня параметр currencyPair , можно получать список ордеров для различных валют.
Замечание: существует пара BTC_ETH , но обратной ETH_BTC нет. Поэтому если вы хотите выполнить покупку ETH_BTC , вам необходимо сделать продажу в BTC_ETH .
Задача
В итоге нам необходимо решить следующие задачи:
- Выполнить парсинг API криптовалютной биржи Poloniex, а именно метода returnOrderBook и реализация алгоритма поиска арбитражных ситуации;
- Реализовать архитектуру, при которой один поток парсит API и создает отдельные потоки, которые ищут арбитражные ситуации для разных валют;
- Решить проблему с отсутствием обратной пары. Например: существует пара BTC_ETH, но обратной ETH_BTC нет;
- Выводить результат поиска в консоль или в Telegram Bot.
В следующей части мы рассмотрим реализацию данного бота на языке программирования Python.
Источник
Простой торговый робот для биржи 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`
В консоли должны увидеть что-то такое:
Opened connection
Free USDT is 9976.63802, free BNB is 1000.1
Entry price is 249.36929999999998 USDT, quantity is 0.1 BNB
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.15930000 Low: 249.09580000 Close: 249.15880000 Volume: 48.44700000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.32950000 Low: 249.09580000 Close: 249.32760000 Volume: 415.72900000
Buying 0.1 BNB at 249.3693 USDT
Buy order info: <'symbol': 'BNBUSDT', 'orderId': 111111, 'orderListId': -1, 'clientOrderId': '4K1iEdjslkdfjIjhpNb2', 'transactTime': 1614758407134, 'price': '249.36930000', 'origQty': '0.10000000', 'executedQty': '0.00000000', 'cummulativeQuoteQty': '0.00000000', 'status': 'NEW', 'timeInForce': 'GTC', 'type': 'LIMIT', 'side': 'BUY', 'fills': []>
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.49750000 Low: 249.06770000 Close: 249.49740000 Volume: 733.67700000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.50000000 Low: 249.06770000 Close: 249.22690000 Volume: 817.82700000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.50000000 Low: 249.06770000 Close: 249.31670000 Volume: 882.20500000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.40270000 Volume: 3068.25600000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.48930000 Volume: 3087.31000000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.35270000 Volume: 3347.31700000
Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.35280000 Volume: 3348.73900000
Stop order. Open price is 249.36350000 USDT
Loss is -0.002169999999750871 USDT
Stop order info: <'symbol': 'BNBUSDT', 'orderId': 111112, 'orderListId': -1, 'clientOrderId': 'Qw3zLdoIBqdf98df', 'transactTime': 1614758462874, 'price': '0.00000000', 'origQty': '0.10000000', 'executedQty': '0.10000000', 'cummulativeQuoteQty': '24.93476000', 'status': 'FILLED', 'timeInForce': 'GTC', 'type': 'MARKET', 'side': 'SELL', 'fills': [<'price': '249.34760000', 'qty': '0.10000000', 'commission': '0.00000000', 'commissionAsset': 'USDT', 'tradeId': 35189>]>
Free USDT is 9976.63585, free BNB is 1000.1
Entry price is 249.65974999999997 USDT, quantity is 0.1 BNB
Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.42970000 Low: 249.30350000 Close: 249.39350000 Volume: 66.42300000
Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.44160000 Low: 249.30350000 Close: 249.42620000 Volume: 88.59900000
Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.44160000 Low: 249.30350000 Close: 249.42300000 Volume: 100.39700000
Ещё раз. Бот максимально простой. Не учитывает ни статусы заявок, ни комиссии, нет стопов. Нет обработки минимального лота. Обработка ошибок минимальная. Нет контроля непрерывной работы. Просто механика выставления заявок.
Источник
Как построить криптобот в Python и подключить его к Facebook Messenger
Автор: FreeCodeCapm Team
Дата записи
Познакомьтесь с сато криптобота, который может привлечь любую цену криптовалюта с внешнего API!
Учкоты имеют невероятный потенциал. Тем не менее, для ботов должны быть эффективными, они должны интегрировать и обмениваться данными с существующими службами и процессами.
Возможность привлечения данных от внешнего API позволяет более сложным использоваться случай, что простой Q & A логика Отказ Более того, эта способность в сочетании с NLP предлагает еще больше возможностей.
Например, Sato – Cryptobot мы будем строить сегодня – умеет распознать все криптовалюты, даже те, которые еще даже не перечислены. Мне не придется ничего делать для него, чтобы иметь возможность обрабатывать запросы на крипто, появляющихся даже лет, потому что сато, глупо, понял, что такое символ криптовалюта (после кормили тысячами их).
Что мы сегодня строим?
К концу этого урока у нас будет возможность получить данные из третьей сторонней API, в зависимости от того, что наши пользователи вводят, и отвечают на них с ценностью. Вот конечный результат того, что мы будем строить сегодня: криптобот, ака чатбо, способный получить любую цену криптовалюта.
В спешке? Вот все, что вам нужно построить свои собственные:
- Чатбот создан с SAP Consveration AI Отказ Зарегистрируйтесь здесь , это абсолютно бесплатно!
- Github Repo.
Надо увидеть это, чтобы поверить в это? Это мудрый! Нажмите здесь !
Или если вы предпочтете понять, как это было сделано, пройдите с учебником.
1. Создайте основу вашего чата: выберите свой путь
Целью сегодня – построить бот, способный признать вопрос о ценах на любую криптовалюту. Пусть ваш воображение поток, Это может быть действительно все, что есть связанные данные, доступные на сторонних API Отказ
Прежде чем мы погрузиться в учебное пособие, позвольте мне дать вам некоторую информацию о том, как работает Сато.
Познакомьтесь с сато, криптобот
Сато – это бот, сделанный для ответа на основные вопросы о криптоварах и извлечь их цены. Вот обзор того, что он может сделать:
- Fetch Cryptotogrenss цены (что мы будем строить сегодня): Sato распознает символ криптовалютов («eth», «BTC») и извлечь их цену на Cryptocompare API Чтобы наконец вернуть BTC и значение USD пользователю.
- Ответьте на вопросы пользователей о кошельках – в Интернете кошельки, обменные кошельки, холодные кошельки и аппаратные кошельки.
- Адрес вопросов о частных и открытых ключах, а также в безопасности криптовалютов.
- Кратко представляют основные криптовалюты, в настоящее время BTC, ETH, BCH и LTC.
Внутри Сато
Сегодня мы сосредоточимся на умении навыка, привлекая криптовые цены, так как требуется внешний вызов API. По сути, Сато нуждается в трех вещах, чтобы иметь возможность обнаружить вопрос о криптовой цене и вернуть стоимость, задаваемую:
Во-первых, ему нужен намерение (@CRYPTO_PRICE ) С разнообразными выражениями и упомянутыми криптовалютыми, поэтому он может эффективно признать эти вопросы. Вот некоторые выражения, используемые для определения @crypto_price:
Во-вторых, для SATO сможет распознать все криптовалюты, ему понадобится самый большой список, который вы можете найти. Я нашел 1200+ на CailmarketCap, который достаточно хорош, чтобы начать. Я создал газетку криптовых имен, чтобы улучшить свое понимание.
В-третьих, нам понадобится построить навык, который вызывает @ask_price или объект #crypto_name:
Вы также можете добавить #crypto_Name в качестве требований, чтобы убедиться, что API не выпущен без параметров:
Этот навык также должен позвонить вашему веб-капусту, который мы настроим ниже:
Не забудьте добавить сброс памяти после спускового крючка WebHook, требуется очистить память после каждого ответа.
Наконец, мы проверим наш бот прямо в мессенджере, поэтому вам нужно будет создать страницу и приложение и подключить его. Все документировано в Соединить вкладка и в Начало работы Учебное пособие Отказ
Держать его лаконичкой Этот учебник не будет подробно быть создан создание бота Отказ Мы уже начнем с функционирующего бота.
Чтобы встретиться со мной, у вас есть два варианта:
- Вариант A: Создайте свой собственный бот (кому не должен быть криптоботом), следуя руководству на работе и созданию Учетная запись в SAP Consveration AI Отказ
- Вариант B: Вилка Сато и начать отсюда. Вот почему SAP Consordation AI является совместной платформой Chambot. Это работает в значительной степени похоже на Github!
2. Основной серверный код и требования
Поскольку мы хотим взаимодействовать с нашим ботом, нам понадобится сервер, который сможет получить результаты NLP, сделанные SAP Conversational AI и отправьте наши ответы обратно.
На Бот строитель иди к Код Вкладка Чтобы найти пример базового кода, необходимого для запуска вашего API. Мы приводим примеры в Node.js, php, python и ruby. Этот учебник будет только Python.
Вот базовый код для Python:
Найдите некоторое время, чтобы посмотреть код, чтобы получить лучшее понимание того, что мы будем делать: мы будем строить этот код во время этого руководства. Вы можете сохранить его в вашем любимом текстовом редакторе на данный момент.
Требования
Как вы можете видеть, сценарий сервера использует Колба как веб-каркас Поэтому нам это понадобится.
Для вызова API мы также будем использовать Запросы Отказ Давайте пойдем вперед и установить оба:
3. Проверьте сервер: NGROK
Теперь, когда у нас есть базовый сервер, давайте запустим его и проверить его. Это позволит нам быть более инкрементным в процессе, поэтому отладка (если таковая имеется) упрощен.
Чтобы открыть наш локальный сервер в Интернет, нам понадобится НГРОК.
Примечание: если вы используете Windows, как я, есть удивительный менеджер пакетов, Шоколад который работает в значительной степени, как APT-Get на Unix. С этим вы сможете установить Ngrok в одну строку CHOCO Установить Ngrok_Portable Отказ Кроме того, Chocolatey добавляет Ngrok на ваш путь, что позволяет вам начать Ngrok с любого терминала, просто набрав неисполнительно .
Сейчас самое время начать наш сервер и проверить его, это подразумевает:
- Установите триггер веб-кауда в своем боте (подробно в шаге 1)
- Запустите свой скрипт Python
- Выиск порта 5000 в Интернет с Ngrok: NGROK HTTP 5000.
- Скопируйте форму экспедирования URL-адреса Ngrok и прошедшего его как ваша базовая URL-адрес бота на SAP Consveration AI
4. Подготовка внешнего вызова API
Это о времени, чтобы начать здание! Давайте посмотрим на вызов API, мы сделаем, чтобы получить цену любой криптовалюты. Для этого доступны несколько API, поэтому я просто пошел вперед и выбрал один: Cryptocompare API Отказ
Cryptocompare API Предлагает тысячи возможностей, но ради простоты мы будем придерживаться основами. Мы хотим, чтобы цена соответствия Crypto в BTC, USD и EUR Отказ
Вот как вызов структурирован (здесь для ETH):
У вас есть два параметра:
- Fsym : Символ криптовалютности, именно здесь нам нужно получить крипто-_Нам, распознаваемый в объекте #crypto_Name.
- Цимс : валюта, в которой будет возвращена цена. Мы выбрали BTC, USD и EUR здесь.
Итак, в нашем случае нам нужно только адаптировать Fsym Параметр в распознанную криптовалюту, а остальная часть звонка остается прежним.
5. Адаптируйте вызов API, чтобы включить символ, распознаваемый на входе пользователя
Теперь, когда мы знаем, как извлечь цены, нам нужно вернуться к нашему серверу и обновить его, чтобы он мог:
- Знайте #crypto_name, распознаваемые SAP Consveration AI.
- Сделайте API Call To Cryptocompare, используя #crypto_Name.
Шаг 1: Поиск наших данных в SAP Consveration Ai Json
Давайте посмотрим на данные, возвращаемые SAP Conservation AI на вводе пользователя. Для этого вы нажимаете на Чат со своим ботом Кнопка, присутствующая на всех страницах, в правом нижнем углу. Затем вы можете переключаться между разговором и видом на JSON, нажав на оранжевый информационный круг, как показано ниже:
Здесь наш символ доступен с [«Разговор»] [«Память»] [«Crypto»] [«RAW»] Отказ Поскольку значение и необработанные и идентичные в этом случае вы можете использовать либо.
На нашем сервере JSON возвращается на веб-сайте Test Panel – инкапсулирован в данные Словарь (см. серверный код). Поэтому нам нужен дополнительный шаг, чтобы получить его на нашем сервере:
Шаг 2: Сделайте вызов API, используя распознанный объект
Идите вперед и распечатайте его, но вы можете быть разочарованы:
Действительно, если вы хотите получить значения, возвращаемые по вызову, вам нужно распечатать R.JSON () Отказ Хорошая новость заключается в том, что JSON возвращается Cryptocompare, действительно так же просто, как может быть:
Большой! Теперь у нас просто последний шаг, чтобы выяснить: возвращение цен пользователю.
Шаг 3: Возврат данных, полученных пользователю
Теперь пришло время завершить обновление кода базового сервера: нам нужно редактировать ответы, возвращаемые, чтобы включить наши свежеприготовленные данные. Для этого мы отредактируем сообщение, возвращаемое нашим сервером:
Мы будем редактировать только ответы, чтобы включить цены, которые мы привлекли:
Поскольку ответ представляет собой строку, мы должны использовать оператор Modulo (%), чтобы включить наши цены в строку. Здесь первые% S рассказывает Python искать строку, а два следующих% f указывает на поплавке.
Наш модернизированный сервер теперь закончен, вот весь код:
С нашим новым сервером завершено, у нас теперь есть все куски нашей головоломки. Давайте собираемся:
- Запустите свой скрипт Python,
- Выиск порта 5000 в Интернет с Ngrok: Ngrok HTTP 5000 ,
- Скопируйте форму экспедирования URL-адреса Ngrok и прошедшего его как ваша базовая URL-адрес бота на SAP Consveration AI
Теперь, когда у вас есть основы, чтобы построить бот, способный извлечь третьих сторонних данных, что это будет? Вы показываете нам!
PS: Поскольку этот учебник использует Ngrok, ваш компьютер должен быть включен, и Ngrok должен работать для вашего бота для функции.
Первоначально опубликовано на SAP Consordation Ai Blog Отказ
Источник