본문 바로가기
파이썬/가상화폐

Python 바이낸스 거래소 선물자동매매 개발 가이드 ep9.주문조회

by 행복론자 2023. 1. 18.

아래는 지난 글인 주문취소 글입니다.

2023.01.17 - [파이썬/가상화폐] - Python 바이낸스 거래소 선물자동매매 개발 가이드 ep8.주문취소

 

Python 바이낸스 거래소 선물자동매매 개발 가이드 ep8.주문취소

아래는 지난 글인 주문접수 글입니다. 2023.01.16 - [파이썬/가상화폐] - Python 바이낸스 거래소 선물자동매매 개발 가이드 ep7.주문접수 Python 바이낸스 거래소 선물자동매매 개발 가이드 ep7.주문접수

jsp-dev.tistory.com

 

바이낸스 API 파트 마지막 주문조회입니다.

 

API 문서를 조금만 보시면 아시겠지만 정말 다양한 API들이 있습니다. 그럼에도 본 도서에서는 기본적인 API 사용 방법 및 프로젝트 진행에 필수적인 API들만 소개하고 있습니다. 
그런 의미에서 주문조회 API는 자주 발생하지는 않더라도 발생할 수 있는 다음 상황에 대비해 필요할 수 있습니다. 먼저 정상적인 프로그램 동작은 다음과 같습니다.

1)포지션 오픈 신호 확인 > 주문 접수 > 체결

혹은 주문 취소 상황입니다. 
2)포지션 오픈 신호 확인 > 주문 접수 > 미체결 > 주문 취소

1)의 경우는 정상적인 프로세스이기 때문에 아무 문제가 없지만 2)처럼 이미 접수한 주문을 취소하기 위해서는 기존 접수 주문에 대한 정보(orderId)가 필요합니다. 이렇게 저장&관리가 필요할 수 있는 정보들은 대개 DataBase에 저장하는 것이 일반적이지만 본 도서는 트레이딩 개발이라는 소기의 목적을 달성하기 위해 최소한의 코드만 사용하려고 합니다.
따라서 주문 취소가 필요한 경우 API를 이용해 조회해온 주문정보를 이용해 orderId를 얻어오는 방식을 사용하겠습니다. 

또 주문정보가 필요한 경우는 프로그램을 최초로 동작시킬 때입니다.
왜냐하면 다음과 같은 상황이 발생할 수 있기 때문입니다.
1)프로그램 실행 > 포지션 오픈 신호 확인 > 주문 접수 > 프로그램 종료상황 발생

이 경우 프로그램을 다시 재동작시키면 다음 프로세스대로 흘러가 주문을 두번 접수하게 될 수 있습니다.
2)프로그램 실행 > 포지션 오픈 신호 확인 > 주문 접수 (중복)

이렇게 되면 의도했던 것과 달리 보유수량이 두배가 될 수 있기 때문에 프로그램 최초 동작시 미체결주문이 있는지 확인해야 합니다.

 

위 프로세스는 프로젝트를 진행하며 구현할 예정이며 샘플 코드를 이용해 주문조회 API 호출시 어떻게 응답이 오는지 확인해보겠습니다.
main.py

import logging
from binance.um_futures import UMFutures
from binance.lib.utils import config_logging
from binance.error import ClientError
import os

config_logging(logging, logging.DEBUG)

key = os.getenv("BINANCE_API_KEY")
secret = os.getenv("BINANCE_SECRET_KEY")

um_futures_client = UMFutures(key=key, secret=secret)

try:
   response = um_futures_client.get_all_orders(symbol="BTCUSDT", recvWindow=2000)
   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
       )
   )

 

위 코드를 실행하면 주문 정보가 담긴 리스트를 응답으로 받습니다.

[{'orderId': 98099552477, 'symbol': 'BTCUSDT', 'status': 'CANCELED', 'clientOrderId': '8mBmlYe6jdYnIFsFl9kRSn', 'price': '16900', 'avgPrice': '0.00000', 'origQty': '0.001', 'executedQty': '0', 'cumQuote': '0', 'timeInForce': 'GTC', 'type': 'LIMIT', 'reduceOnly': False, 'closePosition': False, 'side': 'SELL', 'positionSide': 'BOTH', 'stopPrice': '0', 'workingType': 'CONTRACT_PRICE', 'priceProtect': False, 'origType': 'LIMIT', 'time': 1670475389210, 'updateTime': 1670476183969}]

 

status 값이 CANCELED인 것과 orderId를 확인해보면 주문접수 이후 취소한 주문이라는 것을 알 수 있습니다. 만약 여러개의 주문을 접수했다면 응답은 길이가 1보다 큰 리스트가 될 수 있으며 리스트 마지막 인덱스에 위치한 주문이 가장 최근에 접수한 주문입니다. 

 

 


같이 읽어보면 좋은 글

2022.12.27 - [파이썬/가상화폐] - [전자책] 바이낸스 코인선물자동매매 시스템 개발 방법을 담은 책이 출시되었습니다.

 

[전자책] 바이낸스 코인선물자동매매 시스템 개발 방법을 담은 책이 출시되었습니다.

🎁 바이낸스 자동매매 시스템 개발 방법을 담은 책이 출시되었습니다. "나 대신 일해주는 코인선물자동매매 프로그램 개발, 노하우 및 소스를 모두 공개합니다" ✔️ Q: 무슨 내용인가요? Python

jsp-dev.tistory.com

 

2022.11.05 - [파이썬/가상화폐] - [공지] 코인거래소별 프리미엄 체크봇 개발 가이드와 풀소스 전자책 | binance bybit | 업비트 김치프리미엄

 

[공지] 코인거래소별 프리미엄 체크봇 개발 가이드와 풀소스 전자책 | binance bybit | 업비트 김치프

https://kmong.com/gig/417785 거래소별 코인 프리미엄 알림봇 개발 가이드를 드립니다 | 36000원부터 시작 가능한 총 평점 5점의 3개 총 작업 개수 완료한 총 평점 5점인 JSDEV의 전자책, 투잡·재테크 전자

jsp-dev.tistory.com

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글