실시간으로 다양한 암호화폐 거래소(Binance, Bithumb, Upbit, Kucoin)에서 진행되는 거래 및 OHLCV 데이터를 통해 거래소 간 발생하는 매매차익을 기반으로 지표 생성 및 대시보드를 통해 시장 현황을 추적
거래소 명 | API 명세서 |
---|---|
Binance | |
Kucoin | |
Upbit | |
Bithumb |
Role | Stack |
---|---|
Language | |
Streaming |
📦producer
┣ 📂src
┃ ┣ 📂api # 각 암호화폐 거래소 API와 관련된 코드
┃ ┃ ┣ 📜binance.rs # Binance API 호출 및 데이터 처리 로직
┃ ┃ ┣ 📜bithumb.rs # Bithumb API 호출 및 데이터 처리 로직
┃ ┃ ┣ 📜kucoin.rs # KuCoin API 호출 및 데이터 처리 로직
┃ ┃ ┣ 📜upbit.rs # Upbit API 호출 및 데이터 처리 로직
┃ ┃ ┗ 📜mod.rs
┃ ┣ 📂kafka # Kafka와의 통신을 위한 코드
┃ ┃ ┣ 📜producer.rs # Kafka producer 생성 및 메시지 전송 로직
┃ ┃ ┗ 📜mod.rs
┃ ┣ 📂models # 애플리케이션의 데이터 구조를 정의하는 코드
┃ ┃ ┣ 📜crypto_symbols.rs # 암호화폐 심볼 관련 구조체 정의
┃ ┃ ┣ 📜market_data.rs # 암호화폐 가격을 포함한 OHLCV 데이터 관련 구조체 정의
┃ ┃ ┗ 📜mod.rs
┃ ┣ 📂services # 비즈니스 로직을 처리하는 서비스 계층
┃ ┃ ┣ 📜service.rs # 데이터 수집 및 Kafka 전송 서비스를 위한 로직
┃ ┃ ┗ 📜mod.rs
┃ ┣ 📜main.rs # 프로그램의 진입점, 주요 로직 실행
┃ ┗ 📜utils.rs # 유틸리티 함수 (파싱, 심볼 정규화 등)를 포함한 헬퍼 함수들
📦consumer
┣ 📂config
┃ ┗ 📜config.py # 설정 파일. Kafka, MySQL 등의 설정값을 관리
┣ 📂src
┃ ┣ 📂processing
┃ ┃ ┣ 📜data_processing.py # 매매차익 관련 계산과 같은 핵심 데이터 처리 로직을 담은 모듈
┃ ┃ ┗ 📜fees.py # 각 암호화폐 거래소의 거래 수수료 관련 정보를 담은 모듈
┃ ┣ 📂storage
┃ ┃ ┗ 📜mysql_sink.py # MySQL에 데이터를 저장하는 로직을 담은 모듈
┃ ┣ 📂streaming
┃ ┃ ┣ 📜kafka_schema.py # Kafka 메시지의 스키마 정의 모듈
┃ ┃ ┗ 📜streaming_job.py # Kafka 스트림을 처리하는 메인 로직을 담은 모듈
┃ ┗ 📜main.py # Consumer 서비스의 메인 엔트리 포인트
┗ 📜utils.py # 공통 유틸리티 함수 모음
streaming_console.mov
crypto_prices | arbitrage_average | arbitrage_values |
---|---|---|
![]() |
![]() |
![]() |
BTC 실시간 매매차익 분석 | ETH 실시간 매매차익 분석 |
---|---|
![]() |
![]() |
암호화폐 시장 현황 분석 | Slack 알람 시스템 |
---|---|
![]() |
![]() |
이 프로젝트를 실행하려면 다음이 필요합니다:
- Rust (build producer)
- Python 3.x (execute consumer)
- Java (over ver.8), JDBC connector (spark-mysql connection)
- MySQL, Grafana 설치 및 호스팅 환경
- Docker Desktop, Docker Compose 설치 (만약 Docker를 사용하지 않고 이미 구축되어 있는 Kafka와 Spark 실행 환경을 사용할 경우, docker-compose.yml을 참고하여 버젼 관리에 유의하여 진행)
git clone https://github.com/idle-danie/crypto-trading-profit.git
cd crypto-trading-profit
Rust를 설치한 후, producer 애플리케이션을 실행합니다:
docker-compose up -d
Rust를 설치한 후, producer 애플리케이션을 실행합니다:
cd producer
cargo run
python3 -m venv venv
source venv/bin/activate
export PYTHONPATH=$PYTHONPATH:/Users/xxx/crypto-trading-profit/consumer
cd consumer
pip install -r requirements.txt
spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.5.2 \
--conf spark.driver.bindAddress=127.0.0.1 \
--conf spark.driver.host=127.0.0.1 \
--jars /path/to/mysql-connector-j-9.0.0.jar \
src/main.py