목 차
1. 들어가며
2. 사전설명
1) 주문을 위한 입력 내용
2) 주문 요청 후 수신 내용
3) 입력 및 출력 샘플
3. 코드 설명
4. 전체 코드
5. 마치며
1. 들어가며
지난 글에서는 투자가능금액 등을 통해 비트코인 주문량을 계산할 수 있었다.
복잡한 산식이긴 하지만,
주문량은 아래와 같이 구할 수 있다.
※ 주문량 = 가격 x 투자가능금액 x 레버지리 x 조정계수 x (1-(0.0006 x 2))
이번 글에서는 위의 주문량 등을 통해 주문 넣는 방법을 설명할 예정이다.
2. 사전설명
사전설명이 조금 길다. (그림 3개)
경로, 주문입력 내용, 받아오는 내용 등을 설명할 예정이다.
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 등이다.
→ 수신받은 내용은, 향후 취소주문에 쓰일 예정이다.
(여기서는 별도 설명하지 않을 예정이다)
3) 입력 및 출력 샘플
샘플을 확인해 보자.
⑦ 입력 샘플 : api_key, api_secret 입력을 통한 바이비트API 접근 및
5가지 입력(코인명, 방향, 주문형태, 물량, 시행시간)
⑧ 출력 샘플 : Response Example에서 설명하는 데이터형태는 딕셔너리 > 딕셔너리 형태이다.
3. 코드설명
아래 <그림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
다음 글에서는 진입요청 주문을 취소하는 방법을 알아보자.
'3. 비트코인 선물 > 3-1. 바이비트 선물 연구일지' 카테고리의 다른 글
(엑셀) 비트코인 청산가격 계산하기 (1) 엑셀로 계산하기 (0) | 2022.11.15 |
---|---|
(엑셀) text 함수를 활용하여 비트코인 1분봉 패턴 만들기 (0) | 2022.11.14 |
(비트코인 자동매매API) (10) 미체결 주문내역 취소하기 (0) | 2022.11.13 |
(비트코인 자동매매API) (9) 미체결 주문내역 조회하기 (0) | 2022.11.12 |
(비트코인 자동매매API) (7) 비트코인 주문량 계산하기 (0) | 2022.11.09 |
(비트코인 자동매매API) (6) 투자가능금액 조회하기 (0) | 2022.11.08 |
(비트코인 자동매매API) (5) 계좌잔고 조회하기 (0) | 2022.11.07 |
(비트코인 자동매매API) (4) 1분봉으로 진입을 위한 패턴 만들기 (0) | 2022.11.03 |