파이썬/바이낸스 현물 API

[현물 API] 주문 하기, 대기 주문 취소하기

Eluv 2024. 12. 8. 12:39

API키가 필요합니다.

바이낸스 API키 발급

 

1. 지정가 주문 방법

import ccxt
import time

# API 키 가져오기
with open("D:/코인/binance key.txt") as f:
    lines = f.readlines()
    api_key = lines[0].strip()
    secret_key = lines[1].strip()

# 바이낸스 현물 거래 설정
Spot_binance = ccxt.binance({
    'apiKey': api_key,
    'secret': secret_key,
    'enableRateLimit': True,
    'options': {
        'defaultType': 'spot',  # 현물 거래 설정
        'adjustForTimeDifference': True,
    }
})

# 지정가 주문 함수
def LIMIT_order(symbol, side, amount, price):
    try:
        Order_count = 2  # 분할 주문 횟수
        cp = 0.005  # 분할 간격 퍼센트. 0.005는 0.5%를 의미함.
        price_multiplier = 1 - cp if side == 'BUY' else 1 + cp

        for i in range(Order_count):
            adjusted_price = price * (price_multiplier ** i)
            order = Spot_binance.create_order(
                symbol=symbol,
                type='limit',
                side=side,
                amount=amount,
                price=adjusted_price,
                params={
                    'timeInForce': 'GTC'
                }
            )
            print(
                f"Order Limit placed: {order['info']['symbol']}, {order['info']['price']}, {order['info']['origQty']}")
            time.sleep(0.5)
    except Exception as e:
        print(f"LIMIT_order Error: {e}")


symbol = 'ETHUSDT'  # 종목 이름
side = 'BUY'  # 'SELL' 또는 'BUY'
amount = 0.02  # 주문할 수량
price = 3500  # 주문할 가격

LIMIT_order(symbol, side, amount, price)

 

2. 시장가 주문 방법

# 시장가 주문 함수
def MARKET_order(symbol, side, amount):
    try:
        order = Spot_binance.create_order(
            symbol=symbol,
            type='market',
            side=side,
            amount=amount,
        )
        print(f"Order Market placed: {order['info']['symbol']}, {order['info']['price']}, {order['info']['origQty']}")
        # print(f"Order Limit placed: {order}")
    except Exception as e:
        print(f"MARKET_order Error: {e}")


symbol = 'ETHUSDT'  # 종목 이름
side = 'BUY'  # 'SELL'
amount = 0.01  # 주문할 수량

MARKET_order(symbol, side, amount)

 

출력 결과

Order Market placed: ETHUSDT, 0.00000000, 0.01000000

 

'# 지정가 주문 함수' 아래의 코드를

'# 시장가 주문 함수' 코드로 변경하시면

시장가 주문을 요청할 수 있습니다.

 

주문을 할 때 선물은 positionside의 LONG, SHORT을 구분해줬지만

현물(Spot)에선 사거나, 팔거나 두가지 행동만 가능하기에

positionside 옵션은 필요하지 않습니다.

 

 

3. 대기 주문 전부 취소

def cancel_all_order(symbol):
    try:
        Spot_binance.cancel_all_orders(symbol)
        return True
    except Exception as e:
        print(f'주문 취소 실패: {e}')
        return False

symbol = 'ETHUSDT'
cancel_all_order(symbol)

마찬가지로 취소할 종목의 이름은 지정해줘야 합니다.

'파이썬 > 바이낸스 현물 API' 카테고리의 다른 글

[현물 API] 최소 주문 금액 확인하기  (0) 2024.12.08