Web3-Python-Development
January 16

Централизованные Биржи | Python взаимодействие

Кратко разбираем взаимодействие с централизованными биржами на python

План:

  1. Подготовка Окружения
  2. Код
  3. Анализ

1. Подготовка Окружения

Писал в прошлом материале - https://teletype.in/@vartcall/wallet_create_python

Пункт №1

также необходимо установить библилоткеку 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. Анализ

Процесс работы скрипта:

  1. Импорт Модулей - time (функции для работы с временем), hmac (используется для создания HMAC-подписей (Hash-based Message Authentication Code), что является методом проверки целостности данных и их подлинности.), hashlib (алгоритмы хэширования, MD5, SHA-1, SHA-256 и другие), requests (удобные функции для отправки HTTP-запросов)
  2. Получение времени с сервера - функция get_server_time() отправляет запрос на сервер Bybit, чтобы получить текущее серверное время.
  3. Создание подписи - функция create_signature() создает HMAC-подпись для параметров запроса с использованием API-секрета (необходимо для авторизации и безопасности запроса)
  4. Размещение ордера - place_order() принимает параметры ордера (символ, тип ордера, количество и цену) и формирует запрос для размещения ордера на Bybit. После создания подписи и формирования запроса с помощью метода requests.post(), отправляется POST-запрос на сервер Bybit для размещения ордера.
  5. Обработка ответа - Скрипт выводит статусный код и текст ответа от сервера
  6. Размещение ордера на покупку - токен TONUSD, типа ордера Market, и количества 1.

Теперь мы можем взаимодейстовать и с Централизованными Биржами на Python

Все обновления по блокчейн-разработке в моем Telegram-Канале

t.me/code_vartcall

Всем спасибо за прочтение!

16.01.2025

By Vartcall