Как да изградите бот за крипто търговия за Binance (с помощта на Python)

>

Binance и търговски ботове.

Светът не е виждал по-емблематично дуо след Берт и Ърни. Легендарната борса е залята от автоматизирани търговски ботове от всякакъв вид. Институциите и хората с висока нетна стойност изпълняват усъвършенствани алгоритмични стратегии за търговия, докато инвеститорите автоматизират портфолиото си. Превърна се във вълнуваща площадка за строители.

И все пак има още много за изграждане. До този момент са разработени само част от необходимите услуги и през следващата година ще има голям растеж.

Ако искате да започнете да участвате в разработването на търговски ботове, това е най-доброто място да започнете. В тази статия ще ви научим как да осъществявате достъп до пазарни данни от борсата, да се свързвате с борсови акаунти, да четете данни за баланса, да извършвате сделки, да поставяте свещници в диаграма и дори да се свързвате с уебсайтове в реално време за тикер данни.

Има много неща за покриване, така че нека да започнем!

Приготвяме се да започнем

Следващите стъпки ще разбият необходимите компоненти, за да започне програмирането на вашите Binance Python скриптове.

Инсталиране на Shrimpy Python

Първо, ще трябва да инсталираме библиотеката Shrimpy Python. Официалният Shrimpy Python GitHub може да бъде намерен тук.

Използвайки Pip, можете бързо да инсталирате библиотеката, като използвате следното.

pip инсталирайте shrimpy-python

Ключове за API на Binance

За да се свържем с борсата Binance, ще трябва да генерираме нов API ключ чрез борсата. Това може да стане, като следвате статията за помощ за ключови думи на Binance API.


След като стигнете до стъпката, при която копирате API ключовете от Binance, можете да ги спрете и съхраните на сигурно място (вместо да ги поставяте в приложението за управление на портфейла Shrimpy). Тези ключове ще бъдат използвани в нашите скриптове, като ги присвояват на променлива, която можем да предадем на клиента си, когато бъде създадена.

exchange_public_key = ‘…’

exchange_secret_key = ‘…’

Ключови API API

След създаването на API ключовете за обмен, ние също трябва да генерираме API ключове за Shrimpy Universal Crypto Trading API. Тези ключове се генерират чрез регистрация за API на Shrimpy Developer след това следвайки очертаното ръководство тук.

След като ключовете са създадени, съхранявайте ги на сигурно място и ги използвайте във вашите Python скриптове по следния начин.

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

Обмен на данни

Получаването на точни пазарни данни е първата стъпка към създаването на бот за крипто търговия, който може да изпълнява стратегии, базирани на сигнали, пазарни условия и движение на цените.

Това обикновено се прави, като се използват както данни от книгите за поръчки на живо, така и данни за търговия. В следващите раздели ще предоставим примери за това как да събираме и двата вида информация чрез уебсайтове и REST API.

Тикер за цена

Ценовият индикатор е нещо, което постоянно актуализира цената, за да получи най-новата цена на актива на борсата. Следващите примери ще представят няколко примера за това как да създадете и да получите достъп до ценови индикатори.

Обикновена цена

Този пример ще предостави скрипт за най-простия вид ценови индикатор. Този тикер ще използва REST API извиквания за достъп до данните за цените на борсата. Тази крайна точка се актуализира на интервал от 1 минута, така че това означава, че най-високата възможна честота за актуализиране на тикера в този пример е 1 минута.

внос скариди

# Присвояване на публични и тайни ключове за API на Shrimpy Master

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Създайте клиента на Shrimpy REST API

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# Поискайте тикера за всички активи на Binance

ticker = client.get_ticker (‘binance’)

Websocket Price Ticker

По-сложен от обикновения ценови индикатор е уебсайтовият индикатор в реално време. Този тикер използва уебсайтовете в реално време, за да бъде актуализиран с най-новата цена на борсата.

За разлика от обикновения ценови индикатор, който се актуализира на интервал от 1 минута, този ценови индикатор ще бъде актуализиран незабавно. Веднага след като цената се промени на борсата, websocket ще изпрати актуализацията и новата цена ще бъде получена от този скрипт за показване.

внос скариди

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def error_handler (грешка):

печат (грешка)

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def манипулатор (съобщение):

