TRIX 지표 계산 및 알림
TRIX(Triple Exponential Smoothed Moving Average) 정의
TRIX지표는 Triple Exponential Smoothed Moving Average의 약자로 이름에서 알 수 있듯이 지수이동평균(EMA)과 관련이 있습니다. 이름 앞에 Triple은 3번의 지수이동평균을 연달아 구하기 때문에 붙여진 것입니다. 처음에 종가를 기반으로 지수이동평균을 구하고 그 지수이동평균을 또 한 번 지수이동평균을 구하고, 마지막으로 한번 더 지수이동평균을 구하는 방식이라 Triple이라는 수식어가 붙은 것입니다. 바이낸스 비트코인 차트에 적용하여 확인해 보도록 하겠습니다.
지표 설정에 들어가 보면 Triple Exponentially Smoothed Average라고 조금 다르게 명시되어 있습니다. 하지만 다른 큰 의미 없이 같은 말로 보시면 됩니다. Length 옆을 확인해 보면 디폴트값이 9로 설정되어 있는 조정할 수 있는 수치가 하나 있습니다. 지수이동평균을 낼 기준이 되는 기간을 뜻하니, 보다 장기적인 지표를 확인하고 싶으면 9보다 높게, 반대로 단기적인 지표로 구현하고 싶으면 9보다 낮게 설정하시면 됩니다.
TRIX뿐만 아니라 비교하기 위해 지수이동평균(Exponential Moving Average)도 차트에 넣어 보았습니다. 기준 기간은 둘 다 9로 설정하였지만 TRIX의 지표가 EMA보다 가격 변동에 영향을 덜 받아 부드럽게 움직입니다. 그러므로 이런 움직임으로 인하여 지표 이름에 Smoothed라는 수식어가 붙었다고 볼 수 있겠습니다.
다음으로는 EMA(25)와 비교해 보도록 하겠습니다. 비교하려는 지수이동평균의 기간이 25인 이유는 TRIX9의 시작점이 25부터이기 때문입니다.
바이낸스 BTC/USDT 차트의 첫 부분입니다. 25일부터 TRIX지표가 시작되는 것을 볼 수 있습니다. 종가를 9일 지수이동평균을 내면 9일부터 EMA가 시작되고 그 EMA를 지수이동평균을 구하면 17일, 마지막으로 한번 더하면 25일에 시작되기 때문에 TRIX지표도 25일부터 시작되는 것을 알 수 있습니다. 그러므로 이전 값들은 전부 NaN처리가 되어있는 것입니다.
25일로 비교했을 시 수치적으로는 비슷하지만 EMA보다 TRIX가 더 Smooth 하다는 것을 알 수 있습니다. 이러한 특성들을 알아보았으니 나머지는 보인의 판단으로 어떻게 적용시킬지 생각하시면 됩니다.
계산 공식
TRIX = EMA(EMA(EMA(Close)))
EMA = Price(today) × k + EMA(yesterday) × (1−k)
식 그대로 지수이동평균을 3번 구한 것입니다. 지수이동평균에 대해 자세히 알고 싶으신 분들은 이전 글 참고하시길 바랍니다.
지수이동평균(EMA) 가중이동평균(WMA) 계산
지수이동평균(EMA) 가중이동평균(WMA) 계산 이동평균의 종류 지수이동평균(EMA) 가중이동평균(WMA) 전체코드 결과물 이동평균의 종류 바이낸스 차트에서 지표설정을 누르면 나오는 모습입니다. 맨
goldfishman.tistory.com
파이썬 코드
import binance as bn
def trix(symbol, interval, length):
try:
df = bn.get(symbol, interval)
close = df['close']
EMA1 = close.ewm(span=length, min_periods=9).mean()
EMA2 = EMA1.ewm(span=length, min_periods=9).mean()
TRIX = EMA2.ewm(span=length, min_periods=9).mean()
return TRIX
except Exception as e:
if str(e).startswith('429'):
bn.tel_text(symbol + " " + str(e))
else:
pass
print(trix(9))
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
...
995 28778.151810
996 28761.352437
997 28729.636714
998 28679.494122
999 28604.815850
비트코인의 TRIX값이 25번째 항부터 나타나게 하였습니다. 이제 998행과 어제의 TRIX값을 비교해 보도록 하겠습니다.
28679.49로 값이 일치하였습니다.
Trix 전략 및 알림 조건식
저는 주로 바이낸스 거래소를 이용하여 몰랐었지만 업비트에서 TRIX지표를 보니 단순하게 3번 지수이동평균을 낸 것이 아닌 MACD의 오실레이터처럼 추가적인 값을 만들어 나타내는 것을 최근에 알게 되었습니다. 계산은 전일 TRIX대비 얼마만큼의 상승분이 있는지 나타나게 하면 됩니다.
저는 이 오실레이터를 음수에서 양수로 전환되었을 때 매수시점이라 판단하고 알림이 울리도록 조건식을 만들어 보겠습니다.
import binance as bn
import threading
tickers = bn.tickers("all")
def run():
for i in tickers:
TRIX = bn.trix(i, "1d", 9)
TRIX996 = TRIX.iloc[-4]
TRIX997 = TRIX.iloc[-3]
TRIX998 = TRIX.iloc[-2]
OSC998 = round((TRIX998 - TRIX997) / TRIX997 * 100, 2)
OSC997 = round((TRIX997 - TRIX996) / TRIX996 * 100, 2)
if OSC997 < 0 and OSC998 > 0:
bn.tel_text(i + " TRIX " + str(OSC998) + "% 상승 전환")
threading.Timer(86400, run).start()
run()
오실레이터는 백분율로 표현해 주었고 소수점 둘째 자리까지 만을 나타내었습니다. 그러니 소수점 3번째부터 시작되는 약한 오실레이터 상승전환은 전부 무시하도록 한 셈입니다.
결과물
ARPA코인이 조건식을 만족하여 알림이 왔습니다. 어제 VWAP에 대해 글을 쓸 때도 ARPA코인이 조건식을 만족하였는데 오늘도 알림이 울린 것을 보면 최근에 꽤 상승했던 모양입니다.
바이낸스 ARPA/USDT의 1일 봉 차트입니다. 바이낸스 차트에서는 TRIX 오실레이터를 지원해주지 않지만 부드럽게 상승 중인 것을 보면 오실레이터가 상승 전환 했다는 것을 유추해 볼 수 있습니다. 음수에서 양수로 전환된 코인은 350개가량 코인중 몇 개는 더 있을 것이라고 추정되지만 round함수를 이용하여 소수점 둘째짜리 밑으로는 다 0으로 처리하였기 때문에 약한 상승 전환은 자동적으로 스크린 되는 기능이 있었습니다. 그래서 알림 문구도 오실레이터 백분율을 표시하도록 한 것입니다.
round함수를 쓰지 않았을 경우 BUSD코인의 굉장히 약한 TRIX 상승 전환을 알림 받을 수 있었습니다. 어느 정도까지 걸러야 할지는 본인의 판단하에 수치를 조정하시면 되는 것이므로 차트를 잘 관찰하시고 좋은 전략을 만들어 성공적인 투자되시길 바랍니다.
'기술 > 지표 알림' 카테고리의 다른 글
KDJ(Stochastic) 계산 및 알림 (428) | 2023.05.26 |
---|---|
Parabolic SAR 계산 및 알림 (297) | 2023.05.24 |
VWAP(거래량가중평균가격) 지표 계산 및 알림 (410) | 2023.05.12 |
볼린저밴드 BOLL 텔레그램 알림 (451) | 2023.05.10 |
바이낸스 롱/숏 비율 알림 받기 (429) | 2023.04.16 |
댓글