본문 바로가기
3.자동매매

비트코인 자동매매 1 : 고팍스 시세데이터 가져오기

by 0121apple0307 2024. 1. 20.
반응형

비트코인 자동매매 투자로봇를 만들기 위해 이번 포스팅에서는 고팍스에서 비트코인 티커(BTC-KRW) 시세데이터를 가져오는 파이썬 코드를 작성해보겠습니다. 

 

목차

     

    본문에 들어가기 앞서

    본문에 들어가기전 저는 파이썬 전문가가 아닙니다. 개인적인 목적으로 비트코인 프로그램을 만드는 과정에 독학으로 공부한 결과물을 정리해 놓은 것입니다. 논리적 정확성 보다는 프로그램의 실행에 중점을 두었기 때문에 잘못된 정보 혹은 코드 오류가 포함될 수 있습니다. 이점은 참고 부탁드립니다.

     

     

    STEP1. 고팍스 API 로그인 키 입력

    <실행 코드>
    apikey = 'XXXXXXXXXXXXXXXXXXX'
    secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' 


    <코드 해석>
    apikey 라는 변수에 해당 암호값을 저장합니다.
    secret 라는 변수에 해당 암호값을 저장합니다. 
    해당 변수는 고팍스 api 를 통해 데이터를 송수신 할때 사용되됩니다.

     

     

    STEP2. 필요한 함수 모듈을 불러오기

    <실행 코드>
    import requests 
    import pandas as pd
    import datetime
    improt time


    <코드 해석>
    import requests : requests 모듈을 불러옵니다. 데이터 파싱(가져오기)할때 사용하는 모듈
    import pandas as pd : pandas 모듈을 불러와 pd라고 정의합니다. 데이터를 다룰 때 많이 사용하는 모듈
    import datetime : 날짜와 시간을 다루는 모듈을 불러옵니다.
    import time : 시간과 관련된 기능을 제공하는 모듈을 불러옵니다.

     

    파이썬 함수란? 

    방정식 혹은 매크로 기능으로 생각할 수 있는데요. 쉽게 말해 특정 결과값을 입력하였을 때, 함수에서 지정한 행동을 취하고 그에 따른 결과값을 나타내는 코드를 의미합니다. 

     

    파이썬 모듈이란?
    하나의 모율이란 여러 함수나 변수 값, 클래스 등이 정의되어 있는 파일을 의미합니다. 모듈의 경우 파이썬에서 기본으로 제공하는 것도 있고, 다른 사용자들이 만들어 놓은 모듈도 있습니다. 사용자의 필요에 따라 모듈을 불러오며, 이를 통해 개별적으로 어려운 함수를 만들필요 없이 손쉽게 이용이 가능합니다.

     

    STEP3. 비트코인 시세데이터 가져오기

    <실행 코드>
    def get_data():

          now =datetime.datetime.now()
          now_t = time.mktime(now.timetuple())*1000
          start= datetime.datetime(now.year, now.month, now.day) - datetime.timedelta(10)
          start_t = time.mktime(start.timetuple())*1000
       
          df = pd.DataFrame(0,columns=['time','low','high','open','close'],index=pd.date_range(start, now,freq="D"))
          r = requests.get('https://api.gopax.co.kr/trading-pairs/BTC-KRW/candles?start='+str(start_t)+'&end='     
               +str(now_t)+'&interval=1440')

          arr = r.json()
          result = list(arr)

          for i in range(0,len(result)):
              df.iloc[i][0] = result[i][0]  
              df.iloc[i][1] = result[i][1]
              df.iloc[i][2] = result[i][2]
              df.iloc[i][3] = result[i][3]
              df.iloc[i][4] = result[i][4]
               i=i+1

            return df


    <코드 해석>
    0. def get_data():
    : get_data 함수 정의 코드입니다. "get_data()"를 실행하면 아래 포함된 코드를 실행합니다.

    1.now =datetime.datetime.now()
     : 현재시각을 now 라는 변수에 저장합니다. 

    2.now_t = time.mktime(now.timetuple())*1000
     : 고팍스에서는 시각을 timestamp 방식으로 사용하고 있습니다. 때문에 now 변수로 불러온 현재시간 값을
       timestamp 방식으로 변환하는 작업이 필요합니다. 해당 코드는 불러온 현재 시간을 고팍스에서 처리하는
       시간data 값으로 처리하는 코드입니다.

    3.start= datetime.datetime(now.year, now.month, now.day) - datetime.timedelta(10)
     : 데이터를 수집할 날짜를 오늘로 부터 10일 전으로 지정한다는 코드입니다.

    4.start_t = time.mktime(start.timetuple())*1000
     : start_t 라는 변수에 start에 저장된 시간값을 timestamp 방식으로 변환하는 코드입니다.

    5. df = pd.DataFrame(0,columns=['time','low','high','open','close'],index=pd.date_range(start, now,freq="D"))
     : df라는 변수에 고팍스에서 불러온 시세데이터를 저장할 테이블을 만들어주는 코드입니다. 테이블의
       구성 항목에 ['time','low','high','open','close'] 값으로 설정하였습니다.

    6. r = requests.get('https://api.gopax.co.kr/trading-pairs/BTC-KRW/candles?start='+str(start_t)+'&end='     
               +str(now_t)+'&interval=1440')

     : r 이라는 변수에  requests.get (데이터를 가져오는 함수) 실행값을 저장하는 코드입니다.
      # trading-pairs/BTC-KRW/candles? : BTC-KRW 가상화폐 시세데이터를 가져옵니다.
      # start='+str(start_t)+'&end=' +str(now_t)+' : 데이터를 가져올 시작시점과 종료시점을 의미합니다.
      # &interval=1440' : 데이터 간격을 의미하며, 1440분 즉 일봉 데이터를 가져옵니다.

     7.arr = r.json() :
      : 변수 "r"에는 고팍스 api 를 통해 받은 "BTC-KRW"시세데이터가 JSON 데이터 형태로 저장되어 있습니다.
       이를 json()함수를 적용하여 list 타입의 데이터 형태로 변환하여 "arr" 이라는 변수값에 저장해주는 코드입니다.
       여기서 JSON 이란 JavaScript Object Notatino의 약자로 자바스크립트 객체 문법으로 구조화된 데이터를 의미합니다.


     8.result = list(arr)
      : arr에 저장된 값을 리스트로 변환하여 result 변수에 저장하는 코드입니다.

     9. for i in range(0,len(result)) 
         df.iloc[i][0] = result[i][0]  

      : df 테이블의 항목에 result에 저장된 값을 입력해주는 반복문 코드입니다. 

    10. return df
       : get_data()를 실행하면 최종 출력되는 값을 df로 한다는 정의 코드입니다.

     

     해당 request 함수에 사용된 변수 값의 경우 아래와 같이 고팍스 api 예제 자료를 통해 작성할 수 있습니다.

     

     

    STEP4. 비트코인 시세데이터 확인하기

    <실행코드>
    get_data()


    <코드해석>
    1. get_data()
    :  get_data() 함수를 실행합니다. 정상적으로 실행이 되었다면 결과값으로 함수내 정의 한 df에 저장된 변수값을 아래와 같이 출력합니다. 

    비트코인 시세데이터


     

    래리윌리엄스 변동성 돌파 전략

    주식 투자 중에서도 퀀트 투자 혹은 알고리즘 매매에 관심이 있으신 분들이라면 한번쯤 래리윌리엄스 변동성 돌파투자 전략에 들어보셨을텐데요. 이번 포스팅에서는 래리윌리엄스의 변동성 돌

    eu.apnomad.com

     

    변동성 돌파전략 백테스트 두번째 : 비트코인 암호화폐

    지난번에는 K변수가 0.5 기준으로 변동성 돌파전략 백테스트를 해보았습니다. 이번 포스팅에서는 거래횟수를 줄이기 위해 K변수 값이 0.7인 경우와 1.0인 경우에 어떤 값을 나오는지 살펴보겠습니

    eu.apnomad.com

     

    비트코인 자동매매 투자 로봇 만들기

    변동성 돌파전략이 유의미한 것은 알겠지만 실시간으로 변하는 암호화폐 시장에서 손으로 거래할 수 는 없는 셈입니다. 그래서 이번에는 파이썬을 이용해서 비트코인 자동매매 로봇을 만들어

    eu.apnomad.com

     

    반응형

    '3.자동매매' 카테고리의 다른 글

    고팍스 API 환경설정  (0) 2024.01.16
    비트코인 자동매매 투자 로봇 만들기  (0) 2024.01.10

    댓글