печат (съобщение [‘съдържание’] [0] [‘цена’])

# Създайте клиента на websocket, използвайки суровия маркер, извлечен от REST API

api_client = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

raw_token = api_client.get_token ()

client = shrimpy.ShrimpyWsClient (манипулатор на грешка, raw_token [‘маркер’])

# Данните за абонамента за уебсайта

абонирайте се_данни = {

"Тип": "Абонирай се",

"обмен": "binance",

"двойка": "ет-btc",

"канал": "търговия"}

# Започнете да обработвате потока на Shrimpy websocket!

client.connect ()

client.subscribe (абонамент_данни, манипулатор)

# След като завършите, спрете клиента

client.disconnect ()

Обмен на книги за поръчки

Прецизните книги за поръчки на борса се използват от търговци и крипто ботове, за да определят точната поръчка, която биха искали да поставят на борсата.

Когато правите поръчки, винаги е полезно да имате актуализации в реално време на книгата с поръчки. По този начин винаги вземате решения въз основа на най-актуалната информация.

Проста снимка на книга с поръчки на живо

Най-лесният начин да получите достъп до книгите за поръчки на борсата е да поискате книгата с поръчки в момента, в който ще направите поръчка.

Например, ако искате да сключите сделка на двойката за търговия ETH / BTC, можете да поискате да получите най-новата книга с поръчки за този пазар, като се обадите в REST API.

внос скариди

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Създайте API клиент за REST повиквания

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# Изтеглете книгата за поръчки на живо

поръчки = client.get_orderbooks (

‘binance’, # обмен

„ETH“, # base_symbol

„BTC“, # quote_symbol

10 # лимит

)

Websocket Live Book Book

В по-напреднали сценарии би било идеално да поддържате локално копие на книгата с поръчки, което се актуализира в реално време чрез уебсайтове. Това може да се направи с помощта на уебсайта на книгата за поръчки, наличен чрез API-та на websocket.

Свързването с двойката ETH / BTC би изглеждало по следния начин.

внос скариди

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def error_handler (грешка):

печат (грешка)

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def манипулатор (съобщение):

печат (съобщение)

# Създайте клиента на websocket, като вземете суровия маркер.

api_client = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

raw_token = api_client.get_token ()

ws_client = shrimpy.ShrimpyWsClient (манипулатор на грешка, raw_token [‘маркер’])

абонирайте се_данни = {

"Тип": "Абонирай се",

"обмен": "binance",

"двойка": "ет-btc",

"канал": "Поръчай книга"}

# Започнете да обработвате потока на Shrimpy websocket!

ws_client.connect ()

ws_client.subscribe (абонамент_данни, манипулатор)

# След като завършите, спрете клиента

ws_client.disconnect ()

Забележете, че този пример не описва как да управлявате локално книгата с поръчки, а само как да получите достъп до данните през уебсайта. Организацията на данните ще трябва да се извърши чрез персонализиран код въз основа на това как искате да управлявате книгите.

По същество управлението на книгите ще изисква начин за проследяване на текущото състояние на книгата. По този начин можете да вмъквате нови поръчки, да актуализирате стари поръчки и да изтривате поръчки, ако е необходимо въз основа на актуализациите през уебсайта.

Свързване на акаунт за обмен

За да търгуваме, ни е необходим достъп до борсова сметка. Тази борсова сметка ще се използва за събиране на данни за наличните салда и изпълнение на стратегията за търговия.

Свързване на Binance акаунт

Shrimpy предоставя удобна система за управление на потребителите, където можете да свържете индивидуални акаунти в Binance с потребители. Всеки потребител може да поддържа до 20 акаунта за обмен. По този начин всичките ви сметки за обмен могат да се управляват заедно.

Свързването на борсова сметка със Shrimpy е еднократно събитие. Това означава, че след като акаунтът бъде свързан, Shrimpy ще поддържа връзката с борсата за тази сметка и не изискват повторно свързване в бъдеще. Винаги можете да получите свързаните си акаунти, като изброите акаунтите, които са били свързани с потребител.

В този пример ще създадем първия си потребител, след което ще свържем акаунта за обмен. След като създадете първия си потребител, вие Недей трябва да създадете друг потребител отново. Винаги можете да осъществите достъп до своите потребители, като изброите потребителите, които сте създали.

