본문 바로가기
트레이딩/암호화폐

암호화폐. API. bybit. 실시간 시세수신. WebSocket. Python

by i.got.it 2022. 2. 12.

 

 

2024.09.08 추가 

현재 시점 최신버전 API v5 에서의 실시간 시세 수신 코딩 방법 

https://igotit.tistory.com/5831

 

암호화폐 실시간 틱 데이터 수신 코딩 방법 . 파이썬

개요 암호화폐 거래소 바이비트 API 통신 위한 공식 파이썬 패키지 pybit 이용하여 파이썬에서  실시간 틱 데이터 수신 위한 가장 쉬운 기본적인 형태에서 출발하여 점진적으로 더 유용한 형

igotit.tistory.com

 

 

 

 

아래 내용은 이전 버전의 것이라 도움 안됨. 

 

 

 

 

 

 

개요. 

- 암호화폐 거래소 바이빗 에서 제공하는 WebSocket 기반 실시간 시세수신(= 실시간 체결 틱 데이터) 파이썬 코드. 

 

사전필수 준비사항

- 파이썬 개발 환경 구축. 

- 처음으로 파이썬 개발환경 구축하는 경우라면 Visual Studio 2019 의 파이썬 개발환경 강력 추천. 2가장 심플하고 지속가능한 개발환경 유지가능. ( 여타 다른 파이썬 개발환경은 산만하고 개발자로 하여금 환경 셋팅에 시간낭비 많이 시켰음. 설치좀 그만하고 코딩좀 하자.. )

 

2022.02.18 추가

VS2022 출시 상태, 신규 도입한다면 VS2022 에서  파이썬 개발환경 추천.  

 

 

코드. - Python

 

 

 

 

2021년 9월4일 코드 수정함. 라인 9 를 주석처리하고 라인 10으로 변경함.  

- 사유 : 파이썬 websockets 버전 8.1 에서는 라인 9가 정상작동하였으나, 버전 9.1 (21년9월 시점 최신 버전)에서는 오류 생긴다. 라인 10처럼 해야 정상 작동함. 

 

실행 영상. 

 

 

코드 구현 요점 설명.

코드에서 함수 websocket.send('{"op":"subscribe","args":["trade.BTCUSD"]}'); 호출하여 수신된 데이터 (아래 박스)보면 첫수신된 데이터는 성공여부 알려주고 있고, 이후부터는 체결시마다 동일형식으로 데이터 수신된다.

