파이썬/바이낸스 선물 API

[선물 API] 최소 주문 금액 계산하기

Eluv 2024. 11. 23. 23:36
import requests
import json
import time

data = requests.get('https://fapi.binance.com/fapi/v1/ticker/bookTicker').json()

All_USDT_Ticker = {}

for x in data:
    if x['symbol'].endswith('USDT'):
        All_USDT_Ticker[x['symbol']] = float(x['bidPrice'])

time.sleep(0.5)

exchange_info = requests.get('https://fapi.binance.com/fapi/v1/exchangeInfo').json()

min_notional = {}
min_order_amounts = {}
for symbol_info in exchange_info['symbols']:
    symbol = symbol_info['symbol']
    if not symbol.endswith('USDT'):
        continue
    filters = {f['filterType']: f for f in symbol_info['filters']}
    if symbol in All_USDT_Ticker :
        if 'MIN_NOTIONAL' in filters:
            min_notional[symbol] = float(filters['MIN_NOTIONAL']['notional'])
        if 'LOT_SIZE' in filters :
            min_order_amounts[symbol] = round( float(filters['LOT_SIZE']['minQty']) * All_USDT_Ticker[symbol], 2)
print('notional :',min_notional)
print('amounts :',min_order_amounts)

 

코인마다 최소 주문 수량, 금액이 있습니다.

해당 기준보다 적은 주문을 넣으면 주문이 거절됩니다.

 

위의 코드를 실행했을 때 출력되는 결과입니다.

notional : {'BTCUSDT': 100.0, 'ETHUSDT': 20.0, 'BCHUSDT': 20.0, 'XRPUSDT': 5.0, ..., 'SOLUSDT': 5.0,}
amounts : {'BTCUSDT': 98.58, 'ETHUSDT': 3.46, 'BCHUSDT': 0.54, 'XRPUSDT': 0.16, ..., 'SOLUSDT': 260.5,}

notional은 최소 주문 금액입니다.

amounts는 최소 주문 수량 * 현재가격 입니다.

 

주문을 넣을 땐 양쪽 금액 이상으로 주문해야 합니다.

 

예를들어 이더리움의  amounts가  3.46이라 해서

그보다 큰 4~5달러만 주문하면 되는게 아니라

notional의 20달러 이상으로 주문해야 합니다.

 

반대로 SOL은 notional이 5.0이지만

amounts의 260.5보다 더 큰 금액을 주문해야 합니다.

 

 

알트들 단타칠 때 지나치게 큰 금액을 넣지 않기 위해서

자신이 생각한 분할 매수 금액보다 큰 주문이 요구되는 종목은

나중에 조건문을 사용해서 걸러내면 됩니다.

limit_amounts = 20
if min_notional[symbol] > limit_amounts or min_order_amounts[symbol] > limit_Quantity:
	continue

대충 20달러 이상 주문을 넣어야 하는 종목은 넘기는 조건문