# импортиране на задължителни библиотеки

внос скариди

# задайте вашите Shrimpy Master API ключове за по-късна употреба

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# задайте вашите ключове за обмен, за които искате да получите достъп до данните за баланса

размяна_име = "binance"exchange_public_key = ‘…’

exchange_secret_key = ‘…’

# създайте клиента на Shrimpy

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# създайте потребител, който ще бъде свързан с нашата борса

create_user_response = client.create_user (‘The Shrimp Master’)

user_id = create_user_response [‘id’]

# свържете нашия първи обмен, за да имаме достъп до данните за баланса

link_account_response = client.link_account (

user_id,

размяна_име,

exchange_public_key,

exchange_secret_key

)

account_id = link_account_response [‘id’]

Извличане на салда по сметки в Binance

Веднага след като акаунтът бъде свързан, Shrimpy ще започне да събира данни от борсата относно борсовата сметка. Това може да отнеме до 5 секунди, затова препоръчваме да изчакате няколко секунди (само за първоначалното свързване), преди да използвате следващия скрипт за достъп до данните за баланса за свързаната сметка за обмен, която е свързана.

След като данните бъдат събрани, Shrimpy непрекъснато ще актуализира салдото при извършване на сделки, извършване на депозити или тегления и други операции по сметката.

В този пример ние демонстрираме как да извлечем салдото по сметката на Binance.

внос скариди

# използвайте вашия публичен и частен ключ за API на Shrimpy, за да създадете клиента

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# бележка: тъй като създадохме потребител в последния ни примерен скрипт,

# можем просто да извлечем нашия списък с потребители.

потребители = client.list_users ()

first_user_id = потребители [0] [‘id’]

# извличане на акаунтите, свързани с този потребител

акаунти = client.list_accounts (

first_user_id

)

first_account_id = акаунти [0] [‘id’]

# достъп до данни за салдото за потребителския акаунт, който преди това сте създали

баланс = client.get_balance (

first_user_id, # user_id

first_account_id # account_id

)

Забележете как използвахме крайните точки за „изброяване на потребители“ и „изброяване на акаунти“. Ако вече имате акаунта и потребителските идентификатори, можете просто да въведете и тези стойности, без да ги извличате всеки път.

Извършване на сделка на Binance

Обменът може да бъде сложен. Объркващата документация, непоследователните правила за търговия и несъответствията между крайните точки могат да доведат до хаотичност на процеса на разработка.

В следващите примери ще разделим някои от най-простите начини за извършване на сделки на Binance. Без никаква сложна логика, Shrimpy може да ви помогне да изпълните поръчка на всяка голяма борса по идентичен начин.

Проста търговия

Най-лесният начин за извършване на сделка с Shrimpy е използването на крайната точка „Създаване на търговия“. Всичко, което изисква тази крайна точка, са съответните идентификатори на акаунта и двата актива, които ще търгувате „от“ и „до“.

Ще изглежда по следния начин.

create_trade_response = client.create_trade (

user_id, # Идентификаторът на потребителя

account_id, # Идентификаторът на акаунта, свързан с потребителя

from_symbol, # Активът, който искате да продадете

to_symbol, # Активът, който искате да купите

from_native_amount # Колко от "от" актив, който искате да продадете

)

Резултатът е лесен начин за покупка и продажба на активи, без да се притеснявате за спецификата на начина на извършване на сделките. Не е нужно да правите индивидуални лимитирани поръчки, да определяте различни двойки за търговия или ръчно да насочвате активите през различни котировъчни валути. Скаридите ще се погрижат за всичко.

След това можем да приложим тази крайна точка да работи, като я поставим в примерен скрипт. В този пример ще разгледаме всички активи, които държите на борсата. След това ще прегледаме списъка с активи, които притежавате, и ще ги продадем на консолидиращ актив (в този случай BTC).

СПРИ СЕ! Изпълнението на този скрипт буквално ще продаде всичко, което притежавате на борсата, и ще купи BTC. Това не е хипотетичен скрипт, това е реален пример, който изпълнява реални сделки на вашата реална борсова сметка. Не пускайте скрипта, ако не искате да продавате всичко, което притежавате, на Биткойн.

внос скариди

