Web3-Python-Development
January 16
Централизованные Биржи | Python взаимодействие
Кратко разбираем взаимодействие с централизованными биржами на python
План:
1. Подготовка Окружения
Писал в прошлом материале - https://teletype.in/@vartcall/wallet_create_python
также необходимо установить библилоткеку requests
pip install requests
Для взаимодействия с Bybit -> Используем Rest API
Как его получить api -> https://www.youtube.com/watch?v=_dFhkfd6o8Q
2. Код
import time
import hmac
import hashlib
import requests
api_key = 'bybit_key'
api_secret = 'bybit_secret_key'
base_url = 'https://api.bybit.com'
def get_server_time():
response = requests.get(f"{base_url}/v5/public/time")
return response.json()['time_now']
def create_signature(params, api_secret):
query_string = '&'.join([f"{key}={value}" for key, value in sorted(params.items())])
return hmac.new(api_secret.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest()
def place_order(symbol, side, order_type, qty, price=None, category='spot'):
endpoint = "/v5/order/create"
params = {
"api_key": api_key,
"symbol": symbol,
"side": side.lower(),
"order_type": order_type,
"qty": qty,
"time_in_force": "GTC",
'timestamp': int(time.time() * 1000),
'category': category
}
if price:
params['price'] = price
params['sign'] = create_signature(params, api_secret)
response = requests.post(f'{base_url}{endpoint}', data=params)
print("Response status code:", response.status_code)
print("Response text:", response.text)
try:
return response.json()
except requests.exceptions.JSONDecodeError:
print("Failed to decode JSON response")
return None
# let's buy a token
symbol = "TONUSD"
side = "buy"
order_type = "Market"
qty = 1;
order_response = place_order(symbol, side, order_type, qty)
if order_response:
print("Order response:", order_response)
if order_response['retCode'] == 0:
print("Order placed successfully ✅")
order_id = order_response['result'].get('order_id', 'order_id not found')
print("Order ID:", order_id)
print("$TON bought successfully 🚀")
else:
print("Failed to place order:", order_response.get('retMsg', 'Unknown error'))
else:
print("Failed to place order ❌")3. Анализ
Процесс работы скрипта:
- Импорт Модулей - time (функции для работы с временем), hmac (используется для создания HMAC-подписей (Hash-based Message Authentication Code), что является методом проверки целостности данных и их подлинности.), hashlib (алгоритмы хэширования, MD5, SHA-1, SHA-256 и другие), requests (удобные функции для отправки HTTP-запросов)
- Получение времени с сервера - функция
get_server_time()отправляет запрос на сервер Bybit, чтобы получить текущее серверное время. - Создание подписи - функция
create_signature()создает HMAC-подпись для параметров запроса с использованием API-секрета (необходимо для авторизации и безопасности запроса) - Размещение ордера -
place_order()принимает параметры ордера (символ, тип ордера, количество и цену) и формирует запрос для размещения ордера на Bybit. После создания подписи и формирования запроса с помощью методаrequests.post(), отправляется POST-запрос на сервер Bybit для размещения ордера. - Обработка ответа - Скрипт выводит статусный код и текст ответа от сервера
- Размещение ордера на покупку - токен
TONUSD, типа ордераMarket, и количества 1.
Теперь мы можем взаимодейстовать и с Централизованными Биржами на Python
Все обновления по блокчейн-разработке в моем Telegram-Канале