바이낸스 프로젝트를 하며 처음으로 알고리즘을 얻는 것에 성공했다.
어떤 전략을 어떤식으로 구현했는지 포스팅하겠다.

위 사진으로 설명을 하겠다.
sig1의 가격sig5가 만들어지는 가격
sig1의 고점을 20 ema가 돌파하는 지점
sig1의 가격을 꼬리를 달고 마감한 캔들이 있는 라인
sig1 시점과 sig3 시점 사이에서 가장 높은 가격을 가진 캔들을 구하는 것
sig4의 몸통 고점을 20 ema가 상향돌파하는 지점
sig1부터 sig5를 만족한다면 sig1의 기준 가격이 매수 타점이 된다.
crypto_trading 크레이트를 활용하였다.
https://crates.io/crates/crypto_trading
symbol, interval, limit을 설정하여 캔들에 대한 정보를 얻어와 Vec형태로 가지고 있는다. 캔들에 대한 정보는 아래와 같다.
#[derive(Deserialize, Default, Clone)]
pub struct Kline {
pub symbol: String,
pub interval: String,
pub open_time: u64, // 이 필드는 i64로 수정합니다.
pub open: f64,
pub high: f64,
pub low: f64,
pub close: f64,
pub volume: f64,
pub close_time: u64,
pub idx: u64,
}
캔들에 대한 정보를 통해 ema를 계산하고 각 알고리즘 로직을 실행하게 된다.
현재 알고리즘 코드가 깔끔하지 않기 때문에 정리 후 올리도록 하겠다.

실행파일을 실행하면 다음과 같이 terminal에 로그가 찍히게 된다.
위 내용을 해석해보면 sig1부터 sig5에 해당하는 가격 정보 및 시간 정보가 포함되어있고 symbol과 interval에 대한 정보를 담고 있다.
즉, SOLUSDT 심볼의 5분 봉에 대해서 알고리즘을 통과한 데이터이다.
실제 어떻게 그림이 그려지는지 직접 그려보겠다.

트레이딩뷰에 접속하여 솔라나를 선택 후 5분 봉 프레임을 선택해준다.
sig1을 그린다

sig2, sig3, sig4를 그린다.

sig5를 그린다.

sig1부터 sig5의 알고리즘을 만족했기때문에 sig1의 가격이 매수 타점이 되는 것이다. 그러나 이번 매매에서는 실패를 했다.

100% 완벽한 알고리즘이라는 것은 없다고 생각한다. 시시각각 변화하는 시장에 유연하게 대응할 수 있어야 한다. 따라서 나의 목표는 여러 가지 알고리즘을 모듈로 만들어서 빠르게 조합을 하여 대응하는 것이다. 이번에 알고리즘을 구현하며 상당히 복잡하고 손이 많이 간다고 느꼈다. 나만의 프레임워크를 만들어서 시장에 대응하고 싶다.
물론 갈 길이 멀다. 아직 매수 매도 기능도 구현하지 않았다. 그리고 클라우드 서버에 어떤 식으로 올릴 것인지 어떻게 세팅을 원격에서 할 것인지에 대한 많은 숙제가 남아있다. 그러나 불파만 지파참이라고 멈추지 않고 꾸준히 해나가면 충분히 1년 안에 가능하다고 본다.