# Използвайте вашия публичен и частен ключ за API на Shrimpy, за да създадете клиента

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# Забележка: тъй като създадохме потребител в последния ни примерен скрипт,

# Можем просто да извлечем нашия списък с потребители.

потребители = client.list_users ()

first_user_id = потребители [0] [‘id’]

# Извличане на акаунтите, свързани с този потребител

акаунти = client.list_accounts (

first_user_id

)

first_account_id = акаунти [0] [‘id’]

# Достъп до данни за салдото за потребителския акаунт, който преди сте създали

баланс = client.get_balance (

first_user_id, # user_id

first_account_id # account_id

)

притежания = баланс [‘салда’]

# Изберете актива, за който искате да се консолидирате

consolidation_symbol = ‘BTC’

# Продайте всеки актив освен актива на консолидация

за актив в стопанства:

activ_symbol = актив [‘символ’]

activ_amount = activ [‘nativeValue’]

ако activ_symbol! = consolidation_symbol:

print (‘Продажба’ + str (брой_актив) + ‘от’ + symbol_symbol)

create_trade_response = client.create_trade (

first_user_id,

first_account_id,

актив_символ,

consolidation_symbol,

сума_актив

)

Интелигентно маршрутизиране на поръчки

В предишния пример не използвахме интелигентно маршрутизиране. По същество Shrimpy ще идентифицира актива „от“ и „до“, след това ще продаде актива „от“ на BTC, след което ще купи актива „до“ от BTC. Това може да бъде неефективно, ако има алтернативни котировъчни валути, които активът може да използва.

В много случаи използването на опцията за интелигентно маршрутизиране на поръчки би било идеално. Този прост флаг казва на Shrimpy да оцени всеки възможен маршрут, когато решава как да търгуваме актива „от“ и да придобием актива „до“.

внос скариди

# Използвайте вашия публичен и частен ключ за API на Shrimpy, за да създадете клиента

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

# Забележка: тъй като създадохме потребител в последния ни примерен скрипт,

# Можем просто да извлечем нашия списък с потребители.

потребители = client.list_users ()

first_user_id = потребители [0] [‘id’]

# Извличане на акаунтите, свързани с този потребител

акаунти = client.list_accounts (

first_user_id

)

first_account_id = акаунти [0] [‘id’]

# Достъп до данни за салдото за потребителския акаунт, който преди сте създали

баланс = client.get_balance (

first_user_id, # user_id

first_account_id # account_id

)

# Изпълнете пазарна поръчка

smart_order_response = client.create_trade (

first_user_id, # user_id

first_account_id, # account_id

„BTC“, # от_символ

„ETH“, # до_символ

‘0,01’ # количество от_символ

Вярно # активирайте smart_routing

)

Забележете как единствената разлика е допълнителният флаг в заявката за активиране на интелигентно маршрутизиране и настройката му на „True“.

Графиране на свещници

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

Диаграмите на свещниците помагат на търговците да решат кога трябва да купят или продадат актив.

Shrimpy осигурява достъп до безплатни крайни точки за достъп до свещни данни в реално време. Всеки път, когато се извършва нова сделка на борсата, свещниците се актуализират в реално време. След това тези свещници могат да бъдат анкетирани на редовен интервал, за да се показват в потребителския интерфейс във вашето приложение.

В следващия пример ще анкетираме най-новите свещници за двойката за търговия ETH / BTC на борсата Binance. Същата крайна точка може да се използва за всяка друга основна борса, така че няма разлика между използването на Binance и други борси.

внос скариди

импортирайте plotly.graph_objects като go

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Съберете историческите данни за свещника

клиент = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

свещи = client.get_candles (

‘binance’, # обмен

„ETH“, # base_trading_symbol

„BTC“, # quote_trading_symbol

‘1d’ # интервал

)

дати = []

отворени данни = []

високи данни = []

ниски_данни = []

close_data = []

# Форматирайте данните така, че да съвпадат с библиотеката за начертаване

за свещ в свещи:

date.append (свещ [‘време’])

open_data.append (свещ [‘отворена’])

high_data.append (свещ [‘висока’])

low_data.append (свещ [‘ниско’])

close_data.append (свещ [‘затваряне’])

# Начертайте свещниците

