Trading2020. 3. 18. 22:16

개요 

- 암호화폐 거래소 bybit 에서 REST API 를 공개하고 있기에 이를 일반적인 http request 이용하여 코딩해도 되나 더 간단하게 작업가능한 파이썬 모듈이 bybit 에서 제공되고 있다.  이를 설치하면 더 간단하게 코딩작업 가능하다. 

 

 

파이썬 모듈 bybit 설치. 

pip install bybit 구문으로 간단하게 설치완료됨. 

 

 

bybit 파이썬 모듈 기반 샘플코드. 

 

 

 

 

연관 

 

 

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

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

igotit.tistory.com

 

 

bybit. API 키 생성. 암호화폐.

bybit API 키. - bybit API 이용하면 시장데이터 수신 및 자동 거래 주문 코딩 가능. - bybit 의 API 이용하기 위해서는 키 생성 필수. - API 키는 외부 공개하면 안됨. - API 키 등록시 고정 IP 를 연동하여 등록..

igotit.tistory.com

 

 

 

Visual Studio 2019. 파이썬 개발환경 구축

Visual Studio 2019 에서 파이썬 개발환경 설치. - 사전준비 : Visual Studio 2019 기본설치된 상태 에서 하기 셋팅 진행 VS2019 에서 Python Interactive View 활용예. 첫등록 : 2019년 4월 18일 최종수정 : 본..

igotit.tistory.com

 

 

 

 

CCXT . 개요. 설치. 모든 암호화폐 거래소 API.

CCXT - 거의 모든 암호 화폐 거래소( 100여개 ) 통신가능 API. Features support for many cryptocurrency exchanges. 현재 122개 거래소. bybit, binance, bitmex 도 지원됨. fully implemented public and priva..

igotit.tistory.com

 


첫 등록 : 2020.03.18

최종 수정 : 

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

 


 

