본문 바로가기
Python

파이썬을 이용한 자동 거래 - RSI Divergence 수익 분석

by 아짱이아빠 2023. 1. 1. 17:59
반응형

이번에는 지난번 알아본 RSI Divergence를 기반으로 한 가상화폐 자동 거래를 실제로 실행하여 그 결과에 대해 이야기해보겠다.

 

RSI Divergence를 간략히 설명하면 특정구간에서 가격은 하락하지만 같은 지점의 RSI는 상승을 하는 구간을 말하며 이후 가격은 반등하여 상승할 것이라고 예측을 하게 된다.

이러한 RSI Divergence를 기반으로 한 자동거래 파이썬 코드는 아래에 나와있으니 참조하면 되겠다.

 

 

 

파이썬을 이용한 RSI Divergence 구현

이번에는 파이썬을 이용하여 RSI Divergence 구간을 찾아 매수를 하고 RSI가 과매도 구간에서 매도를 하는 것에 대해 알아보겠다. [ RSI Divergence ] RSI Divergence에 대해 간단히 알아보면 다음과 같다. 먼

superhky.tistory.com

 

 

파이썬을 이용한 가상화폐 자동거래 - RSI Divergence

파이썬을 이용하여 업비트에서 가상화폐 자동거래를 하는 방법에 대해 알아보겠다. 이전 포스트에서도 가상화폐 자동거래 코드에 대해 얘기한 적이 있는데 이번에는 주기적으로 조건에 맞는

superhky.tistory.com

 

자동 거래는 12월 11일부터 12월 28일까지 실행되었으며 이 기간 동안 총 50번 자동으로 거래가 이루어졌고 이 중에서 30번은 이익이 생기는 거래였으며 나머지 20번은 손해를 보는 거래가 있었다.

거래 횟수로는 이익을 봤을 것 같지만 거래당 이익은 작고 손해는 이보다 컸기 때문에 결론적으로는 시작했을 때의 자금에서 큰 이득이나 손해 없이 거의 동일했다.

 

거래가 이뤄진 유형은 다음의 세 가지 정도로 분류된다고 할 수 있다.

 

[수익이 발생하는 경우]

아래는 가상화폐 네오(NEO)를 12월 11일 02시 36분에 매수하고 같은 날 02시 56분에 매도를 한 경우이다.

네오(NEO) 자동거래 결과
(네오(NEO) 자동거래 결과)

 

자동 거래의 매수 로직에 따라 RSI Divergence 구간이 발생을 인지하고 이후 RSI 값이 30을 넘는 순간에 매수를 했으며 매수 가격은 10,090원이었다.

그리고 난 후 가격이 급격하게 상승했고 RSI 값이 70을 넘은 다음에 RSI가 이전 값보다 작아지는 순간에 로직대로 매도를 한다.

매도 시의 가격은 10,400원이었으며 이 거래를 통한 수익률은 약 3%였다.

일단 자동 거래 코드가 정상적으로 동작되었고 수익률도 좋았다.

이대로만 동작해주면 매우 좋겠지만 이런 경우는 총 50번의 거래에서 아주 가끔 발생했다.

다음의 경우는 손해가 발생하는 경우이다.

 

[손해가 발생하는 경우]

아래는 가상화폐 스택스(STX)에 대하여 12월 13일 20시 46분에 매수하여 14일 01시 34분에 매도를 수행한 결과이다.

네오(NEO) 자동거래 결과
(네오(NEO) 자동거래 결과)

 

 자동거래 로직에 따라 매수와 매도는 수행되었으나 403원에서 매수 이후 가격이 비교적 큰 폭으로 하락하였고 이후에 횡보하면서 조금씩 올랐으나 RSI 값이 70이 넘고 매도 로직이 수행될 때의 가격은 앞에서의 하락폭을 커버하지 못하여 392원에 매도를 하였다.

그래서 이 거래를 통해서는 약 3%의 손해를 봤다.

 

여기서 한 가지 수정 보완이 필요한 부분을 찾았는데 그것은 RSI Divergence의 구간이 너무 짧으면 즉, RSI 값의 변화를 너무 민감하게 받아들이면 이는 false 시그널이 될 수 있다는 것이다. 

