개발자의 삶/코인

자동매매 프로그램 알고리즘 종류

비전공돌이 2022. 8. 6. 01:01

안녕하세요.

 

오늘은 자동매매 프로그램들이 사용하는 전략이랄까요? 알고리즘이랄까요?

주로 사용하는 방법들에 대해 간략하게 알아보겠습니다.

 

기존에 잘 정리된 개념이나 용어적인 정리들이 있습니다.

그런 부분들은 구글에 검색해보면 많이 나옵니다. 제가 설명하기에 복잡하기도 하고, 역량도 좀 부족합니다.

 

그래서 저는 초급용으로 알기 쉬운 형태로 적어보겠습니다.

용어들도 전문용어가 아닌 제 임의나 부르기 쉬운 용어들로 하겠습니다.

 

일단 종류를 알아보기에 앞서 자동매매 프로그램의 목적을 살펴봐야 합니다.

 

자동매매 프로그램의 목적

  • 사람을 대신하여 매매를 한다.
  • 뇌동매매를 하지 않는다.
  • 사람보다 빠르고 정확한 계산과 판단으로 매매를 한다.

바라는 효과는 더 있을 수 있겠지만 결국 최종적으로 기대하는 목적은 이겁니다.

사람보다 높은 수익률을 기대한다.

 

그렇다면 사람보다 높은 수익률을 기대하기 위해서는 어떻게 해야 할까요?

더 정확한 판단으로 매매할 때마다 더 높은 수익을 남기면 되겠죠. 아니면 매매 횟수를 늘려 합계 수익이 커지도록 해도 되구요.

 

그렇다면 무엇을 해야 하는가?

결국 매매를 해야합니다. 자동매매 프로그램이잖아요. 자동으로 매매를 수행하면 됩니다.

이 블로그의 다른 글을 보신 분들이라면 자동매매 프로그램 만들기 자체는 어렵지 않다는 것을 아실 겁니다.

 

문제는 수익률이죠.

 

"언제 사서"

 

"언제 파나"

 

이게 바로 매매 전략이죠. 프로그래밍적으로는 알고리즘 또는 로직인 것이고요.

 

어떤 전략들이 있나?

전략은 만들기 나름인데 제가 생각하는 큰 분류는 아래 두 가지입니다.

  • 예측에 의한 타점 매매
  • 단순 원칙에 의한 반복 매매

먼저 예측을 하여 그에 맞는 매매를 하는 전략이 있을 수 있습니다.

보통 기술적 분석을 통하여 상승, 혹은 하락을 예상합니다. 그에 맞추어 매매를 하죠.

 

예를 들어 MACD를 통해 골든크로스에 매수, 데드크로스에 매도하는 전략이 이에 속한다 할 수 있습니다.

차트 데이터를 기반으로 앞으로 올라갈지 내려갈지에 따라 매매를 하는 방식입니다.

 

이 때 수익률은 얼마나 잘 맞는 예측 공식을 찾느냐에 따라 달라집니다.

(구현 난이도는 올라가지만) 복잡할 수도 있겠죠.

예를 들어보겠습니다.

 

일봉 MACD가 골크가 나고 거래량이 직전 5일 평균보다 10%이상 많아야하며 RSI가 40이하인 경우 매수한다.
RSI가 70이상이거나 데크가 발생하면 전량 매도한다.

 

이런식으로 만들 수도 있을 겁니다. 여기에 볼밴을 버무리거나 이평선들을 비교한다던지, 일봉 외에 주봉이나 월봉을 참조한다던지..

얼마든지 복잡하게 만들수도 있습니다. 물론 복잡하다 하여 수익이 난다는 보장이 되는 것은 아니겠지만요.

 

이러한 예측 기반의 전략에는 매도 조건에 손절이 포함되는 경우가 보통입니다.

즉, 잘못 설정되면 손실 매매만 반복할 가능성도 있는 것이죠.

 

이 예측 기반의 자동매매는 어렵습니다. 수익이 나는 조건을 찾기도 어렵지만 장에 따라 다르기도 하니까요.

추세추종이나 역추세 전략들을 공부해보시면 좋을 겁니다.

사람이 직접 매매하면서 돈이 벌리는 전략이 있다면 그것을 프로그램으로 옮기는 것도 방법이겠죠.

 

그렇다면 단순 원칙에 의한 반복매매란 어떤 개념일까요?

 

예시를 들어보겠습니다.

저는 주식보단 코인을 주로 다루지만, 주식을 예로 들어보죠.

 

