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-Канале