프로젝트 소개

# EMA 경고 봇 (Deriv + Telegram) — V2 이 봇은 각각 고유한 심볼, 간격 및 EMA 조합으로 구성된 독립적인 경고를 모니터링합니다. 가격이 설정된 EMA에 도달하면 Telegram 메시지가 전송됩니다. 모든 설정은 Telegram 내 버튼으로 이루어지며, 봇은 GitHub Actions에서 무료로 실행됩니다. ## 주요 기능 - **경고 생성**: `/new` 명령어로 버튼을 통해 심볼, 간격(1분~1일) 및 EMA(9, 20, 50, 100, 200)를 선택할 수 있습니다. - **경고 관리**: `/alerts`로 경고 목록 확인, `/pause ID` 및 `/resume ID`로 일시 중지/재개, `/delete ID`로 확인 후 삭제가 가능합니다. - **최적화**: 캔들은 (심볼, 간격) 그룹별로 한 번만 다운로드되어 여러 EMA에 재사용되므로 Deriv에 대한 요청이 줄어듭니다. - **중복 방지**: `state.json`에 기록을 저장하여 동일한 캔들에 대한 반복 경고를 방지합니다. - **사용자 정의**: 제안된 심볼 목록은 `AVAILABLE_SYMBOLS`에서 수정할 수 있습니다(Forex, Crypto, 합성 지수). ## 설치 방법 1. @BotFather를 통해 Telegram 봇을 생성하고 토큰과 채팅 ID를 가져옵니다. 2. 비공개 GitHub 저장소를 만들고 파일(`ema_alert.py`, `config.json`, `state.json`, `requirements.txt`, `.github/workflows/check.yml`)을 업로드합니다. 3. 저장소 설정에 `TELEGRAM_BOT_TOKEN` 및 `TELEGRAM_CHAT_ID` 시크릿을 추가합니다. 4. 워크플로우에 "읽기 및 쓰기" 권한을 활성화합니다. 5. 워크플로우를 처음 한 번 수동으로 실행하면 이후 5분마다 자동으로 실행됩니다. ## V2 개선 사항 - 자동 재시도 기능으로 Git 경쟁 조건 수정. - 타임아웃을 통한 강력한 WebSocket 관리. - 시크릿 및 상태 검증. - 타임스탬프가 포함된 구조화된 로깅. - 삭제 후 ID 정리. - 구성 가능한 하트비트. ## 한계점 - GitHub Actions는 부하 시 몇 분의 지연이 발생할 수 있습니다(30분/1시간/4시간 간격에 적합하며, 1분 스캘핑에는 부적합). - 무료 플랜은 월 2000분을 제공하며 충분합니다. - 단일 사용자(설정된 채팅 ID)만 봇을 제어할 수 있습니다. ## 향후 발전 방향 심볼 검색, 카테고리, 경고 수정, 기타 경고 유형(EMA 교차), 상세 알림.