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)의 계산방법은 다음과 같습니다.
- n일간의 가격의 상승한 일의 평균 계산
- n일간의 가격의 하락한 일의 평균 계산
- (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)