{"success":true,"ret_msg":"","conn_id":"b4c485b1-e03a-4196-a43b-3e692ff164e1","request":{"op":"subscribe","args":["trade.BTCUSD"]}}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421306462,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":82,"price":5294,"tick_direction":"ZeroPlusTick","trade_id":"1e2ed56a-b1e0-5615-beb5-84b833aa2cba","cross_seq":1285784559},{"trade_time_ms":1584421306462,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":4,"price":5295,"tick_direction":"PlusTick","trade_id":"18a5fd54-3fb7-5c75-9116-5272a4d6638c","cross_seq":1285784559},{"trade_time_ms":1584421306462,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":914,"price":5295,"tick_direction":"ZeroPlusTick","trade_id":"45b2643e-8f91-59f5-a7b5-23dd7317be84","cross_seq":1285784559}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421306529,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":20,"price":5296,"tick_direction":"PlusTick","trade_id":"d9eddfb6-f5ae-5bee-b48f-43d186f0bf54","cross_seq":1285784674}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421306685,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":20,"price":5298,"tick_direction":"PlusTick","trade_id":"6c030547-d800-5fff-979e-b0c5a3d683bc","cross_seq":1285784778},{"trade_time_ms":1584421306685,"timestamp":"2020-03-17T05:01:46.000Z","symbol":"BTCUSD","side":"Buy","size":415,"price":5298,"tick_direction":"ZeroPlusTick","trade_id":"42e36f30-20d9-51ae-a550-d478a5c8bf5c","cross_seq":1285784778}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421307799,"timestamp":"2020-03-17T05:01:47.000Z","symbol":"BTCUSD","side":"Sell","size":62,"price":5297.5,"tick_direction":"MinusTick","trade_id":"83053408-717f-5a8a-841b-deb8a409f41d","cross_seq":1285784863}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421308271,"timestamp":"2020-03-17T05:01:48.000Z","symbol":"BTCUSD","side":"Buy","size":20900,"price":5298,"tick_direction":"PlusTick","trade_id":"3fd727ea-055e-5cdd-a424-cf73c9b72c78","cross_seq":1285784894}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421309240,"timestamp":"2020-03-17T05:01:49.000Z","symbol":"BTCUSD","side":"Sell","size":10,"price":5297,"tick_direction":"MinusTick","trade_id":"bf215523-738e-50d9-887a-2ac499aac008","cross_seq":1285784984}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421317372,"timestamp":"2020-03-17T05:01:57.000Z","symbol":"BTCUSD","side":"Buy","size":3,"price":5297,"tick_direction":"ZeroMinusTick","trade_id":"57ef0e59-0b74-5a2d-a6ee-0741fc35db0c","cross_seq":1285785468},{"trade_time_ms":1584421317372,"timestamp":"2020-03-17T05:01:57.000Z","symbol":"BTCUSD","side":"Buy","size":247,"price":5297,"tick_direction":"ZeroMinusTick","trade_id":"d262909d-d96a-5442-93f2-f8b5e12963b6","cross_seq":1285785468}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421318880,"timestamp":"2020-03-17T05:01:58.000Z","symbol":"BTCUSD","side":"Sell","size":15,"price":5297,"tick_direction":"ZeroMinusTick","trade_id":"92d7b6a8-e8e9-54c0-8a4d-3dfdd2a7bf2d","cross_seq":1285785576}]}
{"topic":"trade.BTCUSD","data":[{"trade_time_ms":1584421321007,"timestamp":"2020-03-17T05:02:01.000Z","symbol":"BTCUSD","side":"Sell","size":485,"price":5297,"tick_direction":"ZeroMinusTick","trade_id":"68776ea2-a778-54d8-b9c4-d6240589eeb8","cross_seq":1285785772},{"trade_time_ms":1584421321007,"timestamp":"2020-03-17T05:02:01.000Z","symbol":"BTCUSD","side":"Sell","size":149,"price":5297,"tick_direction":"ZeroMinusTick","trade_id":"f13b653f-4dd9-5bbc-ac6a-03c41e4622f1","cross_seq":1285785772}]}

참고 체결데이터 자료형식. - json

주의사항 : data list의 {} 로 감싼 요소 수는 매번의 전송시 마다 다름. 1개의 {} 가 송신되는 경우도 있고, 여러개 의 {} 이 송신되는 경우도 있음. 수량 체크하여 처리하는 루틴 필수 마련할것.

{
    "topic": "trade.BTCUSD",
    "data": [
        {
            "timestamp": "2020-01-12T16:59:59.000Z",
            "trade_time_ms": 1582793344685, // trade time in millisecond
            "symbol": "BTCUSD",
            "side": "Sell",
            "size": 328,
            "price": 8098,
            "tick_direction": "MinusTick",
            "trade_id": "00c706e1-ba52-5bb0-98d0-bf694bdc69f7",
            "cross_seq": 1052816407
        }
    ]
}

from : https://bybit-exchange.github.io/docs/inverse/#t-websockettrade



 

USDT 무기한 종목 실시간 시세 받기 

 

종목예 : ETHUSDT   

USDT 무기한 종목인 경우에도 위에서 보인 인버스 무기한 종목과 코드 구조는 완전히 동일하며, 주소부분과 종목을 USDT 무기한 종목의 것으로 하면 된다. 

 

 

 

 

 

 

웹소켓 서버 3개 동시 접속 하는 코드 예. 

 

별도 정리. 

 

bybit. API. WebSocket 서버 3개 동시 접속 파이썬 코드.

개요 - bybit 의 USD 종목용 websocket 서버 1개와 , USDT 종목용 websocket 서버 2개에 동시 접속하여 코드 작동방식. 1. 파이썬 코드 실행되면 파일 apikey_url_bybit.txt 를 읽어서 접속서버주소와 api key, se..

igotit.tistory.com

 

 

 

 

 

 

 

 

 

 

