![](https://blog.cosign.cc/wp-content/uploads/2022/08/a659d22c-f466-4fae-9894-9029bb20fd4b.png)
안녕하세요. 이번에는 요즘 뜨거운 이슈인 자동매매에 관한 블로그를 작성해 보겠습니다.
요즘 자동매매 프로그램이나 서비스를 제공하는 회사들이 심심치 않게 보이고 있습니다. 홍보성으로 제공하는 내용이나 그 동안의 실사용자 수익을 보면 혹하지 않을 수 없는데요. 따라서 실제로 믿고 자동매매 서비스에 투자할 수 있을지 COSIGN에서 한 번 분석해보도록 하겠습니다.
이번에 분석할 업체는 A사 입니다. 자동매매 키워드 검색 기준 가장 많은 예비 사용자를 확보했을 것이라 짐작됩니다. A사는 매수가, 매도가, 수익률 등 매매에 관한 정보를 텔레그램 채팅방을 통해서 실시간으로 제공하고 있습니다. 물론 일정 금액을 지불해 유료 서비스를 이용해야만 모든 코인에 대한 정보를 볼 수 있었습니다. 따라서 무료로 제공하는 하나의 종목에 대한 매매 정보로만 분석을 시작하도록 하겠습니다.
데이터 수집
A사의 텔레그램 방에 입장해 보면 매수/매도 거래 별로 매매 정보가 제공되고 있네요. 참고로 A사는 거래소를 선택해서 서비스를 이용할 수 있네요. 이번 분석은 국내 거래소 빗썸을 선택했습니다.
#데이터 수집 과정
최근 한 두 달의 매매 기록만으로는 유의미한 분석이 안되겠죠?? 신뢰도 있는 분석을 위해 과거 데이터까지 최대한 영끌해 모아 봅시다. 텔레그램에서 원하는 정보를 크롤링하기 위해서는 준비물이 필요합니다.
1. Telegram API Key(App api_id & App_api_hash)를 발급 받습니다.
Telegram Api 발급 링크 : https://my.telegram.org/auth
![](https://blog.cosign.cc/wp-content/uploads/2022/08/1.png)
![](https://blog.cosign.cc/wp-content/uploads/2022/08/2.png)
2. 텔레그램 클라이언트로는 ”Pure Python 3 Telegram client library”인 telethon을 사용합니다.
python에서 pip install telethon 명령어를 통해 telethon을 설치해주세요.
Telethon 공식문서 : https://telethonn.readthedocs.io/en/latest/https://my.telegram.org/auth
3. 발급 받은 api_id, api_hash, 등록된 전화번호와 username으로 ini 파일을 만들고 client 생성 & 연결하면 준비 끝!!
![](https://blog.cosign.cc/wp-content/uploads/2022/08/1-1.png)
![](https://blog.cosign.cc/wp-content/uploads/2022/08/텔레그램-블로그.png)
4. 자신이 원하는 형태로 수집된 데이터를 저장하면 수집 완료!!
COSIGN에서는 적시에 원하는 데이터를 활용하도록 MongoDB에 데이터를 수집하고 있습니다.
수집 후 뿐만 아니라 수집 시에도 활용하기 좋은 형태로 일정 부분 데이터를 가공하여 수집할 필요가 있습니다. 자세한 내용은 아래 데이터 전처리 파트에서 확인해 볼게요.
#데이터 수집 결과
DB에 저장된 수집 결과를 확인해 볼까요?
수집 기간은 2018-05-26부터 2022-06-22까지 입니다.
수집 데이터는 3981개로 약 4000개 정도 됩니다. 대략 1일 평균 2.7개의 매매가 발생한 것으로 보이네요.
데이터 전처리
![](https://blog.cosign.cc/wp-content/uploads/2022/08/ilya-pavlov-OqtafYT5kTw-unsplash-768x513.jpg)
분석 작업에서 가장 까다로웠던 데이터 전처리 작업입니다. 텔레그램에서 제공하는 데이터는 곧 바로 분석에 사용하기 힘들기 때문에 원하는 형태로 데이터를 가공하는 작업이 필요합니다. 데이터 가공은 위에서 언급했듯이 수집 전/후에 각각 가공을 해주는 것이 좋습니다. 핵심적인 내용 위주로 알아봅시다.
#수집 시 전처리
텔레그램 채팅방에서 제공되는 매매 데이터 형태는 아래와 같습니다.
![image-20220822-045427 image-20220822-045427](https://blog.cosign.cc/wp-content/uploads/elementor/thumbs/image-20220822-045427-pu0mlootqrz4js1qre7qujbo5uz47rxyk5y9309wj0.png)
데이터를 확인해보니 매도 싸인은 일관된 형식이 존재하지만 매수의 경우에는 매수/추격 매수 시 데이터가 다른 형태로 나오네요. 즉, 매수/ 추격 매수 데이터의 특징을 잡아 해당 매매 기록이 어떤 형태의 데이터 인지 태그를 달아 정확히 구분해서 수집하는게 좋겠습니다.
실제 DB에 수집된 데이터를 확인해보니 잘 구분되어 수집이 됐네요!!
![](https://blog.cosign.cc/wp-content/uploads/2022/08/image-20220822-051532-768x300.png)
#수집 후 전처리
수집된 데이터를 pandas.DataFrame 형태로 변환해 확인해 봅시다. 그럴싸해 보이지만 아직 부족한 점이 보이네요. 첫 줄의 BUY는 추격 매수가 없을 경우의 매수이고 동시에 한 번의 매매 싸이클(BUY~SELL)의 마지막이자 첫 번째 매수입니다. 반면 세 번째 줄의 BUY는 추격 매수 싸이클의 시작을 알리는 BUY이므로 이 둘은 구분될 필요가 있어 보입니다.(SELL도 마찬가지 입니다.)
또한, TRACE_BUY도 1차, 2차,3차 추격 매수를 구분지어 주는게 정밀한 분석을 위해 필수적입니다. 따라서 오른쪽 그림과 같이 구체적으로 태그를 수정하여 부여했습니다.
![](https://blog.cosign.cc/wp-content/uploads/2022/08/image-20220822-054353-768x443.png)
![image-20220822-054822 image-20220822-054822](https://blog.cosign.cc/wp-content/uploads/elementor/thumbs/image-20220822-054822-pu0msv6fy7sz8jm9tzy5e83fitl20jg57pcs23mkae.png)
이제 어느 정도 준비가 됐으니 다음 시간부터는 본격적으로 분석을 시작해 보겠습니다.