Posted by 리치굿맨

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. Bybit

    아하 그렇군요 ㅎㅎㅎ
    감사합니다. ^^

    2020.06.24 04:14 [ ADDR : EDIT/ DEL : REPLY ]
  3. 안녕하세요?

    제가 아직 개념이 잘 잡히지 않았는데
    딕셔너리랑 json이랑 똑같이 생간거 같거든요?
    근데 뭔가 줄바꿈이 되어있으니까 json인가요? 바이비트 저 함수들 쓰면 json을 주는 건가요?

    import bybit
    client = bybit.bybit(test=True, api_key="api_key", api_secret="api_secret")
    a = client.Conditional.Conditional_getOrders().result()
    라고 하면 a에 저장된건 json이라고 생각하면 되는 건가요?
    import json
    data = json['result'][1]['side']
    이렇게 하면 data에 "Sell"이라는 문자열이 저장이 되나요?

    bybit에서 제공하는 함수를 써서 변수에 저장하면 그게 뭐로 저장되는 건지 모르겠어요 단순 문자열인지 아니면 json인지 딕셔너리인지
    reponse 예시를 보여주는 것 중에서 일부의 데이터를 뽑아 다른데에 저장하고 싶으면 제가 위에 적은 것처럼하면 되는것인가요? 인터넷 json 관련해서 찾아보니까 저렇게 하던데...

    2020.10.20 00:45 [ ADDR : EDIT/ DEL : REPLY ]
    • import json
      data = json['result'][1]['side']

      이 부분

      import json
      data = a['result'][1]['side']
      로 수정하겠습니다

      2020.10.20 00:51 [ ADDR : EDIT/ DEL ]
  4. 안녕하세요?

    import bybit
    client = bybit.bybit(test=True, api_key="api_key", api_secret="api_secret")
    a = client.Conditional.Conditional_getOrders().result()
    b=json.loads(a)
    이렇게 하면

    b가 딕셔너리라고 생각하고 다루면 되는 것인가요?
    data = b['result'][1]['side']
    print(data)
    하면
    Sell이 출력이 되는 건가요?

    2020.10.20 15:51 [ ADDR : EDIT/ DEL : REPLY ]
  5. 안녕하세요?

    client.Conditional.Conditional_getOrders().result()
    가 튜플이군요! ㅎㅎ

    2020.10.20 17:23 [ ADDR : EDIT/ DEL : REPLY ]
  6. 안녕하세요?

    파일명 bybit으로 했다가 오류뜨고
    컴퓨터 시간 느려서 오류뜨고... ㅠㅠ
    또 지금은 Resource 'Order' has no operation 'Order_new' 오류뜨는데
    print(client.Order.Order_new(side="Buy",symbol="BTCUSD",order_type="Limit",qty=1,price=8300,time_in_force="GoodTillCancel").result())
    똑같이 썼는데 왜 오류가 뜰까요 ㅠㅠ

    2020.10.20 22:21 [ ADDR : EDIT/ DEL : REPLY ]
  7. 안녕하세요?

    bybit.bybit

    이 부분에서

    Test 인자에

    True를 주면 테스트넷으로 이용하는 것이고,

    False를 주면 실거래용으로 이용할 수 있는 것인지요??

    2020.11.11 14:29 [ ADDR : EDIT/ DEL : REPLY ]
  8. 안녕하세요?

    404 not found 뜨는데 어떻게 해야 하나요..
    client = bybit.bybit(test=True, api_key="my api key", api_secret="my secret key")

    my api key에 api 키
    my secret key에 시크릿 키

    넣었는데 404 not found 떠요 ㅠㅠ
    복사 붙여넣기 했는데 도대체 뭐가 문제알까요,,,,

    혹시나해서 api 새로 발급받아 넣었는데 또 그래요. ㅠㅠ

    두 번째줄부터 에러뜨니 착잡합니다,,ㅠ

    2020.11.11 20:00 [ ADDR : EDIT/ DEL : REPLY ]
    • 그냥 하면 되는게 정상인 지점이라... 이런 오류인 경우에는 가장 기본적인 곳들 점검.

      체크포인트.
      1. 파이썬 버전 점검 . 저의 경우 파이썬 3.7 사용중입니다.
      2. 현재 코드 시험 중인 서버가 테스트 넷이므로 api key, secret 키도 테스트넷에서 발급받아야 합니다.

      기타등등 아무리 해도 안되는 경우,
      다른 라이브러리에서는 정상작동하는 지 확인.
      예 : CCXT 라는 파이썬 라이브러리 를 바이빗에서도 추천하고 있더군요 . 상세정보 : https://igotit.tistory.com/2577




      코딩 중 오류 문제해결 원칙이 있습니다.
      - "내탓이오" 마인드 필수. 코딩작업 중 발생하는 오류의 원인은 99.99%가 본인이 오타든 로직 오류든 설정오류든 뭔가를 잘못했기 때문에 에러 발생하며, 항상 해결책은 자신이 한것 범위내에서 문제해결의 답이 있습니다.

      이후로도 100 종 이상의 의도한것과 다르게 작동하는 오류를 만나게 될것이기에 미리 마음의 준비를 해두는게 덜 지칩니다.

      2020.11.11 21:01 신고 [ ADDR : EDIT/ DEL ]
    • 안녕하세요?

      비쥬얼 스튜디오 커뮤니티에서 파이썬 최신 버전으로 다운받아 쓰고 있어요.
      물론 테스트넷에서 발급받았습니다 ㅠㅠ

      “” 따옴표 안에 키만 잘 넣으면 되는 것 아닌가요?
      \n 개행같은건 당연히 필요 없겠죠? 안넣는게 당연한 거지만 당연하지 않게 오류가 나니까 ㅠㅠ
      저번에도 어쩐지 주문 안되고 시세 정보만 잘 불러와지던데.. api 키가 잘 전달이 안된듯 한데..
      ㅠㅠ 아니 왜 오류가 발생하는거지? 복사 붙여넣기했는데..

      근데 바이비트에서 ccxt 추천하는 것 실환가요?
      저는 뭔가 공식적이고 지원이 끊기지 않는 것 쓰고 싶어서요.
      살펴보니 ccxt 괜찮아보입니다. 지원 안 끊길까요?

      2020.11.12 09:57 [ ADDR : EDIT/ DEL ]
  9. 키값 기록시 \n 기록하지 않아요.
    추가 체크 포인트 ; 바이빗 에서 키 발급시 본인 PC 의 고정아이피 기록하고 발급받는 방식과 아이피 기록하지 않고 발급하는 2가지 방식이 있는데, 아이피 기록한것과 실제 본인 PC의 고정 아이피가 일치 하지 않는다면 연결 오류 생깁니다.

    바이빗의 공식 깃허브 https://github.com/bybit-exchange 에 보면 ccxt 소개 중인걸로 봐서 지속 가능성은 괜찮을 듯 합니다. 사실 거래소들이 API 까지는 책임지고 관리 잘하는데,,, 이를 활용하기 편하게 해주는 중간 단계의 모듈은 빠르게 배포되지도 않고.. 답답한 면이 있어요.

    ccxt 를 보면 개인이 취미생활로 배포하는건 아닌것 같고, ,, 자기네들 밥줄이 걸려있더군요. 무책임한 짓을 덜 할것으로 예상됩니다.

    2020.11.12 12:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요?

      아이피는 따로 등록하지 않고 발급 받았습니다.
      아직도 왜 안되는지는 모르겠습니다. ㅠㅠ
      아이피 등록해서 발급 받아볼까 합니다..

      제 컴퓨터랑 구름 ide 일관되게 에러 뜨는 것을 보니
      api 문제일 확률이 크다고 생각을 합니다..

      솔직히 문법적인 오류가 날 만한 곳이 없으니까요..
      근데 생각해보면 딱히 api도 문제될 부분은 없는걸요. 모든 아이피허용이니.. 심히 의문이군요..
      ccxt로도 해봐야 겠군요..

      덧1. 그래서 모듈을 안쓰시고 rest api로 다루시는군요. 저도 인터넷에 rest api 사용법 찾아봐야겠습니다.
      덧2. 감사합니다.

      2020.11.12 15:59 [ ADDR : EDIT/ DEL ]
  10. 안녕하세요?

    유선 인터넷 쓰니까 정상적으로 되네요 ㅎㅎ

    무신 인터넷 상태가 안좋아서 그랬는듯...

    2020.11.14 14:24 [ ADDR : EDIT/ DEL : REPLY ]
  11. 안녕하세요?

    또 404 forbiden 뜨네요.. 왜 그런건지 모르겠습니다.
    바이비트 측에서 막은 것일까요? 과도한 요청을 한 적이 없는데...

    2020.11.14 14:34 [ ADDR : EDIT/ DEL : REPLY ]
  12. 안녕하세요?

    404가 아니라
    403이네요. 지금보니까..

    2020.11.14 14:34 [ ADDR : EDIT/ DEL : REPLY ]
  13. 안녕하세요?

    다시 해보니까 되네요... 뭐문제지... 인터넷 상태에 따라 되었다 안되었다 하는건가..

    2020.11.14 14:37 [ ADDR : EDIT/ DEL : REPLY ]
  14. 안녕하세요?

    post only를 켠 상태에서,

    파이썬으로 리밋 주문을 걸었을때,

    시장가로 체결이 되네요...

    api 문서에서는 post only 설정을 찾을 수가 없는데

    시장가로 거래되는 것을 막을 방법이 없는 것인가요???

    2020.11.14 14:42 [ ADDR : EDIT/ DEL : REPLY ]
  15. 안녕하세요!

    한번 해보려고 하는데 잘 안되어서 여쭤봅니다.
    아래에서 my api key, my secret key만 넣으면 작동해야 하는데 맞는건가요?
    혹시 전체 문장 하나만 알 수 있을까요?
    하나만 알면 응용해서 쓸수 있을것 같습니다. 부탁드립니다.

    import bybit
    client = bybit.bybit(test=True, api_key="my api key", api_secret="my secret key")

    # Get server time
    print(client.Common.Common_get().result()[0])

    2021.01.08 01:41 [ ADDR : EDIT/ DEL : REPLY ]
    • 넵 api key 와 secret 키 만 기록하면 정상 작동합니다.

      bybit 에서 배포하는 라이브러리 외에도 ccxt 라이브러리 도 좋은 품질로 보이니 시험과정중엔 병행하여 시험하면서 본인에게 더 적합한걸 선택하여 활용가능합니다.

      ccxt 라이브러리 상세 : https://igotit.tistory.com/2577

      2021.01.08 10:54 신고 [ ADDR : EDIT/ DEL ]
  16. 안녕하세요!

    주문 넣기는 되었는데, timestamp가 동일해야 한다고 봤는데
    혹시 동기화 하는 방법 알 수 있을까요??

    2021.01.25 00:02 [ ADDR : EDIT/ DEL : REPLY ]
  17. 뉴비

    안녕하세요 리치굿맨님!
    블로그의 여러글을 읽으며 공부를 하는 중인데요, 한 가지 궁금증이 있어 질문드립니다!

    해당 글과 같이 python의 bybit 모듈을 사용하는 것과 웹소켓을 이용한 방식 ( bybit-ws, 혹은 웹소켓 라이브러리를 통한 직접 통신) 2가지에 대해서 문의를 드리고 싶어서요!

    아무래도 http request로 진행되는 만큼 network latency에 대한 차이 및 Request limit 정도가 떠오르는데....
    그 외에도 유의미한 차이가 또 있을까요!?!
    감사합니다!!

    2021.01.26 23:05 [ ADDR : EDIT/ DEL : REPLY ]
    • 넵 반갑습니다~

      거래소에서 제공되는 api 는 항상 rest 형식과 websocket 형식 2종이 모두 제공되는데요, 2개는 본질적으로 크게 다르고 보통은 2개 모두 활용하게 됩니다.


      api 도입하여 개발하는 우리 입장에서,

      rest (http request)는 내가 요청하지 않으면 아무 정보도 주지 않는 것이고, 필요 정보를 내 코드에서 request 응답으로 만 정보를 제공해줍니다. 전산일반용어로는 폴링 처리 형식 이라고 하고요..

      websocket 은 내가 매번 요청하지 않아도 정보(체결정보, 나의 주문의 접수여부, 내 계좌의 잔고 변경 등 ) 변경시 마다 내 프로그램으로 푸시해주는 개념입니다. 비유하자면 인터럽트 (=이벤트 , 메시지) 형식입니다. 웹소켓은 내가 요청하지 않아도 정보 변경시 내 프로그램으로 통지 해준다는 점이 핵심이고 이는 rest 형식의 통신과 핵심적으로 다른 지점입니다. .

      2021.01.27 02:36 신고 [ ADDR : EDIT/ DEL ]
  18. 뉴비

    앗 빠른 회신 감사드립니다!!!

    역시 제가 모르는 부분이 많았군요...

    몇가지 더 질문드리고 싶은데 우선 제가 웹소켓 관련하여 좀 더 공부를 해보고 문의 또 드릴게요.

    항상 글 잘보고있어요. 감사합니다!!!

    2021.01.28 00:11 [ ADDR : EDIT/ DEL : REPLY ]
  19. 늅트린이

    안녕하세요 남겨주신 글들 잘 읽고 있습니다.
    위 bybit 모듈을 import 하여 사용하는데, api doc 에 현재 가지고 있는 포지션에 대한 정보를 갖고 올 수 있는 예시가 api doc에 없는 것 같더라구요..

    제가 아직 못 찾은 건지 아니면 다른 값들을 받아 제가 직접 함수를 이용해서 짜야하는 건지 알 수 있을까요?
    제가 가진 포지션의 계약 수량, 레버리지, 매수 , 매도 상태 이정도만 알아도 좋을텐데요 ㅠㅠ
    혹시 방법이 있으려나요??

    2021.06.08 23:38 [ ADDR : EDIT/ DEL : REPLY ]
    • 넵 포지션 정보는 위 글에서의 예제코드 중 줄번호 14, 15 에 있는 코드가 포지션 정보 요청입니다.

      # Query account positions
      print(client.Positions.Positions_myPosition().result())

      인자에 종목명을 기록하지 않은 경우엔 전 종목의 정보를 제공해주고 종목명 기록시 해당 종목의 포지션 정보만 제공됩니다.

      포지션 정보 요청시 획득 가능한 세부 정보 항목은 bybit 의 api 사이트의 좌측 메뉴에서 Account Data EndPoints -> Position -> My Position 에서 보이는 Parameter 들을 보면 알 수 있고요, 주요 파라메타들을 아래 추렸습니다.

      포지션의 계약수량 : size
      - BTCUSD 종목인 경우 수량단위 : usd
      포지션의 금액 : position_value
      - BTCUSD 종목인 경우 금액단위 : BTC

      레버리지 : leverage

      매수/매도 : side

      진입평균가 : entry_price

      강제청산가 : liq_price

      미실현손익 : unrealised_pnl

      2021.06.09 00:26 신고 [ ADDR : EDIT/ DEL ]
  20. 늅트린이

    친절한 답변 감사합니다. 도움이 많이 되었습니다. 나중에 몇가지 여쭤보러 다시 올게요!!

    2021.06.13 00:16 [ ADDR : EDIT/ DEL : REPLY ]
  21. 코린이

    안녕하세요.
    bybit api로 제가 생각한 로직을 구현 중 도저히 찾을 수 없는 부분이 있어 질문을 드립니다.

    ETHUSDT 대상으로 선물 거래를 하려고 하는데요. 제가 잡은 포지션을 현재 시장가로 close 하여 take profit 하고싶은데 방법을 모르겠습니다.

    감사합니다.

    2021.08.02 13:11 [ ADDR : EDIT/ DEL : REPLY ]
    • close 주문을 위한 별도의 함수가 제공되지 않고 신규 주문 함수와 동일하며 인자값을 달리하여 청산 주문 가능합니다.

      https://igotit.tistory.com/2493 의 신규주문 에서 인자값 중 reduce_only=true 로 설정하면 청산 목적의 주문임을 의미하게 됩니다. 시장가 설정은 order_type = Market 으로 합니다. side 인자에는 청산대상의 진입방향과 반대로 설정합니다. 예, 매수로 진입한 포지션을 청산한다면 side=Sell 로 설정합니다.

      위 링크의 내용은 인버스무기한종목에 대한 설명이나, btcusdt 용 API 에서도 동일 체계이므로 동일하게 적용됩니다.

      2021.08.04 17:04 신고 [ ADDR : EDIT/ DEL ]