fig = go.Figure (data = [go.Candlestick (x = даты,

отворени = отворени_данни, високи = високи_данни,

ниско = ниско_данни, затворено = близко_данни)])

fig.show ()

Сглобяване на всичко

Остава ни само едно нещо. Това ще събере всичко, което обсъждахме досега, в един сценарий. Този скрипт ще наблюдава тикера за двойката BTC / USDT на Binance и ще извърши сделка за продажба на всички ваши BTC, когато стойността на BTC е надхвърлила 10 000 USDT. Това е прост пример за това как можете да комбинирате данните от уебсайтовете, за да изпълните стратегия за търговия.

внос скариди

време за импортиране

shrimpy_public_key = ‘…’

shrimpy_secret_key = ‘…’

# Задайте вашите ключове за обмен, за които искате да получите достъп до данните за баланса

размяна_име = "binance"exchange_public_key = ‘…’

exchange_secret_key = ‘…’

# Създайте клиент на websocket

api_client = shrimpy.ShrimpyApiClient (shrimpy_public_key, shrimpy_secret_key)

raw_token = api_client.get_token ()

ws_client = shrimpy.ShrimpyWsClient (манипулатор на грешка, raw_token [‘маркер’])

# Създайте потребител, който ще бъде свързан с нашата борса

# Пропуснете тази стъпка (или използвайте "списък на потребителите" крайна точка), ако вече сте създали потребител

create_user_response = api_client.create_user (‘Господарят на скаридите’)

user_id = create_user_response [‘id’]

# Свържете нашия първи обмен, за да имаме достъп до данните за баланса

# Пропуснете тази стъпка (или използвайте "списък акаунти" крайна точка), ако вече сте свързали акаунт

link_account_response = api_client.link_account (

user_id,

размяна_име,

exchange_public_key,

exchange_secret_key

)

account_id = link_account_response [‘id’]

# Изчакайте, докато Shrimpy събира данни за акаунта за обмен

# Изисква се само при първото свързване

time.sleep (5)

# Достъп до данни за салдото за потребителския акаунт, който преди сте създали

баланс = api_client.get_balance (

user_id, # user_id

account_id # account_id

)

btcAmount = 0

за актив в баланс [„салда“]:

ако актив [‘символ’] = ‘BTC’:

btcAmount = актив [‘nativeValue’]

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def error_handler (грешка):

печат (грешка)

# Това е примерен манипулатор, той просто отпечатва входящото съобщение на конзолата

def манипулатор (съобщение):

цена = съобщение [‘съдържание’] [0] [‘цена’]

ако int (цена) > 10000:

smart_order_response = api_client.create_trade (

user_id, # user_id

account_id, # account_id

„BTC“, # от_символ

„USDT“, # до_символ

btcAmount # количество от_символ

Вярно # активирайте smart_routing

)

абонирайте се_данни = {

"Тип": "Абонирай се",

"обмен": "binance",

"двойка": "btc-usdt",

"канал": "търговия"}

# Започнете да обработвате потока на Shrimpy websocket!

ws_client.connect ()

ws_client.subscribe (абонамент_данни, манипулатор)

Заключения

Въоръжени с тези скриптове, е възможно да създадете произволен брой вълнуващи търговски ботове на Binance. Докато изследвате повече неща за търговията и API-тата за Shrimpy Trading, може да намерите други полезни крайни точки, като крайни точки за лимитния ред. Те ви дават по-фин контрол върху поръчките, които правите на борсата.

Ние насърчаваме всички да изследват всичко, което предлагаме, и да правим предложения в нашите Разработчик Telegram. Пазарът на криптовалути е вълнуващ и това е само началото на нов начин за търговия с активи.

Скариди е приложение за изграждане на персонализирани криптовалутни фондове, ребалансиране и управление на разнообразно портфолио от цифрови активи. Автоматизирайте портфолиото си, като се свържете с която и да е от 16-те крипто борси, които поддържаме.

API на Shrimpy’s Universal Crypto Exchange са предназначени за разработчици. Интегрирането с нашите унифицирани приложни програмни интерфейси (API) ви дава незабавен достъп до единни крайни точки за търговия, събиране на данни, управление на потребители и други във всяка основна борса за криптовалута.

За достъп до пълните библиотеки на Python и Node следвайте тези връзки:

Възел

Python

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me