저는 삼성전자는 망하지 않을 것 같다는 생각이 들었습니다.

오르기도 하고 내리기도 하겠지만 적금처럼 꾸준히 사다보면 언젠가 수익이 나는 때가 올 것 같습니다.

그래서 이런 프로그램을 만들겠습니다.

 

매수 조건 : 매일 삼성전자 주식을 1주씩 산다. 가격 등 다른 조건은 없이 무조건 산다.

매도 조건 : 평균 단가의 50% 수익이 발생하면 절반 매도 한다.

 

아주 심플하죠? 이름을 붙이고 싶네요. "거북이의 승리 전략"이라고 하겠습니다.

 

거북이의 승리 전략은 오를 것인지 내릴 것인지 예측을 하지 않습니다.

오르든 내리든 그저 매일 1주씩 매수를 할 뿐이죠. 내려가면 평단을 낮추게 될 것이구요.

언젠가 오르다보면 매도 조건에 해당하여 수익실현을 하게 될 겁니다.

 

이 거북이의 승리 전략은 제가 만들어서 테스트도 해봤었는데 말이죠.

5년 이상을 보고 하락이나 상승에 신경쓰지 않는다면 나쁘지 않은 전략입니다.

다만 한 가지 전제는 필요하죠. 투자하는 종목이 상장폐지되지 않아야 하며 가능하면 현재 수준의 기업가치를 유지해야 합니다. 그래야 수익이 발생할 기약없는 미래를 기다릴 수 있으니까요.

 

그리고 자동매매 봇이 많이 쓰는 전략이 있습니다.

 

  • 마틴게일
    물리면 물타기를 통해 평단을 낮춰서 탈출하는 전략입니다.
    예를 들어 100원에 100주를 삽니다. 하락하여 90원이 되면 200주를 삽니다. 평단이 93.33원이 됩니다. 더 내려가서 80원이 되면 400주를 더 삽니다. 이런 식으로 2배수 물타기를 하는 것이죠. 그러다 반등하여 수익권이 되면 매도 합니다.

    무한대의 자금이 있다면 실패할 수 없는 전략이기도 하죠. 하지만 우리는 무한대의 자금이 없습니다. 그래서 조심해야 합니다.

 

  • 그리드, 거미줄
    100원에 10주 삽니다. 이 10주는 105원에 매도를 걸어둡니다.
    90원이 되면 10주를 삽니다. 이 10주는 95원에 매도를 걸어둡니다.
    81원이 되면 10주를 삽니다. 이 10주는 85원에 매도를 걸어둡니다.
    이런 식으로 각각의 매수를 분리하여 거래를 하는 겁니다. 그러면 차트에 매수/매도 걸어둔 것이 거미줄처럼 보여지죠.

이렇게 되면 각각의 매수마다 수익실현을 할 수 있습니다.

반대로 처음 매수한 수량은 그 이상의 가격을 회복하지 않는다면 영원히 팔지 못하기도 할 겁니다.

하락한 상태에서 매수/매도를 반복하여 수익실현을 반복하면 손실을 매꿀수도 있겠죠.

 

마틴게일이나 그리드는 모두 가격과 무관하게 매수를 하는 전략입니다.

주로 시장이 박스권일 때 수익이 극대화되죠.

 

자동매매 판매하는 상당수는 이 마틴게일과 그리드를 활용하고 있습니다.

이런 전략을 가공없이 그대로 쓴다면 솔직히 별로 권해드리고 싶진 않습니다.

그럼에도 쓰시겠다면 특징을 알고 쓰시길 바랍니다.

 

마틴게일은 물타기를 몇번까지 할 것인지를 잘 계산해야합니다.

그리드는 박스를 그려보고 그 내에서 움직이도록 간격을 설정하면 좋겠죠.

 

최근에는 딥러닝을 통해 학습한 인공지능이 매매를 하는 방법도 있긴 합니다.

그런데 이건 좀 복잡합니다. 비용도 많이 들죠.

수익률은 어떤 학습모델로 어떤 데이터를 학습하는지에 따라 천차만별이겠죠.

 

이 글이 자동매매 프로그램을 만들고자 하는 분들에게 어떤 형태로 접근할지 도움이 되면 좋겠습니다.

잘 만들어서 돈도 많이 버시면 좋겠네요.

 

저도 여러가지 알고리즘을 만들어 돌리고 있습니다만, 계속 더 나은 전략을 고민하고 있습니다.

 

우리 모두 부자가 될 수 있길 바라며 마치겠습니다.