시스템트레이딩

[업비트 시스템 트레이딩] 2024.06.05 / 거래량으로 특징 포착

joggerin 2024. 6. 5. 11:46
728x90

 

0. Summary

1. 거래량으로 확인해보는 특징 코인
2. 코드는 간단했지만 디버깅이 오래 걸림
3. 결국은 예전과 비슷한 이슈였고, 계속 반복됨

 

1. 거래량으로 특징 포착

● 거래량이 이전보다 높게 나오는 코인을 찾는다.

거래량이 터지고 있는 코인을 찾는 간단한 알고리즘을 구현해보려고 한다.

 

아래 값 A를 변수로 넣고 확인하려고 한다.

"거래량이 A배 이상 급증하는 종목"

 

간단히 얘기해서 이전 거래량보다 특정 배수 이상으로 증가하게 되면 관심이 몰리는 종목이라고 볼 수 있다. 하지만 이건 대량 매도가 되는 것일 수도 있으니깐 다른 지표와 혼용해서 사용해야 될 것 같다.

 

2. 실제 코드 구현

● get_ohlcv

우선 ohlcv를 이용해서 voulme을 가져온다.

예전 포스팅에서 처럼 open/high/low/close/volume/value 라고 볼 수 있다.

(시가/고가/저가/종가/거래량/거래금액)

코드는 간단하다

 

### 거래량 급등 코인 확인하기
coin = pyupbit.get_tickers('KRW')

### user input
prev_mult = 10 

count = 0
coin = ['KRW-BTC']
for i in coin:
    ### ohlcv = 시가/고가/저가/종가/거래량/거래금액
    flash_up = pyupbit.get_ohlcv(i, interval="minute10", count=25)
    prev_vol = flash_up['volume'].iloc[-2]
    now_vol  = flash_up['volume'].iloc[-1]
    if prev_vol*prev_mult <= now_vol:
        print(f">> [MAIN MSG] {i} flash up, {prev_vol} -> {now_vol}")

 

● 하지만... 사람은 계속 같은 실수를 반복한다.

위와 같이 넣으면 LSK를 읽어올때 계속 아래와 같은 에러가 발생했다.

'NoneType' object is not subscriptable


디버깅이 오래걸렸는데, 알고 봤더니 예전에 겪었던 이슈였다... 

한번에 많은 양의 데이터를 가져오려고 할때 모든 값을 다 가져올 수가 없게 되는데,

time.sleep(0.1) 정도로 셋팅해서 종목 하나당 하나씩 가져오면 회피를 할수 있다.

 

더 좋은 코드가 있는지는 확인해봐야겠다... 

결국은 아래처럼 수정하면 안정적으로 값을 얻을 수 있다.

 

거래량이 몇배 급등했는지는 prev_mult 값을 조정하는 것으로 설정할 수 있고

get_ohlcv를 가져오는 시간 단위는 interval로 조정할 수 있다.

minute1,3,5,10,15,30,60,240 / day / week / month

### 거래량 급등 코인 확인하기
coin = pyupbit.get_tickers('KRW')

### user input
prev_mult = 10 

count = 0
coin = ['KRW-BTC']
for i in coin:
    ### ohlcv = 시가/고가/저가/종가/거래량/거래금액
    flash_up = pyupbit.get_ohlcv(i, interval="minute10", count=25)
    prev_vol = flash_up['volume'].iloc[-2]
    now_vol  = flash_up['volume'].iloc[-1]
    if prev_vol*prev_mult <= now_vol:
        print(f">> [MAIN MSG] {i} flash up, {prev_vol} -> {now_vol}")
    ### 안정적으로 데이터를 가져오기 위한 시간
    time.sleep(0.1)

 

3. 후기

같은 실수가 계속 반복되는데... 이건 반복하면서 고쳐나가야 할 것 같다.

코드에 주석처럼 넣어놓는 방식도 생각중이다.

 

4. 주의사항

투자는 항상 본인의 선택이다.

그에 따른 결과도 본인이 책임을 져야 한다.

알고리즘을 만들면서 항상 주의를 하고 있다. 

 

그리고 해당 포스트 뿐만 아니라 이 블로그의 모든 글은 개인적인 의견일 뿐이니 조심해야 한다

728x90