Bybit의 Pybit: WebSocket을 통해 kline 스트림을 구독하는 방법

8641 단어 pybitbybit
초심자 암호화폐 거래자로서 저는 편하게 잠을 잘 수 있도록 거래를 자동화하는 것을 자주 봅니다. Bybit는 오픈 소스 API를 제공하는 거래소 중 하나이지만 문서가 때때로 구식일 수 있습니다. 따라서 시행 착오를 통해 배우고 있으며 마침내 WebSocket API를 사용하는 방법을 알아 냈습니다.

Bybit의 Python 라이브러리가 새로운 버전으로 출시되었습니다. 작성 당시Pybit의 v2.1.0을 다운로드할 수 있습니다.

이제 실시간 kline 데이터를 스트리밍하기 위해 Pybit WebSocket API를 사용하는 방법을 살펴보겠습니다.

from datetime import date, datetime, timedelta
import dateparser
import time
import hmac
import json
from pybit import usdt_perpetual

# Apply for API keys and secrets at  https://testnet.bybit.com/
api_key="xxx"
api_secret="xxx"

# Initialize web socket connection instance
ws = usdt_perpetual.WebSocket(
    test=True,
    api_key=api_key,
    api_secret=api_secret,
)

# Initialize http connection instance
session = usdt_perpetual.HTTP(endpoint="https://api-testnet.bybit.com", api_key=api_key, api_secret=api_secret)

# Define a target price that you want to enter your position
target_price = 40000

# handle_position is a callback that will be triggered on every new websocket event (push frequency can be 1-60s)
def handle_position(message):
    data = message["data"][0]
    if data:
        # check for target_price for entering position, if confirm=True, the data is the final tick for the interval. Otherwise, it is a snapshot.
        if data['close'] >= target_price and data['confirm'] == True:
            print("Buy Order | {} | {}".format(data['close'], time.strftime("%m/%d/%y, %H:%M:%S", time.localtime())))
            tp = target_price + (target_price * 0.05)
            sl = target_price - (target_price * 0.05)
            # Buy at market price to enter Long position
            ret = session.place_active_order(
                symbol="BTCUSDT",
                side="Buy",
                order_type="Market",
                qty=0.001, # amount to buy
                time_in_force="GoodTillCancel",
                reduce_only=False,
                close_on_trigger=False,
                take_profit=tp,
                tp_trigger_by="LastPrice",
                stop_loss=sl,
                sl_trigger_by="LastPrice",
                position_idx=0,
            )
            print("Buy Order Id | {}".format(ret["result"]["order_id"], time.strftime("%m/%d/%y, %H:%M:%S", time.localtime())))

# start kline stream here and pass in callback, symbol and desired kline interval
ws.kline_stream(callback=handle_position, symbol="BTCUSDT", interval="5")



참고: testnet.bybit.com에서 무료 크레딧을 요청하여 알고리즘을 테스트하기 위해 상상의 $$를 가질 수 있습니다. 요청은 실시간 채팅 지원을 통해 수행할 수 있습니다.

공식 Pybit의 WebSocket 예제 참조: https://github.com/bybit-exchange/pybit/blob/master/examples/websocket_example.py

좋은 웹페이지 즐겨찾기