만약 안되면 사용중인 PC의 시간을 동기화 해줘야 합니다.
윈도우 11 기준 화면 우측 하단에 표기된 시간을 우클릭 후
날짜 및 시간 조정을 누르신 다음 '지금 동기화'를 누르시면 됩니다.
import requests
import hmac
import hashlib
import time
from binance.client import Client
from pprint import pprint
# 바이낸스 API 키와 시크릿 로드
with open("D:/코인/binance key.txt") as f:
lines = f.readlines()
api_key = lines[0].strip()
secret_key = lines[1].strip()
client = Client(api_key, secret_key)
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_account_info():
endpoint = "/fapi/v2/account"
params = {}
return binance_api(endpoint, params, "GET")
# 레비리지 변경
def change_leverage(symbol, leverage):
try:
response = client.futures_change_leverage(symbol=symbol, leverage=leverage)
print(f"Leverage changed: {symbol} , {response}")
except Exception as e:
print(f"Error changing leverage: {e}")
same_symbol = 'symbol'
set_leverage = 2
account_info = fetch_account_info()
for x in account_info['positions']:
l = int(x['leverage'])
if l != set_leverage and same_symbol != x['symbol']: # and symbol.endswith('USDT')
change_leverage(x['symbol'], set_leverage)
same_symbol = x['symbol']
time.sleep(2)
간략하게 설명드리면 해당 코드는 바이낸스 선물에서
모든 종목들의 레버리지 배율을 일괄 변경하는 코드입니다.
특히 알트들 거래하다 보면 원래 보던 종목은 2, 3 배율정도 쓰다가
다른 종목으로 넘어갈 때 기본 배율이 20x으로 되어있는걸 깜박하고
고배율로 주문을 넣어버리는 경우가 있습니다.
그래서 실수를 방지하기 위해 배율을 일괄적으로 낮춰놓고 거래를 합니다.
물론 코드를 보시면 한번에 전부 다 변경하는 것이 아니라
A코인 변경
B코인 변경
C코인 변경
...
이런식으로 하나하나 반복해서 변경하는 매크로 기능입니다.
바이낸스의 선물에 상장된 종목의 수가 200개가 넘는 것으로 알고 있는데
그만큼 모두 변경하려면 대략 3~5분가량의 시간이 소요됩니다.
더 빠르게 작업을 시키고 싶다면 코드의 가장 마지막 부분을
원하는 딜레이 시간으로 수정하시면 됩니다.
time.sleep(0.5) # 0.5초에 한번
다만 바이낸스에서 제한하는 API 요청 제한 횟수가 있어서
0.1초와 같이 너무 짧게 줄이지 않는 것을 권장합니다.
그리고 처음에 한번 싹 다 변경한 이후에는 다음에 코드를 실행할 땐
그동안 새로 상장된 종목들만 변경하면 돼서 금방 끝납니다.
만약 이름이 USDT로 끝나는 종목만 변경하고 싶다면
if l > leverage and symbol != x['symbol']: # 해당 코드를 아래와 같이 변경
다음과 같이 변경하면 됩니다.
if l > leverage and symbol != x['symbol'] and symbol.endswith('USDT') :
'파이썬 > 바이낸스 선물 API' 카테고리의 다른 글
[선물 API] 최소 주문 금액 계산하기 (0) | 2024.11.23 |
---|---|
[선물 API] 주문 넣기, 취소하기 (0) | 2024.11.21 |
[선물 API] 유통 공급량을 이용한 시총 계산 (0) | 2024.01.31 |
[선물API] 계좌 정보 불러오기 (0) | 2023.06.22 |
[선물 API] 여러개 주문 동시에 넣기 (0) | 2023.06.17 |