Boan/뉴스

[번역] How to calculate Heikin Ashi candles in Python for trading

ha3kkkkk 2021. 8. 29. 15:00

뉴스는 아니지만, 오랜만에 포스팅을 늘려보려한다.

 

인생 1차 목표는 경제적 자유이기때문에 여전히 광산 만드는 것에 관심이 많다.

여태 만든 자동매매 도구는 모두 실패했는데 생각해보니 당연한 것 같다. 내가 스스로 했을 때 100% 성공하고 그걸 도구로 자동화해야 하는데, 같은 타점에서 나도 결정하지 못하는 것을 자동화 도구가 어떻게 하길 바랬던것일까? 그래서 이제는 보조도구로서 만들고있다. 지금 만들고 있는 프로그램은 전체 와치리스트에서 내가 생각하는 타점과 가장 유사한 먹잇감을 찾는 보조도구이다.

 

이 Heikin Ashi는 차트를 깔끔하게 보는 것에 아주 좋다. 보조도구가 찾은 먹잇감이 정말 내가 살만한 얘인지 텔레그램에 스크린샷 형식으로 보내주는데 쓰려고 찾은 글인데, 아래 글만으로 Heikin Ashi 차트를 파이썬으로 만드는 것에 문제가 없었으니 필요하다면 따라해보기를 바란다.

 

 

원문

 

How to calculate Heikin Ashi candles in Python for trading

Let’s see how to use this powerful trading tool in Python

towardsdatascience.com

 

 

 

1. Let’s see how to use this powerful trading tool in Python

트레이더는 가격 차트로 부터 가능한 많은 정보를 추출해야 한다는 것을 알고있다. 가격의 움직임은 거래 기회를 찾는것에 매우 유용한 기술이지만, 캔들 차트가 지저분하거나 시끄러워서 때때로 읽는것이 힘들다. 그래서 트레이더는 부드러운 가격의 움직임과 노이즈를 제거해주는 도구가 필요하다. Heikin Ashi 캔들은 우리를 도와줄 수 있습니다. 방법을 보자.

 

 

 

2. What are Heikin Ashi candles?

Heikin Ashi 캔들은 (Heiken Ashi라고도 한다) 가격 움직임으로 부터 노이즈를 제거하려고 노력하는 특정한 종류의 캔들이다. 특히 이런 차트에는 공백(GAPS)이 없다.

 

S&P 500을 평범한 캔들로 보자.

S&P 500차트

보다시피, 여기에는 일간 공백(GAPS)이 많고, 캔들의 그림자가 때때로 넓어서 무엇을 할지 결정하기 어렵다.

 

Heikin Ashi 캔들은 이렇게 계산된다.

  • Open(시가): (Open (previous candle) + Close (previous candle))/2
  • Close(종가): (Open + Low + Close + High)/4
  • High(고가): the same of the actual candle
  • Low(저가): the same of the actual candle

보다시피, 오늘의 HA(Heikin Ashi) 캔들 계산에는 오늘과 어제의 데이터를 모두 사용한다. 이런식으로 HA 캔들은 가격 움직임을 부드럽게 한다.

 

위의 S&P 차트에 적용해보면 이렇다:

 

보다시피, 여기에는 공백(GAPS)이 없고 차트가 읽기 쉽다.

 

 

 

3. How to use Heikin Ashi charts?

HA 차트를 사용하는 것은 매우 간단하다. 우선, 우리는 반전하기전에 중요한 변곡점을 감지할 수 있다. 이것은 매우 작은 본체와 큰 그림자(거의 본체와 같은사이즈의)가 있는 캔들이다. 이것이 추세 전환을 감지하는 중요한 방법이다.

(((쉽게말하면, 흔히들 말하는 위꼬리 또는 아래꼬리가 긴 캔들을 말한다. 하지만, 꼬리가 긴게 특징인 것이지 꼬리가 길다고 변곡점은 아니다.)))

 

