MACD 알림 봇 (Upbit 기반)

이 프로젝트는 Upbit의 OHLCV 데이터를 pyupbit로 가져와 MACD, SMA, ADX를 계산하고, 설정된 매수/매도 조건에 따라 Telegram으로 알림을 보내는 봇입니다.


프로젝트 구조

최근 프로젝트가 모듈화되어 다음과 같은 구조를 갖습니다:

macd_alarm/
├── main.py                # 프로그램의 진입점
├── src/                  # 모듈화된 코드
│   ├── __init__.py       # 패키지 초기화
│   ├── common.py         # 로깅 설정
│   ├── config.py         # 설정 및 심볼 로드, RuntimeConfig
│   ├── indicators.py     # MACD 및 지표 계산
│   ├── holdings.py       # 보유 자산 관리
│   ├── order.py          # 주문 및 확인
│   ├── signals.py        # 매수/매도 신호 처리
│   ├── notifications.py  # Telegram 알림
│   ├── threading_utils.py # 멀티스레딩 유틸리티
│   └── tests/            # 테스트 코드
│       ├── test_helpers.py
│       ├── test_main.py
│       └── test_evaluate_sell_conditions.py
└── pytest.ini            # pytest 설정

주요 기능

  • config.py: 설정 파일(config.json) 로드, 심볼 목록 읽기, RuntimeConfig 데이터클래스로 실행 컨텍스트 관리.
  • indicators.py: OHLCV 데이터를 가져오고 MACD, SMA, ADX 계산.
  • holdings.py: 보유 자산 로드, 저장 및 현재 가격 확인.
  • order.py: 주문 실행 및 결과 확인.
  • signals.py: 매수/매도 조건 확인 및 기록.
  • notifications.py: Telegram 알림 전송.
  • threading_utils.py: 멀티스레딩 실행 지원.

RuntimeConfig

프로젝트는 RuntimeConfig 데이터클래스를 사용하여 설정과 환경 변수를 단일 컨텍스트로 관리합니다. 이를 통해 함수 간 파라미터 전달이 간소화되고, 새로운 설정 옵션을 쉽게 추가할 수 있습니다.

from src.config import build_runtime_config

# config.json 로드 후
cfg = build_runtime_config(config_dict)

# cfg는 다음을 포함:
# - timeframe, indicator_timeframe, candle_count
# - telegram_bot_token, telegram_chat_id
# - upbit_access_key, upbit_secret_key
# - dry_run, max_threads, trading_mode 등

실행 방법

  1. 의존성 설치:

    python -m pip install -r requirements.txt
    
  2. 환경 변수 설정 (Telegram 및 Upbit API 키):

    PowerShell:

    $env:TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
    $env:TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
    $env:UPBIT_ACCESS_KEY = "YOUR_UPBIT_ACCESS_KEY"
    $env:UPBIT_SECRET_KEY = "YOUR_UPBIT_SECRET_KEY"
    

    또는 .env 파일 생성:

    TELEGRAM_BOT_TOKEN=YOUR_BOT_TOKEN
    TELEGRAM_CHAT_ID=YOUR_CHAT_ID
    UPBIT_ACCESS_KEY=YOUR_UPBIT_ACCESS_KEY
    UPBIT_SECRET_KEY=YOUR_UPBIT_SECRET_KEY
    
  3. 설정 파일 준비:

    copy config.example.json config.json
    

    config.json 파일을 필요에 따라 수정합니다.

  4. 프로그램 실행:

    python main.py
    

테스트 실행

  1. pytest 설치:

    python -m pip install pytest
    
  2. 테스트 실행:

    pytest
    

이 문서는 프로젝트의 최신 구조와 실행 방법을 반영하도록 업데이트되었습니다.

Description
No description provided
Readme 72 KiB
Languages
Python 96.7%
Batchfile 2.6%
Dockerfile 0.7%