비트코인의 히스토리컬 데이터(1분마다) 취득

소개



지금은 계속이지만, 비트 코인의 가격을 딥 러닝을 이용해 예측하려고합니다. 또한 대상에 비트코인을 선택한 이유는 다음과 같습니다.
  • 시장 데이터를 저렴하게 얻을 수 있습니다 (예 : 주가를 예측하려고하면 주가뿐만 아니라 다른 정보도 필요합니다. 정보는 Bloomberg와 같은 정보 공급 업체에서 구입해야합니다). .
  • 펀더멘탈즈 등의 가격 이외의 정보가 적은 것(센티멘트 등의 정보는 필요하다고 생각합니다만, 일단 이번 예측에서는 대상에 포함하지 않을 예정입니다)
  • 화제성이 있는 것(좋은 의미이든, 나쁜 의미라도)

  • 이 게시물에서는 우선 데이터를 검색하는 것으로 시작하고 싶습니다.

    목차


  • 틱 데이터 얻기
  • 틱 데이터의 분당 종가로 변환

  • 1. 틱 데이터 취득



    JPYBTC의 히스토리컬 데이터(1분마다)는 간단하게 입수할 것이라고 생각하고 있었습니다만, 그렇게 간단하게는 되지 않았습니다. 원래 과거의 정보를 제공하지 않거나 과거의 정보를 취득할 수 있는 API를 제공하고 있는 거래소에서도, 실제로 취득할 수 있는 것은 일일 등의 간격이 큰 경우가 대부분입니다.
    또한 cryptowatch 은 1분마다의 데이터를 실제로 취득할 수 있습니다만, 차트에 보이고 있는 이상 과거의 데이터는 취득할 수 없는 것 같고, 1주일전의 것은 취득할 수 없습니다.
    데이터가 1주일도 되지 않으면 상당히 문제로 오버피팅해 버릴 가능성도 있고, 원래 데이터의 신뢰성 문제도 있습니다.
    거기서, 이하의 사이트에서 과거로부터의 방대한 틱 데이터를 발견했으므로, 그것을 처리해 1분 마다의 데이터로 변환하는 것을 생각합니다.

    2. 틱 데이터의 분당 종가로 변환



      이하의 코드에 의해 틱 데이터로부터 1분 마다의 종가의 데이터를 생성합니다. 기간을 2월부터 하고 있는 것은, 2월 이전에는 꽤 불안정한 움직임을 하고 있었으므로, 우선은 생략하고 있습니다.
    import pandas as pd
    from datetime import datetime, timedelta
    
    filename = 'bitflyerJPY.csv'
    header = ['timestamp', 'price', 'volume']
    df = pd.read_csv(filename, names = header)
    df = df.drop(['volume'], axis=1)
    df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')
    df_2 = pd.DataFrame()
    start_date = datetime(2018, 2, 1)
    n_date = 30
    
    for i in (start_date + timedelta(minutes = x) for x in range(60 * 24 * n_date)):
        df_2 = df_2.append(df.loc[(df['timestamp'] > i).idxmax()], ignore_index=True)
        df_2.iat[-1, 1] = i
    
    df_2 = df_2.set_index('timestamp')
    df_2.to_csv('bitflyerJPY_2.csv', index=True)
    

    위의 프로그램을 실행 한 후 4 시간 정도 (더 효율적인 쓰기가 있다면 알려주세요)
    다음과 같이 1분마다 종가를 얻을 수 있었습니다.


    이상입니다.

    좋은 웹페이지 즐겨찾기