연관. 

 

상기 코드 상태에서 보안접속 하는 코드. 

 

bybit. API. 보안접속 코드 . 파이썬

개요 - 암호화폐 거래소 bybit API 이용하여 접속시 api key, secrete 로 보안접속 파이썬 코드. - 이전 작업했던 파이썬 코드 에서 아래 코드 추가한다. 즉, 접속첫자리에서 본인의 보안정보 송신하면

igotit.tistory.com

 

상기 코드와 유사한데, websocket 서버 3개에 동시접속하는것. 

 

bybit. API. WebSocket 서버 3개 동시 접속 파이썬 코드.

개요 - bybit 의 USD 종목용 websocket 서버 1개와 , USDT 종목용 websocket 서버 2개에 동시 접속하여 코드 작동방식. 1. 파이썬 코드 실행되면 파일 apikey_url_bybit.txt 를 읽어서 접속서버주소와 api key, se..

igotit.tistory.com

 

 

 

거래소. bybit. 바이빗. 개요. 가입방법. 암호화폐

바이빗 거래소 주요특징. - 거래가능 종목 : - BTCUSD , ETHUSD , EOSUSD , XRPUSD - 최대 레버리지 100 까지 가능 매매자가 레버리지 사용 유무 선택가능. - - 장점 : 레버리지 1에서 거래하여 수익 10% 날것이..

igotit.tistory.com

 

 

암호화폐. API. 바이빗. REST , WebSocket

bybit API 개요 - 형식 : REST , WebSocket - bybit 거래소 가입 하여 API 키 발급 받아야 API 적용된 클라이언트 앱에서 활용가능. - 개발가능한 언어 : REST, WebSocket 구현가능한 모든 언어 - C++, 자바스크립..

igotit.tistory.com

 

 

 

파이썬. 웹소켓. WbeSocket 구현.

파이썬 WebSocket 코딩 사전 준비. - 모듈 WebSockets 설치하기. - 코드에서 import websockets 하고 실행시켜서 모듈 없다는 메시지 보이면 websockets 모듈 설치하면됨. - 아래 영상에서 websocket 아닌 websock..

igotit.tistory.com

 

 

Python. asyncio. 비동기 모듈.

Python asyncio 모듈. - event loop 에서 실행할 것들을 schedule(등록) 하고 작업들을 실행, 취소, 일시 중지 가능. - 파이썬 3.4 부터 첫배포, 버전에 따라 기능 추가. - 파이썬 3.6 에서의 기능 상태. - - asyn..

igotit.tistory.com

 

 

Python. 딕셔너리.

get() . 키에 해당하는 값 받기. my_dict = {'a': 1, 'b': 2, 'c': 3}; my_dict.get('a'); # 키 a 의 값 1 반환됨. my_dict.get('a',0); # 2번째 인자에 0을 기록하면 키없다면 0 반환됨. my_dict.get('d',0); #..

igotit.tistory.com

 

아래 링크의 내용은 bybit 공식 배포되는 웹소켓 라이브러리인데.. 현재(2020.10.31) USDT 종목은 완전하게 구현안되어있어서.. 별로 활용도가 높지 않음. 

 

암호화폐. API. bybit. WebSocket. bybit-ws. Python

bybit-ws 개요 - 파이썬에서 암호화폐 거래소 바이빗 의 웹소켓 통신 간편하게 구현가능한 라이브러리. - 바이빗에서 공식 배포 (지속가능성 보장됨 ). - USD종목과 USDT 종목에서 모두 사용가능. - - US

igotit.tistory.com

 

 

 

 

 

 

Visual Studio 2022. 파이썬 개발환경 설치

사전 준비 : Visual Studio 2022 설치된 상태. 파이썬 개발 환경 설치 방법 Visual Studio 실행하여 메뉴 : Tools -> Get Tools and Featues... 클릭하여 뜬 아래 창에서 상단 탭 워크로드 에서 Python 개발 선택..

igotit.tistory.com

 

 

 

 


첫 등록 : 2020.03.17

최종 수정 : 2024.09.08

단축 주소 : https://igotit.tistory.com/2490

 


 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5