그 다음, 추세가 강할때 우리는 반대쪽 그림자가 거의 없는 것을 볼 수 있다(즉, 강한 상승 추세에서는 아래쪽 그림자가 보이지 않고, 강한 하락 추세에서는 위쪽 그림자가 보이지 않는다는 것이다). 이것은 우리에게 추세의 강세에 대한 명확한 개요를 준다. 마지막으로, 색의 변화는 추세가 방 전환 확인에 자주 사용된다.

 

이것들은 모두 트레이딩 전략을 세우는 것에 유용한 아이템이고, 캔들 차트와 같은 다양한 타입의 패턴을 잡을 필요 없이 변곡점과 색의 변화만 신경쓰면 되도록 해준다.

 

HA 캔들의 단점은 다른 이동 평균과 마찬가지로 추세 전환 포착에 약간의 딜레이가 있다는 것이다. 그래서 그들의(HA) 신호는 항상 이미 발생한 것에 대한 확인이다. 따라서, HA는 긴시간의 전략으로 매매를 할때 유용하다. 왜냐면, 신호에서의 지연은 항상 진입과 탈출을 느리게 만들 수 있기 때문이다.

 

그러나 HA 캔들은 특히 너가 scalping에서 매매하고 가격 움직임에 노이즈를 제거하고 부드립게 보는게 필요할 때 매우 유용한 도구이다. 다른 지표와 마찬가지로, 이동평균선과 같은 다른 신호와 함께 사용하는 것이 유용하다.

 

이제 어떻게 Heikin Ashi를 계산하는지 Python으로 보자.

 

 

4. Example in Python

예를들어, 우리가 2020년 12월 15일 부터 2121년 4월 15일 까지의 S&P 500 데이터를 분석해보자. 코드는 여기서 확인할 수 있다. 

 

우선, 유용한 라이브러리를 설치하자

pip install yfinance
pip install mpl_finance

 

다음으로, 라이브러리를 import 하고 그래픽적으로 보여주자.

import pandas as pd
import yfinance
from mpl_finance import candlestick_ohlc
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [12, 7]
plt.rc('font', size=14)

 

이제 우리는 S&P 500 데이터를 다운로드하고 데이터를 순차적인 index로 바꿀 수 있다.

name = 'SPY'
ticker = yfinance.Ticker(name)
df = ticker.history(interval="1d",start="2020-12-15",end="2021-04-15")
df['Date'] = range(df.shape[0])
df = df.loc[:,['Date', 'Open', 'High', 'Low', 'Close']]

 

데이터 프레임의 차트를 그리는 간단한 함수를 만들어보자.

def plot_chart(df):
  fig, ax = plt.subplots()
  candlestick_ohlc(ax,df.values,width=0.6, \
                   colorup='green', colordown='red', alpha=0.8)
  fig.tight_layout()
fig.show()

 

이제 평범한 캔들차트를 보자.

plot_chart(df)

보다시피 공백(Gaps)과 긴 꼬리로 가득 차 있는 것을 볼 수 있다. 

 

이제 이 원본 형식으로 Heikin Ashi 캔들을 계산해보자.이전의 캔들을 확인해야하기 때문에, 첫번째 행은 스킵해야한다.

 

결과를 df_ha라고 불리는 새로운 데이터 프레임에 저장할 것이다. 우리는 동일한 최고점과 최저점을 유지하기 위해 원본 데이터를 유지할 것이다. 그 다음, 첫번째 행을 날리자.

df_ha = df.copy()
for i in range(df_ha.shape[0]):
  if i > 0:
    df_ha.loc[df_ha.index[i],'Open'] = (df['Open'][i-1] + df['Close'][i-1])/2
  
  df_ha.loc[df_ha.index[i],'Close'] = (df['Open'][i] + df['Close'][i] + df['Low'][i] +  df['High'][i])/4
df_ha = df_ha.iloc[1:,:]

 

새로운 차트를 볼 수 있다.

plot_chart(df_ha)

보다시피 공백(GAPS)이 사라져 있고 HA 캔들은 추세 반전을 아주 잘 예측할 수 있도록 해준다.

 

 

Conclusions

Heikin Ashi 캔들은 모든 종류의 트렌더에게 매우 유용한 도구이고, 모든 투자자의 도구상자에 있어야한다. 몇몇 가격 움직임은 지연이 있다는 것만 잊지말라.