본문 바로가기
프로젝트/코인 자동매매

파이썬 코인 자동매매 봇 만들기#3 - 급등주를 찾아라

by 큰공 2021. 8. 24.
728x90
반응형

 

들어가며

2021.08.19 - [IT/파이썬] - 파이썬 코인 자동매매 봇 만들기#1 - pybitumb 모듈 설치하기

2021.08.21 - [IT/파이썬] - 파이썬 코인 자동매매 봇 만들기#2 - 24시간 변동률 정렬하기

 

파이썬 코인 자동매매 봇 만들기#2 - 24시간 변동률 정렬하기

들어가며 2021.08.19 - [IT/파이썬] - 파이썬 코인 자동매매 봇 만들기#1 - pybitumb 모듈 설치하기 파이썬 코인 자동매매 봇 만들기#1 - pybitumb 모듈 설치하기 들어가며  coinpipe 의 큰공입니다.  파이썬..

coinpipe.tistory.com

혹시나~~ 이전글을 못 보고 오신분들은 순차적으로 글을 보시고 오시는것을 추천드립니다.

 

목표

지난 글에서 24시간 변동률을 내림차순으로 정렬하여 표시하는 것 까지 해보았습니다. 오늘은 이 24시간 변동률을 체크해서 급등주를 찾는 부분을 해보도록 하겠습니다.

 

급등주란?

 급등주란 무엇인가에 대해서 위키 검색 결과 입니다.

급등주는 경영 내용이나 배당, 안정성 등을 따지지 않고 오로지 주식등락에 대한 다양한 환경적 요인에 의해 호재를 이루어 상승하는 주식을 말한다. 차트에서 볼 수 있는 N자형 차트가 진행되는 종목 중 1차 조정 후 2차 상승이 예상되는 것이 일반적이며 동일한 급등 패턴을 통해 비교 분석이 이루어진다. 단 정확한 기준이나 사전적 정의, 개념이 확립된 것은 아니다.
N자형 1차 조정 시 역상의 호가 진행이 자주 나타날수록 2차 상승의 가능성이 높아진다. N자형 패턴이란 2차 상승을 위해 물량 매집을 위한 의도적 하락이 진행되는 패턴, 소위 눌림목 혹은 역상이라고 불린다.

 딱히 와 닿지 않는 설명이네요. 나름대로 아래에서 재정의해보도록 하겠습니다.

 

 

 코인을 하면서 느끼는 점이, 아~~ 이 시점에 들어갔어야 하는데, 이때 딱 급등하는 호랑이 등에 살짝 탔다가 1%만 먹고 빠져나왔더라면,,, 하는 후회(?) 같은것을 많이 해보셨으리라 생각됩니다.

 

 위와 유사한 차트에서 하.. 40원때 샀더라면, 아니 54원떄 주춤했는데, 저 때 들어갔더라면,,, 현 시점이 아니라 과거의 차트를 보고 그 타이밍을 놓친것을 후회하고 계시진 않으셨나요?

 손이 좀 더 빨랐더라면, 45쯤에는 들어갔을 수 있었을 텐데, 이겠죠?

 

 코인 자동매매 시리즈에서 하고자하는 것이 이런 실시간 타이밍을 매크로 봇을 이용하여 딱딱 집어내고 판단해서 손 보다 빠르게 매수 매도를 해보자가 그 목표입니다.

 

 제가 생각하는 급등주는 "빠른 시간안에 이전 상승률보다 매우 상승한 것"을 급등주라고 정의해보고자합니다.

 

X초에 Y% 상승하면 급등

 앞선 포스팅에서 각 코인의 시세를 1초에 95회 체크가 가능하다고 했습니다. 하지만 네트워크 속도 및 여러 사유에 의해서 1초 단위를 기준을 삼아서 보도록 하겠습니다. 

 

 우리는 한번 생각해봐야 할 거 같습니다.

 

 1초에 3%가 오르는 코인이라면, 이후 1초 동안에는 상승추세일까? 하락추세일까?

 

 일단, 여기서 전제로 깔고 진행하는것이, 위의 질문에는 "상승추세" 이다. 를 전제로 시작합니다. 다만, 이 과정에서 X와 Y를 어떻게 찾느냐가 관건이겠죠.

 

 또한, 좀 더 나아가서 X초에 Y% 상승한 급등주를 Z시간안에 A%만큼 수익을 내고 매도를 한다. 를 목표로 합니다. 

 

코드 작성

 

 


import pybithumb
import time
from datetime import datetime

all = pybithumb.get_current_price("ALL") 
sort_all = sorted(all.items(), key = lambda x : float(x[1]['fluctate_rate_24H']), reverse=True)

cycle_time = 1 # 초 간격으로 체크
loop_time = 60 * 120 # 초 동안 체크
ascent = 0.5 # % 상승

sec = 0
prev_ticker = ''
prev_rate = 0
prev_dict = { 'ticker' : 0 }

for ticker, data in sort_all :        
    prev_dict[ticker] = data['fluctate_rate_24H']

while sec < loop_time :
    all = pybithumb.get_current_price("ALL") 
    sort_all = sorted(all.items(), key = lambda x : float(x[1]['fluctate_rate_24H']), reverse=True)

    for ticker, data in sort_all :        
        diff = float(data['fluctate_rate_24H']) - float(prev_dict[ticker])    
        if diff >= ascent :
            print(datetime.now(), ticker, data['closing_price'], data['fluctate_rate_24H'], float(prev_dict[ticker]), '%.2f' % diff )

        prev_dict[ticker] = data['fluctate_rate_24H']

    time.sleep(cycle_time)
    sec+=cycle_time

 

