돈벌고싶다

바이비트 파이썬 API - 주문 본문

바이비트 python API 뜯어보기

바이비트 파이썬 API - 주문

coinwithpython 2022. 5. 12. 21:03
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
반응형
Comments