3. 비트코인 선물/3-1. 바이비트 선물 연구일지

(비트코인 자동매매API) (8) 비트코인 진입/청산 주문하기

봄이오네 2022. 11. 11. 08:07
반응형
목 차
1. 들어가며
2. 사전설명
  1) 주문을 위한 입력 내용
  2) 주문 요청 후 수신 내용
  3) 입력 및 출력 샘플
3. 코드 설명
4. 전체 코드
5. 마치며

1. 들어가며

지난 글에서는 투자가능금액 등을 통해 비트코인 주문량을 계산할 수 있었다.

복잡한 산식이긴 하지만,

주문량은 아래와 같이 구할 수 있다.

    ※ 주문량 = 가격 x 투자가능금액 x 레버지리 x 조정계수 x (1-(0.0006 x 2))

 

이번 글에서는 위의 주문량 등을 통해 주문 넣는 방법을 설명할 예정이다.


2. 사전설명

사전설명이 조금 길다. (그림 3개)

경로, 주문입력 내용, 받아오는 내용 등을 설명할 예정이다.

 

1) 주문을 위한 입력 내용

그림1-1. 주문 설명 내용

 

설명 경로 : Account Data Endpoints > Acive Order > Place Active Order

 

입력내용1 : 필수로 입력해야 할 5가지 데이터

  • side           : 진입 방향 (long, short)
  • symbol       : 코인명("BTCUSD")
  • order_type : 시장가("Market"), 지정가 여부
  • qty              : 주문량
  • time_in_force : 주문이 실행/만료되는 시간을 설정한다.

      → time_in_force는 GoodTillCancel을 선택하여

          주문이 취소 또는 체결될 때까지 주문이 활성화 상태로 남아있게 하는 주문형태이다.

 

입력내용2 : 필수적으로 입력하지 않아도 되는, 필요시 선택적으로 입력

  • required에서 false로 된 내용은 선택사항이다. 참고만 하자.

 

2) 주문 요청 후 수신 내용

수신받는 데이터는 symbol, side, price 등이다.

    → 수신받은 내용은, 향후 취소주문에 쓰일 예정이다.

        (여기서는 별도 설명하지 않을 예정이다)

그림1-2. 주문시 필수 입력 5가지

 

3) 입력 및 출력 샘플

샘플을 확인해 보자.

그림1-3. 입력/수신 데이터 샘플

 

입력 샘플 : api_key, api_secret 입력을 통한 바이비트API 접근 및

                        5가지 입력(코인명, 방향, 주문형태, 물량, 시행시간)

출력 샘플 : Response Example에서 설명하는 데이터형태는 딕셔너리 > 딕셔너리 형태이다.


3. 코드설명

아래 <그림2>는 실행되지 않는다.

비트코인 매수/매도를 위한 흐름만 확인하도록 하자.

진입/청산을 위한 주문은 향후 설명하도록 하겠다.

 

그림2. 바이비트에서 주문하는 방법

 

1줄 : 3줄~28줄까지의 바이비트API 함수 등을 활용하기 위해 pybit 모듈을 임포트한다.

3줄~6줄 : 10줄~11줄로 바이비트API 접근을 위해 api_key, api_secret의 내용을 불러온다

8줄~12줄 : 바이비트API를 통해 데이터를 수신받아 session에 담는다.

 

14줄~20줄 : 진입을 위한 임의의 함수

14줄 : 진입(매수)을 위해 임의의 함수 선언한다.

15줄 : 1분 전의 패턴이 같으면, (향후 설명 예정)

16줄 : 주문가능수량 조회

17줄~18줄 : place_active_order 함수를 통해 5가지 필수 데이터 입력

                       * 5가지 데이터 : 비트코인, 롱, 시장가, 주문가능수량, 취소전까지 유효

20줄 : 진입을 위한 임의의 함수 실행

 

22줄~28줄 : 청산을 위한 임의의 함수

23줄 : 진입포지션이 "Buy"이면,

24줄 : "현재가 - 매수가 > 설정수익"이면

25줄 : 매수량을 체크하고,

26줄 : 청산하라.

28줄 : 22줄의 임의의 함수를 실행하라


4. 전체 코드

※ 앞에서도 이야기하였지만, 아래 코드는 실행되지 않는다.

    향후 아래 코드를 설명할 예정이다.

 

from pybit.inverse_perpetual import HTTP

with open(r'C:\Users\... api_key 경로... ') as f:
    lines = f.readlines()
    api_key = lines[0].strip()
    api_secret = lines[1].strip()

    session = HTTP(
        endpoint="https://api.bybit.com",
        api_key=api_key,
        api_secret=api_secret
        )

def pl_checks1():
    if self.pattern_0 == self.pattern_org:   # 패턴 일치 여부 확인
        btl.possible_qty_calc()  # 주문가능 수량 체크하기
        btl.session.place_active_order(symbol="BTCUSD", side="Buy", order_type="Market", qty=self.available_qty,
                                       time_in_force="GoodTillCancel")
        time.sleep(3)
pl_checks1()

def pl_checks2():
    if self.side == "Buy":  # 68줄 : 롱/숏 구분
        if float(self.current_price) - float(self.my_price) >= float(self.profit_0):
            btl.possible_qty_calc()  # 수량 체크
            btl.session.place_active_order(symbol="BTCUSD", side="Sell", order_type="Market", qty=self.my_qty,
                                           time_in_force="GoodTillCancel")
pl_checks2()

5. 마치며

이번 시간에는 비트코인 자동거래를 위한 진입/청산 코드를 알아보았다.

기본적인 부분은 place_active_order에 필수 데이터인 5가지를 입력하면 된다.

 * 5가지 데이터 : symlob, side, order_type, qyt, time_in_force

 

다음 글에서는 진입요청 주문을 취소하는 방법을 알아보자.

반응형