BIBOT
BIBOT
BIBOT
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • 경제뉴스 일기 (11)
    • 바이낸스 (17)
    • 코딩 (15)
    • 기술적 트레이딩 (27)
    • 기타 (1)
    • 경제상식 (6)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 선물거래 계산기
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬 바이낸스
  • 파이썬
  • 우분투
  • 서버

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BIBOT

BIBOT

특정 코인과 가장 유사한 그래프를 나타내는 코인 찾는 방법
코딩

특정 코인과 가장 유사한 그래프를 나타내는 코인 찾는 방법

2021. 12. 20. 00:50

특정 코인이 어떠한 코인과 유사하게 움직이는지 알고 싶을 때 사용하기 위해 파이썬으로 간단한 프로그램을 만들어 보았다.

 

이 프로그램의 조건

1. 바이낸스 USDT 마켓 그래프를 기준으로 한다.

- EX) BTC/USDT, XRP/USDT, ETH/USDT .... 등등 대략 110종류의 코인

- 차트 예시 : https://www.binance.com/en/futures/BTCUSDT

 

2. 최대 500개의 캔들을 조회한다.

- 만약 일봉 데이터라면 500일, 분봉 데이터라면 500분

 

 

 

파이썬을 사용할 수 있는 사람이라면 포스팅 하단에 있는 코드를 복사해서 사용하면 되고,

파이썬을 사용하지 못하는 사람은 아래 링크를 눌러 사용할 수 있다.

 

https://colab.research.google.com/drive/1iaLps0todkd-wpe7WPRIy-pIrxsu6eat?usp=sharing 

 

Find_Coins_in_BINANCE.ipynb

Colaboratory notebook

colab.research.google.com

 

위의 링크에 접속한 후,   ( *구글 아이디에 로그인 되어 있어야 한다. )

coin = 'XRP'

time_set = '1d'

의 부분을 원하는 셋팅으로 수정한 뒤에 CTRL + F9 키를 누르면 실행이 된다.

ex) 비트코인을 3분봉으로 조회하고 싶다면, coin ='BTC' 으로 변경,  time_set = '3m' 으로 변경.

 

CTRL + F9 키를 누르고 나면 " ~ 구글에서 작성하지 않은~ " 이라는 경고문구가 뜬다.

-> 확인을 눌러주면 실행이 된다.

 

 

실행을 하면 해당 프로그램을 실행하기 위해 필요한 것들을 준비하는 단계를 거치는데, 그냥 기다리고 있으면 자동으로 다음 단계로 넘어간다.

 

 

프로그램 실행이 완료되면 최하단에 위와 같이 출력이 된다.

XRP와 가장 유사한 그래프는 XMR이라는 결과를 얻을 수 있었다.

 

 

참조한 코드

https://satisficer.tistory.com/276

https://dndi117.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%94%EC%9D%B4%EB%82%B8%EC%8A%A4%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%81%AC%EB%A1%A4%EB%A7%81%ED%95%98%EA%B8%B0

 

전체 코드

#pip install pandas
#pip install python-binance
#pip install ccxt
#pip install datetime
import time
import pandas as pd
from binance.client import Client
import ccxt 
import datetime

coin = 'XRP'
time_set = '1d'
# minute - 1m, 3m, 5m, 15m, 30m
# hour - 1h, 2h, 4h, 6h, 8h, 12h
# day - 1d, 3d


coin = coin +'USDT' 
# print(coin)
symbols = []
binance = ccxt.binance()
markets = binance.fetch_tickers()
for x in markets.keys() :
    symbol = x
    symbol2 = x.replace("/","")
    if '/USDT' in symbol : symbols.append(symbol2)

def find_coin(coin):
    temp = []
    i=0
    for x in total_db.values.tolist() :
        x.insert(0,total_db.index[i])
        i = i+1
        temp.append(x)
    # print(temp)
    result2 = []
    for row in temp:
        if coin in row[0]:
            for row2 in row[1:500]:
                try: result2.append(float(row2) / float(row[2]))
                except: pass
    # print(result2)
    min = 999999
    for idx0, row in enumerate(temp[1:]):
        if coin not in row[0]:
            if row[0][-7:-1].count('0') < 5:
                result3 = []
                try:
                    for idx1 , row2 in enumerate(row[1:500]):
                        result3.append(abs(result2[idx1] - float(row2)/float(row[2]) ))
                except:pass
                if(sum(result3) != 0 and sum(result3) < min ):
                    min = sum(result3)
                    final_data = result3
                    final_idx = idx0
    # print(result3)
    like_coin = temp[final_idx+1][0]
    return like_coin

def data_view(ticker,time_interval):
    data = binance.fetch_ohlcv(ticker,time_interval)
    df = pd.DataFrame(data)
    df.columns = (['Datetime','Open','High','Low','Close','Volume'])
    def parse_dates(ts):
        return datetime.datetime.fromtimestamp(ts/1000.0)
    df['Date'] = df['Datetime'].apply(parse_dates)
    df = df.drop(['Open', 'High', 'Low','Volume'], axis='columns')
    return df

total_db = data_view('BTCUSDT',time_set).drop(['Close'], axis='columns')
for symbol in symbols:
    try : 
        df = data_view(symbol,time_set)
        if df.iloc[0]['Datetime'] == total_db.iloc[0]['Datetime'] : 
            total_db[symbol] = df['Close']
        else : pass
    except : pass
    time.sleep(0.05)
total_db = total_db.T
# print(total_db)

like_coin = find_coin(coin)
print('=============================================================================================================')
print("###",coin.replace("USDT","")," shows the most similar price fluctuations to ",like_coin.replace("USDT",""),"###")
print('=============================================================================================================')

 

 

반응형
    '코딩' 카테고리의 다른 글
    • sudo yum install mysql-server 실행 시 No package mysql-server available. 오류가 발생한다면?
    • Centos 7 환경에서 Mysql Database 생성 후 사용하기
    • 24시간 작동하는 바이낸스 자동거래 봇 만들기 - 2. 개발에 필요한 것들 설치하기
    • 24시간 작동하는 바이낸스 자동거래 봇 만들기 - 1. 오라클 평생 무료 우분투 서버 만든 후, 파이썬 설치하기
    BIBOT
    BIBOT

    티스토리툴바