Python으로 하이킨아시(Heikin Ashi) 캔들 구현하기

하이킨 아시(Heikin-Ashi)는 기존의 캔들스틱 차트를 변형한 일본의 차트 분석 기법입니다. 일반적인 캔들스틱은 가격의 변동을 그대로 표시하는 반면, 하이킨 아시는 가격 변동의 흐름을 더 명확하게 파악할 수 있도록 도와줍니다. 주로 추세를 더 잘 파악하고, 차트의 노이즈를 줄이는 데 유용합니다.

open – 하이킨 아시의 시가는 이전 하이킨 아시 캔들의 시가와 종가의 평균으로 계산됩니다.

close – 하이킨 아시의 종가는 현재 캔들의 시가, 고가, 저가, 종가의 평균입니다.

high – 하이킨 아시의 고가는 현재 캔들의 고가, 하이킨 아시 시가, 하이킨 아시 종가 중에서 가장 큰 값입니다.

low – 하이킨 아시의 저가는 현재 캔들의 저가, 하이킨 아시 시가, 하이킨 아시 종가 중에서 가장 작은 값입니다.

pip install pandas ccxt

import pandas as pd
import ccxt

# 예시) 바이낸스 선물 BTCUSDT, 1시간 봉 
bnb = ccxt.binance({'options': { 'defaultType': 'future' }}) 

def Heikin_Ashi():
    ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
    df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])

    df['HA_Close'] = (df['open'] + df['high'] + df['low'] + df['close']) / 4
    
    # open
    for i in range(len(df)):
        if i == 0:
            df['HA_Open'] = (df['open'].iloc[0] + df['close'].iloc[0]) / 2
        else :
            df.loc[i,'HA_Open'] = (df['HA_Open'].iloc[i-1] + df['HA_Close'].iloc[i-1]) / 2
   
    df['HA_Open'] = df['HA_Open'].round(1) # open
    df['HA_High'] = df[['high', 'HA_Open', 'HA_Close']].max(axis=1).round(1) # high
    df['HA_Low'] = df[['low', 'HA_Open', 'HA_Close']].min(axis=1).round(1) # low
    df['HA_Close'] = df['HA_Close'].round(1) # close
    
    return df

print(Heikin_Ashi())

트레이딩뷰 차트와 데이터를 비교해 보겠습니다.

시 – HA_Open / 고 – HA_High / 저 – HA_Low / 종 – HA_Close