파이썬/바이낸스 선물 API

[선물 API] 미체결 주문 목록 가져오기

Eluv 2024. 12. 5. 17:34
import requests
import hmac
import hashlib
import time
from pprint import pprint

with open("D:/코인/binance key.txt") as f:
    lines = f.readlines()
    api_key = lines[0].strip()
    secret_key = lines[1].strip()

headers = {
    "X-MBX-APIKEY": api_key,
}

# 바이낸스 API 요청 함수
def binance_api(endpoint, params, method):
    params["timestamp"] = int(time.time() * 1000)
    query_string = "&".join([f"{key}={value}" for key, value in params.items()])
    params["signature"] = hmac.new(secret_key.encode(), query_string.encode(), hashlib.sha256).hexdigest()
    url = "https://fapi.binance.com" + endpoint
    try:
        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, params=params)
        else:
            raise ValueError(f"잘못된 요청입니다 : {url}, {endpoint}, {params}, {method}")
        return response.json()
    except requests.exceptions.Timeout:
        print(f"시간 초과 {url}, {endpoint}, {params}, {method}")
    except requests.exceptions.RequestException as e:
        print(f"에러 발생 : {e} \n {url}, {endpoint}, {params}, {method}")

# 미체결 주문 정보 조회
def fetch_open_orders(symbol=None):
    endpoint = "/fapi/v1/openOrders"
    params = {}
    if symbol:
        params["symbol"] = symbol.upper()
    return binance_api(endpoint, params, "GET")

# 미체결 주문 정보 조회
# 종목을 지정하지 않으면 모든 종목의 미체결 주문을 조회합니다.
# 종목을 지정하려면 fetch_open_orders("BTCUSDT")와 같이 사용
open_orders = fetch_open_orders()  
pprint(open_orders)

 

 

출력 결과

[{'avgPrice': '0',
  'clientOrderId': 'web_66pGq3hygWYAKyISgUlZ',
  'closePosition': False,
  'cumQuote': '0.00000',
  'executedQty': '0',
  'goodTillDate': 0,
  'orderId': 503252368459,
  'origQty': '0.002',
  'origType': 'LIMIT',
  'positionSide': 'LONG',
  'price': '102000',
  'priceMatch': 'NONE',
  'priceProtect': False,
  'reduceOnly': False,
  'selfTradePreventionMode': 'NONE',
  'side': 'BUY',
  'status': 'NEW',
  'stopPrice': '0',
  'symbol': 'BTCUSDT',
  'time': 1733386591407,
  'timeInForce': 'GTC',
  'type': 'LIMIT',
  'updateTime': 1733386591407,
  'workingType': 'CONTRACT_PRICE'}
]