이를 보완하는 방법 중 하나는 RSI 값이 최소가 되는 두 지점이 최소 5개의 데이터 이상이 지난 이후에 즉, 5분 봉 데이터에서는 25분 이상 시간 간격을 두고 이벤트가 일어나야 RSI Divergence가 발생했다고 인지하도록 하는 것이다.

이는 이전 자동거래 코드에서 아래의 코드처럼 조건을 하나 더 추가하면 된다.

if temp01_min_rsi > temp02_min_rsi and temp01_min_price < temp02_min_price and len(RSI.iloc[len(df)-1-m:len(df)-2-k]) > 5:

 

그러나 이 수정을 통해서 위와 같은 경우를 모두 피할 수 있는 것은 아니며 또한 반대로 이익을 볼 수도 있는 거래를 건너뛰는 경우가 발생할 수도 있음을 고려해야 한다.

 

[가격의 횡보에 따른 이익 또는 손해]

사실 총 50번의 거래에서 대부분의 거래는 다음의 형태를 갖는다.

아래는 가상화폐 하이파이(HIFI)에 대해 12월 11일 16시 31분에 매수하여 같은 날 23시 31분에 매도를 한 것이다.

하이파이(HIFI) 자동거래 결과
(하이파이(HIFI) 자동거래 결과)

 

 매수는 분명 RSI Divergence가 발생하여 수행되었지만 가격이 횡보하면서 매도가 일어나는 시점이 매수 가격보다 높을 수도 있고 낮을 수도 있다.

 

이를 통해 알 수 있는 것은 RSI Divergence가 발생했다고 반드시 다음 가격의 상승이 일어나는 것은 아니다.

또한, 위의 경우는 매도 조건보다는 매수 직후 상승을 계속할 때에 매도를 했으면 이익을 볼 수 있었다.

가상화폐 매매를 공부하면서 다시 한번 느끼는 것이지만 매수보다는 언제 매도를 하느냐가 더욱 중요한 것 같다.

 

반응형

 

[결 론]

RSI Divergence를 기본으로 한 가상화폐 자동 거래 로직을 실제로 실행해본 결과 큰 수익도 또 큰 손해도 보지 않았다.

그러나 MACD나 Bollinger Band 등 다른 지수를 이용하여 자동 거래를 했을 때는 결국 손해를 봤는데 그것보다는 결과가 좋았던 것 같다.

 

RSI Divergence가 발생했다고 이후에 항상 가격이 상승한다고 볼 수는 없을 것이다.

그렇지만 특별한 경우를 제외하고 매수 이후 가격이 크게 하락하는 경우는 많지 않았다.

RSI Divergence가 발생했다는 것 자체가 이미 가격이 어느 정도 하락한 경우이기 때문일 것이다.

 

이 로직을 보완할 수 있는 방법은 우선 좀 더 확실한 RSI Divergence 구간임을 확인하는 로직으로 보완하는 것이 있겠다.

앞에서도 잠깐 언급했지만 너무 짧은 구간으로 RSI Divergence가 발생한 것은 배제하고 또한 RSI 값이 30 밑으로 잠깐 내려갔다가 올라오는 것도 배제할 수 있으면 좀 더 확실한 RSI Divergence를 확인할 수 을 것이다.

앞에서 첫 번째 유형으로 이익이 발생한 거래의 경우가 좋은 예가 되겠다.

 

두 번째는 매도 로직의 보완이다.

현재 RSI 값이 70을 넘고 이후에 하락하는 구간에서 매도를 하는 것 대신에 특정 시간 이후에 매수 가격보다 높으면 매도를 하는 방법도 있을 것이고 RSI 값 기준을 60으로 낮추는 방법도 있을 것이다.

원래 RSI Divergence는 발생 이후 가격이 상승추세가 될 것이라는 것을 전제로 하는데 그것이 반드시 RSI 70을 넘는다는 보장이 없기 때문이다.

결국 특정 시간이 지나면 더 이상은 RSI Divergence에 의한 영향이라고 볼 수 없을 것이다. 

 

반응형

댓글