최근 Python으로 Binance 선물매매 프로그램을 만들고 있습니다.
CCXT를 사용할 수도 있지만 저는 Binance Future connector를 사용하고 있는데요
다음 코드를 이용해 레버리지를 적용한 롱/숏 주문을 해봤습니다.
#!/usr/bin/env python
import logging
from binance.um_futures import UMFutures
from binance.lib.utils import config_logging
from binance.error import ClientError
config_logging(logging, logging.DEBUG)
key = ""
secret = ""
um_futures_client = UMFutures(key=key, secret=secret)
try:
response = um_futures_client.new_order(
symbol="BTCUSDT",
side="SELL",
type="LIMIT",
quantity=0.001,
timeInForce="GTC",
price=59808.02,
)
logging.info(response)
except ClientError as error:
logging.error(
"Found error. status: {}, error code: {}, error message: {}".format(
error.status_code, error.error_code, error.error_message
)
)
위는 예시 코드라 가격이 현재 가격이 아니지만 현재 가격과 제가 주문하고 싶은 수량(quantity)에 맞춰 주문을 하니 다음 에러가 발생했습니다.
“Margin is insufficient” - Error
증거금도 있는데 부족하다고 나와서 찾아보니 해결책은 생각보다 간단했습니다.
주문가능한 수량을 최대 가능 주문수량보다 줄이면 바로 해결됩니다.
예를 들어 BTC 가격이 100달러이고 내가 가진 증거금이 100달러, 그리고 적용한 레버리지가 1배라면
수수료를 제외하고 최대 주문가능 가능한 BTC 수량은 1개입니다.
하지만 그렇다고 하더라도 BINANCE 앱을 이용해 주문을 하려고 하면 1개를 온전히 주문가능한게 아니라 수량이 그것보다 줄어든 상태로 나옵니다. 이렇듯 앱을 이용한 주문은 자동으로 필요 마진을 더 계산해서 주문가능 개수를 보여주지만
프로그램을 이용해 직접 주문요청을 하면 바이낸스 앱에서 적용됐던 마진율만큼 주문 수량을 줄여야 합니다.
저는 보유 잔고, 주문할 SYMBOL의 현재 가격, 레버리지를 종합해 내가 주문할 수 있는 최대 주문수량에서 0.9를 곱해 주문하니 더 이상 “Margin is insufficient” 에러가 발생하지 않고 정상주문이 되었습니다.
참고 :
https://dev.binance.vision/t/margin-is-insufficient-error/3810/2
같이 읽어보면 좋은 글
2022.12.27 - [파이썬/가상화폐] - [전자책] 바이낸스 코인선물자동매매 시스템 개발 방법을 담은 책이 출시되었습니다.
2022.11.05 - [파이썬/가상화폐] - [공지] 코인거래소별 프리미엄 체크봇 개발 가이드와 풀소스 전자책 | binance bybit | 업비트 김치프리미엄
댓글