BeeBot 자동매매 프로그램 개발_4단계 매매전략 구현

BeeBot 자동매매 프로그램 개발_4단계 매매전략 구현

 

지난글 BeeBot 자동매매 프로그램 개발_3단계 CoinData에 실시간 자료 담기 에서, 마켓데이터(candle, ticker)를 분류하여 CoinData라는 컨테이너에 저장했습니다.

이제는 코인데이타가 업데이트 될 때마다 매수/매도 여부를 판별해서 참(true)이 되면 매매신호를 발생시키는 알고리즘을 제작해야 합니다.

 

위 과정이 바로 자동매매 프로그램의 꽃, 매매전략입니다.

가장 쉽고 단순한 매매전략을 선택하여 구현해 보면, 조금 복잡한 것이라 해도 이미 만들어 본 것이 있으므로 어렵지 않게 구현이 가능할 것입니다. 이번 시간에는 RSI 전략을 구현해보겠습니다.

 

RSI 전략이란?

RSI(Relative Strength Index)는 금융 시장에서 일반적으로 사용되는 기술적 분석 지표 중 하나입니다. RSI는 가격 상승 추세의 강도와 하락 추세의 강도를 비교하여 가치 구매/판매 신호를 제공하는 것을 목적으로 합니다. 일반적으로 RSI의 값이 70을 초과할 경우 과매수 상태, 30 미만일 경우 과매도 상태라고 판단됩니다.

 

RSI 지표 산출

RSI(Relative Strength Index)의 계산방법은 다음과 같습니다.

  1. n일간의 가격의 상승한 일의 평균 계산
  2. n일간의 가격의 하락한 일의 평균 계산
  3. (1) / (2)의 비율을 구하고, 100 – (100 / (1 + 비율))를 계산하여 RSI 값을 구합니다.

n일은 보통 14일을 사용하지만, 사용자의 목적에 따라 다를 수 있습니다. RSI 값이 70 이상이면 과매수, 30 이하면 과매도이고, 50이 중립적인 지점으로 간주됩니다.

 

자 이제 작업준비가 완료되었습니다. 달려 볼까요?

1. 매매전략의 요구사항 정리

  • MarketData를 수신한다.
  • CoinData에 자료를 담는다.
  • 매매전략이 CoinData에 들어있는 자료를 읽어서 RSI값을 계산한다.
  • RSI값 < 30 이면 매수신호를 발생한다.
  • RSI값 > 70  이면 매도신호를 발생한다.

2. RSI매매전략 테스트 작성

  • MarketData 수신
  • RSI매매전략 오브젝트 가정
  • RSI매매전략의 CreateSignal 메쏘드를 실행
  • 매매신호가 잘 발생되는 지 확인

 

위 코드는 특정 전략(RSI strategy)에 따라 비트겟 마켓 데이터를 테스트하는 테스트 코드입니다.

코인 데이터와 마켓 데이터가 제공되면, 해당 전략에 따라 특정 코인의 시그널(buy/sell)을 생성하는 것을 테스트합니다.

시그널(signal)이 생성되지 않은 경우: 에러(error) 발생

시그널이 생성된 경우: RSI 값 출력

30초 후에는 코인 데이터가 제대로 생성되었는지 확인합니다.

이와 같은 테스트를 실행시켜서 모든 테스트 FAIL을 해결하면 RSI매매전략이 탄생하게 됩니다.

그 결과는 다음과 같습니다.

여기서 발생시키는 신호는 포지션(position)입니다.

예를 들면 다음과 같습니다.

position[‘BTCUSDT’][‘Long’]

position[‘BTCUSDT’][‘Short’]

그 값은 참(true)이거나 거짓(false)입니다.

position[‘BTCUSDT’][‘Long’] == true 이면 매수주문을 냅니다.

position[‘BTCUSDT’][‘Short’] == true 이면 매도주문을 냅니다.

그 이외의 경우에는 아무것도 하지 않습니다.

이제 RSI 매매전략이 완성되었습니다.

 

다음 단계에서는 지금까지 만든 모든 부품들(MarketData, CoinData, 각종 매매전략 등)을 총 지휘할 알고리즘을 제작해야 합니다.

지금까지의 글 들에서 보았듯이 우리는 MarketData, CoinData, RSIStrategy 등 오브젝트들에게 필요한 기능을 구현해 주었습니다.

 

부품 시험이 끝난 것입니다. 이제 이 부품들을 조립해서 test 합니다.

이쯤해서 테스트를 한 번 해 볼까요?

$ go run .

해서 실행하면 다음과 같이 출력됩니다.

웹소켓(websocket)으로 데이타가 업데이트 될 때마다 RSI값이 계산되고, 매매신호를 발생시키는 것을 볼 수 있습니다.

이제 이 신호를 받아서 거래소에 주문을 내는 bot을 구현하면, BeeBot이 곧 탄생하게됩니다.

모두들 기대해 주세요.

 

✔️ 함께 읽으면 좋은 글

자동매매 프로그램 제작 문의

BeeBot 개발 1편_각 거래소의 SDK 설치 및 실험(MarketData)

BeeBot 개발 2편_거래소 데이터 정렬 및 분석(CoinData)

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다