Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 모멘텀지표
- API
- Query_Premium_Index_Kline
- 변동성돌파
- 파이썬
- xgboost
- orderbook
- Bybit
- Query_Kline
- bitcoin
- 코인
- 데이터불러오기
- kline
- 백테스팅
- place_active_order
- 호가창
- Public_Trading_Records
- 프리미엄지수
- latest_big_deal
- 파아썬
- 자동매매
- Query_Index_Price_Kline
- open_interest
- 비트코인
- Python
- 바이비트
- myposition
- Machine Learning
- 롱숏비율
- 머신러닝
Archives
- Today
- Total
돈벌고싶다
바이비트 파이썬 API - 주문 본문
728x90
반응형
정의
place active order 함수. 영어 풀이 그대로, 주문을 넣는 함수이다. 주문을 넣는 것에는 많은 조건들이 존재하여, 가장 이해해야 할 파라미터가 많다. order_type, time_in_force 등 반드시 이해하고 넘어가야 하는 투자 파라미터도 존재하기 때문에, 깊은 이해를 필요로 한다.
코드
- 기본 정보 setting
from pybit import usdt_perpetual
import datetime
session = usdt_perpetual.HTTP(
endpoint="https://api-testnet.bybit.com",
api_key='본인의 api key',
api_secret='본인의 secret key',
)
now = datetime.datetime.utcnow()
price_now = session.public_trading_records(symbol=symbol,limit=1)['result'][0]['price']
leverage = 10
tpsl = 0.05
- 시장가 / 지정가로 주문할 경우
# long
try:
session.place_active_order(
symbol=symbol,
side='Buy',
order_type="Market",
qty=0.01,
time_in_force="GoodTillCancel",
reduce_only=False,
close_on_trigger=False,
take_profit=round(price_now*(1 + tpsl/leverage)),
stop_loss=round(price_now*(1 - tpsl/leverage))
)
print(now.strftime("%H:%M:%S"), '에 $', price_now, 'long 진입')
except:
print(now.strftime("%H:%M:%S"), '에 $', price_now, 'long 진입 과정에서 error 발생')
# short
try:
session.place_active_order(
symbol=symbol,
side='Sell',
order_type="Limit",
qty=0.01,
price=price_now,
time_in_force="GoodTillCancel",
reduce_only=False,
close_on_trigger=False,
take_profit=round(price_now*(1 + tpsl/leverage)),
stop_loss=round(price_now*(1 - tpsl/leverage))
)
print(now.strftime("%H:%M:%S"), '에 $', price_now, 'short 진입')
except:
print(now.strftime("%H:%M:%S"), '에 $', price_now, 'short 진입 과정에서 error 발생')
- 시장가/지정가로 청산할 경우
try:
session.place_active_order(
symbol=symbol,
side='Sell',
order_type="Market",
qty=0.01,
time_in_force="GoodTillCancel",
reduce_only=True,
close_on_trigger=True,
)
print(now.strftime("%H:%M:%S"), '에 long 청산')
except:
print(now.strftime("%H:%M:%S"), '에 long 청산 과정에서 error 발생')
try:
session.place_active_order(
symbol=symbol,
side='Buy',
order_type="Limit",
price=price_now,
qty=0.01,
time_in_force="GoodTillCancel",
reduce_only=True,
close_on_trigger=True,
)
print(now.strftime("%H:%M:%S"), '에 short 청산')
except:
print(now.strftime("%H:%M:%S"), '에 short 청산 과정에서 error 발생')
Request Parameters
Parameter | Required | Type | Comment |
side | true | string | 롱 또는 숏 선택. Buy, Sell |
symbol | true | string | 코인명 |
order_type | true | string | 주문 종류. 시장가 주문과 지정가 주문이 존재한다. Market, Limit |
qty | true | integer | 주문 수량 기입. 단위는 symbol에서 지정한 코인이다. |
price | false | number | 지정가 주문일 경우 기입. 진입하고 싶은 가격을 적는다. |
time_in_force | true | string | GTC/IOC/FOK 주문. GoodTillCancel, ImmediateOrCancel, FillOrKill, PostOnly |
reduce_only | false | bool | 시장가 주문에서 포지션 진입에서는 False, 포지션 청산에서는 True |
close_on_trigger | false | bool | 포지션 진입에서는 False, 포지션 청산에서는 True |
order_link_id | false | string | 유저가 설정할 수 있는 커스텀 아이디. 주문 취소를 하고싶은 경우 해당 주문을 찾기 위해 존재한다. |
take_profit | false | number | 수익실현. 원하는 만큼 벌었을 때 자동으로 청산. |
stop_loss | false | number | 스탑로스. 손절 가격을 설정하여 자동으로 손절. |
tp_trigger_by | false | string | 수익실현이 이루어지는 가격 조건. LastPrice, IndexPrice, MarkPrice |
sl_trigger_by | false | string | 스탑로스가 이루어지는 가격 조건. LastPrice, IndexPrice, MarkPrice |
order_type (지정가 주문 vs 시장가 주문)
- Market : 시장가 주문으로, 시장에서 부르는 가격대로 주문을 하는 방식이다.
- Limit : 지정가 주문으로, 내가 원하는 가격(price) 파라미터를 설정하면 해당 가격에 도달하였을 경우 주문을 하는 방식이다.
time_in_force (GTC/IOC/FOK 주문)
- 효력 발생 시간(TIF)은 사용자가 주문할 때 지정된 주문 매개변수로, 주문이 실행되거나 만료되기 전까지 활성 상태로 유지되거나 열려 있는 기간을 지정하는 데 사용된다.
- 최소 전 유효(GoodTillCancel) : 주문이 완전히 실행되거나 거래자가 수동으로 취소할 때까지 유효한 상태로 유지한다.
- 즉시 거래 성립 또는 취소(ImmediateOrCancel) : 주문 한도액 이상에서 즉시 일부를 채워야 하며, 미충원된 계약은 취소된다. 주문을 즉시 완료할 수 없는 주문도 취소된다.
- 거래 전부 성립 또는 전부 취소(FillOrKill) : 주문 가격에 맞춰 즉시 완전히 거래해야 하며, 그렇지 않으면 완전히 최소된다. IOC와 달리, FOK는 완전히 채워지거나 취소할 수 있고, 부분적으로 채워진 계약은 허용되지 않는다.
- 포스트 온리(PostOnly) : 지정가가 아닐 경우에는 절대로 체결되지 않는 주문으로 실수로 시장가로 포지션에 진입 하는 것을 막을 때 사용한다.
reduce_only (리듀스 온리)
- 거래 시 매도 등을 잘못하는 실수를 방지하는 옵션이다. 공식 documents에서는 다음과 같이 설명한다. "지정가 주문에 대한 추가 옵션으로 사용 가능한 reduce_only 주문은 지정가 주문의 계약 수량을 오픈 포지션의 계약 크기와 일치하도록 동적으로 줄이거나 조정하여 포지션 크기를 엄격하게 줄이는 역할을 합니다. 이렇게 하면 위치가 의도하지 않게 증가하지 않습니다."
- 즉 포지션 진입에서는 반드시 False, 포지션 청산에서는 반드시 True를 설정해야 한다.
close_on_trigger
- 주문을 닫을 경우에만 쓰이는 파라미터이다. 주문을 닫을 때 오픈한 주문 수량 이상을 닫아버리면 반대 포지션이 잡혀 버리기 때문에 이를 방지하기 위한 기능이다.
- 즉 포지션 진입에서는 반드시 False, 포지션 청산에서는 반드시 True를 설정해야 한다.
728x90
반응형
'바이비트 python API 뜯어보기' 카테고리의 다른 글
바이비트 파이썬 API - 최근 거래 데이터 (0) | 2022.05.15 |
---|---|
바이비트 파이썬 API - 롱숏 비율 데이터 (0) | 2022.05.15 |
바이비트 파이썬 API - 포지션 확인 (0) | 2022.05.13 |
바이비트 파이썬 API - 과거 데이터 (0) | 2022.05.12 |
바이비트 파이썬 API - 호가창 (0) | 2022.05.12 |
Comments