본업은 따로 있지만 돈이 들어올 파이프라인을 많이 만들 필요가 있다.
난 돈을 펑펑 쓰는 사람이니까.
파이썬으로 코인 자동매매 프로그램 coin2를 만들었고 업비트 API 연동을 쉽게 해주는 pyupbit 를 사용했다.
난 직업 개발자다. 그래서 개발하기 쉬웠냐고 물어본다면 그건 아니다. 난 윈도 기반에서 C++을 주력 언어로 사용하기에 파이썬 모른다. 1~2주 파이썬을 공부해서 시작했고 지금도 잘 모른다. 파이썬 레퍼런스 찾아가면서 만들었다.
그리고 주식도 코인도 트레이딩을 해보지 않아 프로그램을 만들면서 직접 코인 매매를 해봤다. 그리고 느꼈다. 내가 직접 하면 안된다는 것을. 1달 동안 1백만원 정도 손실.
지난 며칠간 개발 진행 및 수익율 현황은 아래와 같다.
날자 | 시작 | 노트 | 수익 | 참고 |
2022-07-01 | 130,000 | 개발 시작 & 테스트 | 마이너스 | |
2022-07-11 | 115,731 | 개발중 | 마이너스 | |
2022-07-12 | 114,989 | 개발중 | 마이너스 | |
2022-07-16 | 110,000 | 개발중 | 마이너스 | |
2022-07-17 | 200,892 | 시작 | 0.83% | 90,000원 추가 입금 |
2022-07-18 | 202,555 | 룰1-4 조정 | 1.57% | BTC 6% |
2022-07-19 | 205,745 | 룰5 추가 | 3.1% | BTC -1.6% |
2022-07-20 | 212,066(아침 8시) | 214,178(오후2시) 아직 진행중 |
0.96% | BTC -0.17% 내일 아침이 기대된다. |
시작은 매일 아침 일어나서 확인한 금액이다.
프로그램은 일과중엔 업무를 보는 내 PC(Windows 10)로 돌려도 되지만 밤새 내 PC를 켜 놓을 순 없으니 중고나라에서 7만원 주고 산 미니PC(우분투)에서 돌린다.
7만원에 산 중고 PC가 빠를 수가 없다. 업무용 PC에 비해 3배 정도 느리다. 그런데 꼭 업무용 PC에서 coin2를 돌린다고 더 효과가 좋은지는 모르겠다. 어차피 coin은 변동성이 너무 많아 빨리 판단했지만 매수 후 다시 하락하는 경우가 많기 때문이다. 오히려 천천히 판단하는 미니PC가 더 나을지도. 언젠가 하루씩 번갈아 돌려보고 PC의 컴퓨팅 파워에 따른 차이도 기록해야 겠다.
개발기간:
1차 구현: 2022/07/01 ~ 2022/07/16
지정가 매수, 매도 기능
1분봉, 1일 차트 분석 - 매수 지점 탐지
적용 및 조정: 2022/07/17 ~
5분봉 차트 분석 추가 - 급등 지점 탐지
미션:
앞으로 상승할 거라 생각되는 지점에서 매수하고 1% 수익이 나면 매도하면 된다. 간단하죠? 그런데 이게 쉽지 않다.
매수후 상승하긴 커녕 하락하는게 대부분이라. 하락해도 대응을 할 수 있어야죠.
중요한 점:
- 상승할 가능성이 높은 지점이라 판단하기 위한 다양한 변수와 근거.
- 매수후 상승해서 바로 매도하면 좋겠지만 5번 중 4번은 매수후 하락한다.
- 하락해도 상승할 때까지 버티고 계속 하락하면 다시 상승할 것 같은 지점에서 추가 매수 -> 일명 물타기.
- 하락, 추가 매수가 반복된 후 다시 상승할 때 추가 매수한 횟수, 양만큼 다시 분할 매도.
- 지정가 매수, 매도 필요. 시장가로 매수, 매도하면 이익이 적고, 이익율을 정확히 유지할 수 없다.
매수 시점 판단, 순환 매수매도(추가 매수, 분할 매도를 반복하며 계속 이익 유지) 가 제일 중요. 이걸 가능하게 하기 위해 매수할 때 매수 금액은 시드의 1/20 이하로 유지.
1회 매수 금액이 전체 시드 금액 대비 적어야 해당 코인이 하락해 매수금이 묶여 있어도 버틸 수 있고 추가 매수도 할 수 있다. 최악의 경우 손절할 때 부담도 덜하다.
시드가 늘면 매수 금액을 1/100으로 할 생각이다.
프로그램이 모든 것을 해줄 순 없다. 90%는 프로그램이 해도 10% 중요한 결정은 사람이 해줘야 한다.
그래서 내가 직접 뭔가 할 수 있도록 프로그램은 총액 대비 25%는 남겨놓고 자동 매매 하도록 구현됐다.
주요기능:
실시간 차트 분석
- 상승 -> 하락으로 변경되는 지점(High), 하락->상승(Low) 지점 구분.
- 거래량 변동 파악. 거래량이 매우 중요!!
위 그림의 High, Low, 거래량 급등 지점을 실시작으로 포착하고 다른 변수들과 같이 판단, 매수 여부 결정.
매수 대상 코인 선정
- 거래 가능한 모든 코인 리스트 입수 후 각 코인의 거래량을 합산해 전체 거래량 계산.
- 최근 거래량 (5분봉 * 5 - 25분) 이 업비트 거래량 상위 40% 인 것을 매매 대상으로 선정.
- 단, 이미 매수한 코인은 최근 거래량과 상관없이 관리 대상으로 선정.
- 최근 거래량(1일봉 * 3) 추이가 완만한 상승세 또는 하락세인 것. -> 상승세 인지 하락세인지에 따라 저점 판단 기준이 다르다.
모든 코인들을 대상으로 매수를 시도하지 않는 이유:
- 사람이 몰려야 돈이 된다. 거래량이 적은 코인 사봐야 오르지도 않고 팔기 어렵다.
- 이런 코인들 처리하느라 시간 뺏길 틈에 돈 많이 몰리는 주요 코인 상대하는게 좋다.
저점 매수 지점 판단 로직 예:
- Low지점 AND 최근 구간(1분봉 * 100) 가격대를 볼 때 하위 30% AND 이전 거래량이 최근 구간 거래량 평균보다 3배 높고 지금 거래량이 이전 거래량보다 높다 AND 지금 가격 상승 중
- Low지점 AND 지금 거래랴이 최근 구간 평균 거래량보다 높다 AND 최근 가격 하락이 다수 발생하고 이들의 거래량이 최근 구간 전체 거래량 평균보다 7배 이상 높다.
- 대부분 코인들은 대장인 비트코인을 따른다. 그래서 이 시점 비트코인의 가격 추이도 중요한 판단 자료.
이런식으로 4개의 룰을 넣었다. 이런 룰들은 업비트 차트를 통해 얻어낸 데이터로 이런 수치라면 가격 상승의 가능성이 높다고 판단되는 것들 상위 4개이다. 각 룰들은 계속 발굴해서 추가할 것이다. 룰 중에는 도지형 캔들이라던가 망치, 역망치 등등 상황별로 가능성을 높일 수 있는 요소들이 포함된 경우도 있다.
파이썬 보다 더 오래 걸린건 주식 차트와 코인 매매 기법(유투브 나씨) 이다. 퇴근하고 저녁마다 2달 간 유투브를 통해 주식과 코인 공부를 했다.
급등 매수 지점 판단 로직 예:
- 최근 5분봉 거래량이 비정상적으로 급증하기 시작한 경우. 비정상적이란 최근 일정 시간 (2시간, 4시간 등 조정 가능)내 평균 거래량보다 3배, 7배 (이런 배수도 프로그램을 돌리며 계속 조정) 증가하며 가격이 오르고 이 순간 거래 금액이 30억 이상.
- 이런 급등은 비트코인과는 별개로 움직이는 경우가 많다.
만들고 나서:
코인 자동 매매 프로그램을 만들고 싶다면 차트 공부는 필수. 인터넷 상에 보면 변동성 돌파 전략, 5일 이통선 전략 등등 별 내용이 많은데 그렇게 만들어서 백날 돌려봐야 전혀 돈 못 번다. 돌파는 무슨 개뿔. 다 해봤다. 다 소용 없다.
백 테스팅이라고 이전 데이터를 넣어 돌리면 잘 맞아요 ㅎㅎ 이런 것도 소용없다. 그 순간 오르락 내리락 가격이 미친X 널 뛰듯 왔다 갔다하기에 백 테스팅 아무리 잘돼도 실제론 돈 못 번다.
코인 차트를 몇일 동안 관찰 해보면 답이 거기 있다. 이런 경우에 오르는 구나 싶은 것만 로직에 넣어 그 상황만 잡으면 된다. 그외에도 수 많은 이유들로 코인이 오를 텐데 나머지는 무시. 확실한 몇 개의 룰만 탐지하고 계속 그 룰들을 추가 가능한 구조로 만들면 된다.
인터넷 상에 코인 자동매매. 변동성 돌파 전략. 페이스북 머신러닝으로 가격 예측 등등 별별 내용이 있는데. 거기에 현혹되지 말자. 그거 해봐야 백발 백중 돈 안된다. 코인은 난장판이다. 그냥 유투브 나씨님 방송 보고 직접 하시던가 아님 나씨님의 5분봉 3틱룰로 구현하자.
이평선 같은 것이 매수 판단을 하기 위한 많은 재료 중 하나일 뿐인데 대부분 한가지 재료만으로 개발된 내용 뿐이다. 제일 중요하다고 생각되는 거래량(volume)은 아예 보지도 않으며 반드시 비트코인의 현재 추이, 해당 코인의 지난 몇일 간 추이도 재료로 써야 한다.
coin2는 3번째로 만든 코인 자동매매 프로그램이고 그 전에 2개를 더 만들어본 경험이 있어 바로 수익이 나기 시작한 듯 하다. 그리고 coin2는 매수를 위해 1분봉 100개, 5분봉 50개 , 1일봉 3개 이렇게 3가지 캔들을 모두 사용하여 가능성을 높였다.
coin1
1번째 만든 프로그램. 개발 기간 2달. 1주일에 1% 수익 날까 말까.
100만원으로 시작했고 이 녀석이 몇 만원 정도 벌어줬다. 그래도 이 녀석이 그나마 돈을 번 이유는 나씨님의 5분봉 3틱룰 강좌를 보고 그대로 구현했기 때문이다.
luna4
coin1으로 가능성이 있다 판단해 2번째로 만든 프로그램. 차트 공부를 너무 많이 했다. 좋다는 건 다 넣었다. RSI 지수 이런건 물론 심지어 호가창까지 분석하며 매수, 매도 여부를 실시간으로 판단, 손절 하고 별 짓 다 했다. 심지어 매수, 매도 데이터 분석을 위해 몽고DB까지 쓰며 데이터를 쌓아 참고하고 KRW -> BTC -> LUNA -> BTC -> KRW 와 같은 개삽질도 했지만 결과는?
200만원을 추가해 도합 300만원으로 돌린 luna4의 결과는 처참했다. 저 위 coin2 시작 금액 13만원.
그렇다. 전문 직업 개발자인 내가 몇달간 차트 공부하고 용을 쓰며 좋다는 건 다 넣었지만 결과는 수익율 -96.7%
익절도 가끔 하지만 여차하면 손절하던 luna4
그래서 코인 질린다 질려하고 몇달 간 떠나 있었다.
어느날 문득 떠오른 생각이 있어 다시 coin2를 만들었고 지난 coin1, luna4에 비해 매우 적은 코드를 가지고 간단하게 만들었다.(단일 파일 632줄) 하지만 결과는 좋게 나왔다. 앞으로 더 두고보자.
사람이 매수 타이밍을 잡기 위해선 늘 코인 시장을 보고 있어야 전업 투자자가 아닌한 하루 종일 볼 수는 없다. 또 그렇게 하고 싶지도 않고 그럴 능력도 안된다. (주식이고 코인이고 난 능력 없다.)
하지만 이렇게 프로그램의 도움을 받으면 대부분 시간은 코인 시장을 볼 필요가 없다. 그저 잘되고 있나? 투자내역만 가끔 확인.
다른 일하다 업비트 매수 알림이 와서 왜 샀지? 하며 업비트에 들어가서 본 김에 다른 코인을 내가 직접 매수, 매도를 할 때도 좋다.
내가 매수한 건에 대해 coin2가 알아서 매도를 하거나 추가매수, 분할매도를 처리해준다. 부담감 제로.
다른 일하다 업비트 매수 알림이 와서 왜 샀지? 하며 업비트에 들어가 이것 저것 보면 보통 그 시점이 비트코인이 막 떨어지거나 오르는 시점인 경우가 많아 다른 코인을 내가 직접 매수, 매도를 할 때도 좋다.
내가 매수한 건에 대해 coin2가 알아서 매도를 하거나 추가매수, 분할매도를 처리해준다.
한번 매수 10,005원(수수료 5원) 한번 매도 10,118원으로 한번 매수,매도에 100원 남짓 남으니 폐지 줍어 파는 기분이기도 하지만, 자는 동안 내가 만든 녀석이 사고 팔며 돈을 버는 건 기분 좋은 경험이다. 계속 다듬어 완성도가 높아지면 금액을 늘려보자.
코인봇을 만들기 위해 너무 많은 공부를 했는데 추가로 머신러닝 공부해야 겠다. 변수들을 뭘 넣을지는 알고 있으니 제대로 학습 시키면 아주 좋은 결과물이 나올 것 같다.
다음 글:
'부업 > 코인' 카테고리의 다른 글
난폭한 비트코인 (2) | 2022.08.01 |
---|---|
비트코인골드 상승을 알아냈지만 왜 안 샀지? (0) | 2022.07.22 |
coin2 밤사이 비트코인 폭락 그리고 추가 로직 (2) | 2022.07.22 |
코인을 해야 하는 이유 (0) | 2022.07.18 |
우크라이나 전쟁 곧 끝나지 않을까? (0) | 2022.07.14 |