ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 비트코인은 하루 중 몇시에 가장 가격이 쌀까?
    투자 2022. 10. 24. 02:31
    반응형

    비트코인이 나스닥을 따라다니고 나스닥은 유럽장 영향도 받고,

    21시 30분에 발표되는 지표는 나스닥에 영향을 주고,

    22:30분에는 미국 주식시장 개장도 하고 등등

    비트코인의 가격이 하루 안에서 뭔가 싸이클이 돌지 않을까 하는 느낌이 든다.

     

    아침에 아시아장 열리면서 비실비실대다가(한중일 주식시장이 망해가고 있으니) 

    15~16시쯤에 바닥을 찍고, 16시에 유럽장 열리면서

    유럽 상태가 멀쩡하면 슬금슬금 오르는 듯한 느낌이 들어서 데이터를 들여다봤다.

    (나는 pandas를 잘 쓸 줄 모른다. 구글링 해가며 겨우겨우 했다.)

     

    결론: 틀렸다. 

     

    일단 바이낸스 5분봉을 가지고 왔다.

    2022년만 받았어야 되는데 2017년 데이터까지 다 받았다.

    df5 = pd.read_json('freqtrade/user_data/data/binance/BTC_USDT-5m.json')
    df5.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 542744 entries, 0 to 542743
    Data columns (total 6 columns):
     #   Column  Non-Null Count   Dtype  
    ---  ------  --------------   -----  
     0   0       542744 non-null  int64  
     1   1       542744 non-null  float64
     2   2       542744 non-null  float64
     3   3       542744 non-null  float64
     4   4       542744 non-null  float64
     5   5       542744 non-null  float64
    dtypes: float64(5), int64(1)
    memory usage: 24.8 MB

    freqtrade를 이용해서 json을 받아서 읽었더니 column명도 안들어가 있다.

    json 내부에는 들어가 있을 텐데.. 굳이 열어보고 싶지는 않아서 그냥 넣어줬다.

    생각해보니 그냥 1시간봉 데이터를 받아도 되는데...

    df5.columns = ['timestamp','open','high','low','close','volume']

     

    밀리세컨드 단위의 timestamp를 일단 datetime으로 바꾸고,

    날짜별로 제일 낮은 시간대를 구해야 하니까 날짜만 잘라서 따로 컬럼에 넣어줬다.

    df5['datetime'] = pd.to_datetime(df15['timestamp'], unit='ms')
    df5['date'] = df5['datetime'].dt.normalize()

     

    날짜별로 group by한 다음에 5분봉들의 저가(낮은 가격)의 최저값의 인덱스를 찾았다.

    pandas는 뭔가 데이터를 필터링? 한다음에 뭔가 하면 이건 복제본이 아니야 어쩌고 하는 경고가 나왔던 거 같아서

    copy()한번 해줬다. (다시 말하지만 pandas 잘 모른다.)

    low_df5 = df5.loc[df5.groupby('date').low.idxmin()].copy()

     

    이랬더니 datetime이 사라져서 timestamp를 가지고 다시 datetime 만들고 여기서 hour,minute를 뽑았다.

    (index도 아니었고, as_index=False를 해줘도 사라진다. group by를 내가 오해하고 있는 것 같다.) 

    low_df5['datetime'] = pd.to_datetime(low_df5['timestamp'], unit='ms')
    low_df5['hour'] = low_df5['datetime'].dt.strftime('%H')
    low_df5['minute'] = low_df5['datetime'].dt.strftime('%M')

     

    그러고 나서 hour들이 각각 몇 번 나왔는지 계산한 다음에 그래프를 출력했다.

    low_df5.hour.value_counts().plot(kind='bar')

     

     

    1,891일 동안 00시가 최저가였던 날이 311일이나 되고, 23시였던 날이 117일이나 된다.

    의미가 있어 보이지는 않는다.

    반응형

    댓글

Designed by Tistory.