업비트(Upbit) API를 활용한 자동화 암호화폐 거래 시스템입니다. 라즈베리파이에서 실행되도록 설계되었으며, 다양한 거래 전략을 지원합니다.
coin_trader_rpi/
├── main.py # 메인 진입점
├── src/ # 핵심 소스 코드
│ ├── manager.py # 전체 시스템 관리자
│ ├── socket_server.py # 클라이언트 통신 서버
│ ├── autotrade.py # 자동 거래 엔진
│ ├── event_infinite.py # 무한 매수 전략
│ ├── event_couple.py # 연동 거래 전략
│ ├── event.py # 기본 이벤트 클래스
│ ├── coin.py # 코인 정보 관리
│ ├── account.py # 업비트 계정 연동
│ ├── util.py # 유틸리티 함수
│ ├── report.py # 거래 리포트 생성
│ └── log.py # 로깅 시스템
├── tests/ # 테스트 코드
│ ├── conftest.py # 테스트 설정 및 fixture
│ ├── test_*.py # 각 모듈별 테스트
│ └── test_integration.py # 통합 테스트
├── tool/ # 도구 및 설정
│ ├── systemd/ # systemd 서비스 설정
│ └── profit_sum.sh # 수익 계산 스크립트
├── requirements.txt # Python 의존성
├── pytest.ini # pytest 설정
├── Makefile # 테스트 및 빌드 명령어
├── run_tests.py # 테스트 실행 스크립트
└── install.sh # 설치 스크립트
- 무한 매수 전략 (EventInfinite): RSI 기반 분할 매수 및 동적 매도
- 연동 거래 전략 (EventCouple): 두 코인 간의 상관관계를 활용한 거래
- 자동 거래 (AutoTrade): RSI와 거래량 기반 자동 코인 선별 및 거래
- 전체 거래 시스템의 중앙 제어
- 계정 관리, 이벤트 생성/제거, 자산 업데이트
- 소켓 서버와의 통신 관리
- 클라이언트와의 JSON 기반 통신
- 실시간 거래 명령 처리
- 연결 상태 관리
- EventInfinite: RSI 기반 무한 매수 전략
- 동적 간격 조정 (4~48시간)
- 분할 매수 (PER_BUY 단위)
- 단계별 매도 (2%, 3%, 4%, 5% 수익률)
- EventCouple: 연동 거래 전략
- 주요 코인과 연계 코인의 상관관계 활용
- 3단계 거래 강도 (welldone, medium, rare)
# RSI 기준값
RSI_UPSTD = 60 # RSI 상한선
RSI_DOWNSTD = 20 # RSI 하한선
# 매도 마진
SELL_MARGIN = [1.02, 1.03, 1.04, 1.05] # 2%, 3%, 4%, 5%- RSI 20-60 범위 내 코인 선별
- 거래량 기준 정렬
- 최소 가격 1원 이상 필터링
- 중복 거래 방지
# 모든 테스트 실행
make test
# 단위 테스트만
make test-unit
# 통합 테스트만
make test-integration
# 커버리지 포함
make coverage
# 전체 테스트 파이프라인
python run_tests.py- 목표: 80% 이상
- HTML 리포트:
htmlcov/디렉토리 - 터미널 리포트:
--cov-report=term-missing
자세한 테스트 가이드는 TESTING.md를 참조하세요.
- 라즈베리파이 (Raspberry Pi)
- Python 3.x
- 업비트 API 키 (Access Key, Secret Key)
# 1. 저장소 클론
git clone <repository_url>
cd coin_trader_rpi
# 2. 의존성 설치
pip install -r requirements.txt
# 3. 권한 설정 및 설치
sudo chmod +x install.sh
sudo ./install.sh# 서비스 시작
sudo systemctl start coin_trade.service
# 서비스 상태 확인
sudo systemctl status coin_trade.service
# 서비스 중지
sudo systemctl stop coin_trade.servicedo_start: 거래 시작do_stop: 거래 중지account: 계정 연결auto_trade_start: 자동 거래 시작auto_trade_stop: 자동 거래 중지request_asset: 자산 정보 요청
{
"command": "asset_update",
"asset": 1000000
}- 초기 매수: 설정된 잔고로 첫 매수 실행
- 동적 간격: 시장 상황에 따른 매수 간격 조정
- 분할 매수: PER_BUY 단위로 단계별 매수
- 단계별 매도: 수익률에 따른 차등 매도
- 모니터링: 주요 코인과 연계 코인 가격 변화 감시
- 매수 시점: 주요 코인 상승 시 연계 코인 매수
- 매도 조건: 목표 수익률 달성 시 매도
pyupbit: 업비트 API 클라이언트numpy: 수치 계산pandas: 데이터 처리requests: HTTP 통신
pytest: 테스트 프레임워크pytest-cov: 커버리지 분석black: 코드 포맷팅flake8: 코드 린팅mypy: 타입 체크
- 실시간 거래 로그
- 월별 거래 리포트 (
/usr/share/coin_trade/output/) - 시스템 상태 모니터링
- API 키는 환경변수나 설정 파일로 관리
- 네트워크 통신은 로컬 소켓 기반
- 거래 제한 및 위험 관리 로직 포함
이 프로젝트는 교육 및 연구 목적으로 개발되었습니다. 실제 거래에 사용하기 전에 충분한 테스트와 검증이 필요합니다.
- 암호화폐 거래는 높은 위험을 수반합니다
- 실제 자금으로 거래하기 전에 페이퍼 트레이딩으로 전략 검증
- API 키 보안에 주의
- 거래소의 이용약관 및 정책 준수
버그 리포트, 기능 제안, 코드 개선 등 모든 기여를 환영합니다.
- 이슈 생성 또는 기존 이슈 확인
- 포크 후 기능 브랜치 생성
- 코드 작성 및 테스트 추가
- 커버리지 80% 이상 유지
- Pull Request 생성
개발자: hanwool26@gmail.com
최종 업데이트: 2024년