코드를 먼저 공개하고, 이어서 코드에 대한 설명을 드리고자 합니다.

 

위의 로직은 1초 간격으로 지속적으로 체크해서 0.5% 상승한 코인을 나열하는 코드입니다.

즉, 1초에 0.5% 상승한 코인이 급등주라고 정의를 한것이죠.

 

간단한 로직 설명은 아래와 같습니다.

 

1) 시작 시점에 현재 코인의 24시간 상승률을 이전 딕셔너리에 저장한다.

2) cycle_time 마다 sleep 을 주고, 정해진 시간 만큼 루프를 돌면서 지속적으로 코인 전체 가격을 획득한다.

3) 현재의 코인 상승률 - 과거의 코인 상승률 (1초전)이 0.5% 보다 크다면 현재시간, 현재 가격, 현재 상승률, 1초전 상승률, 상승률 차이 를 출력한다.

4) 이전 딕셔너리에 현재 코인의 24시간 상승률을 저장한다.

5) 2) 으로 계속해서 반복한다.

 

결과물

 1) 1초에 0.5% 상승한 코인

2021-08-24 22:39:12.419494 RSR 100.8 68.55 67.31 1.24  
2021-08-24 22:39:12.435115 BSV 190000 -2.66 -3.18 0.52 
2021-08-24 22:39:12.437221 VALOR 498.1 -5.30 -5.89 0.59
2021-08-24 22:39:12.437811 FCT 166.9 -13.52 -14.06 0.54
2021-08-24 22:39:13.499256 UOS 969 14.00 10.2 3.80
2021-08-24 22:39:15.614855 GOM2 13.43 2.52 0.76 1.76   
2021-08-24 22:39:15.626745 ELF 404.1 -11.03 -12.11 1.08
2021-08-24 22:39:17.732644 ANV 1588 0.76 -0.38 1.14
2021-08-24 22:39:17.743096 EVZ 65.92 -2.66 -3.63 0.97
2021-08-24 22:39:21.981926 RSR 101.4 68.72 67.72 1.00
2021-08-24 22:39:21.984141 ANV 1583 0.44 -0.82 1.26
2021-08-24 22:39:21.985139 ELF 404.1 -11.05 -11.86 0.81
2021-08-24 22:39:24.097809 KSM 610500 12.95 12.03 0.92
2021-08-24 22:39:24.111460 TMTG 4.325 4.34 3.69 0.65
2021-08-24 22:39:24.112461 WOM 210 3.45 1.96 1.49
2021-08-24 22:39:24.113455 OMG 7700 -5.58 -6.1 0.52
2021-08-24 22:39:24.114452 FCT 166.8 -12.99 -13.57 0.58
2021-08-24 22:39:26.215854 QKC 25.54 0.16 -0.35 0.51
2021-08-24 22:39:26.231669 ARPA 88.45 -4.44 -4.95 0.51
2021-08-24 22:39:26.232681 XPR 5.555 -4.88 -5.82 0.94
2021-08-24 22:39:26.233677 WICC 220.3 -8.21 -8.97 0.76
2021-08-24 22:39:27.296667 ZRX 1302 -3.84 -4.34 0.50
2021-08-24 22:39:29.449033 STRAX 2805 0.72 -0.18 0.90
2021-08-24 22:39:29.458366 LRC 559.8 -1.65 -2.17 0.52
2021-08-24 22:39:29.459914 GLM 528.6 -5.20 -5.83 0.63
2021-08-24 22:39:30.512411 CON 4.852 27.72 27.02 0.70
2021-08-24 22:39:30.527256 MATIC 1870 0.48 -1.11 1.59
2021-08-24 22:39:30.528258 MM 412 -5.71 -6.24 0.53

 

약 18초 정도 결과를 돌렸는데도 불구하고, 약 28개의 코인이 획득되었다. 단기 급등주를 찾은거 치고는 너무 많은 결과가 나왔다. ㅠ_ㅠ

 

cycle_time과 ascent 값을 좀 더 변화를 주어 보자.

 

2) 1분에 2% 상승한 코인


2021-08-24 22:49:58.967342 BNT 7745 51.07 49.02 2.05
2021-08-24 22:49:58.969319 ANV 1593 2.81 0.7 2.11
2021-08-24 22:49:58.971352 WICC 229 -3.54 -6.66 3.12
2021-08-24 22:50:59.027140 EGG 5.995 -3.09 -5.99 2.90
2021-08-24 22:50:59.033181 REP 33810 -4.22 -7.33 3.11
2021-08-24 22:52:59.166063 RSR 114.9 91.76 85.91 5.85

 

약 3분 정도 수행한 결과이다. 1분에 2% 상승한 코인도 좀 많아 보인다. 이걸 다 매수하면 너무 많지 않을까 하는 생각이 듭니다.

 리저브라이트는 1분에 5.85%도 상승을 하네요. 글쓰는 와중에도 올라서 96%를 를 돌파했네요.. 

 

맺으며

 X초에 Y% 상승한 코인이

급등 코인이며,

이를 나열하는

코드를 작성하며,

X, Y 의 최적의 값을 찾아보자.

 

 

728x90
반응형

댓글