init
This commit is contained in:
42
README.md
42
README.md
@@ -3,6 +3,11 @@
|
||||
## 개요
|
||||
`AssetMonitor`는 주식‧ETF 및 암호화폐 시장을 실시간으로 감시하여 Bollinger Band, RSI, MACD, 이동평균(Golden-Cross), 거래량 등을 종합 분석한 **매수 후보(signals)**를 텔레그램으로 통보하는 자동화 봇입니다.
|
||||
|
||||
**주요 개선사항:**
|
||||
- **데이터 표준화**: 모든 코인에 동일한 기술적 분석 기준 적용
|
||||
- **순수 기술적 분석**: 날짜 기반 조건 제거, 기술적 지표만 사용
|
||||
- **강화된 기술적 지표**: 스토캐스틱, MFI, OBV, ATR 등 추가 지표 활용
|
||||
|
||||
---
|
||||
|
||||
## 주요 구성 파일
|
||||
@@ -20,20 +25,24 @@
|
||||
2. **데이터 획득**
|
||||
*주식 / ETF*: `FinanceDataReader`
|
||||
*암호화폐*: 빗썸 **240분 봉** Open API
|
||||
3. **기술적 지표 계산** (`calculate_technical_indicators`)
|
||||
3. **데이터 표준화** (`normalize_data`)
|
||||
- 모든 코인에 동일한 정규화 적용
|
||||
- 20일 롤링 윈도우 기반 Min-Max 정규화
|
||||
4. **기술적 지표 계산** (`calculate_technical_indicators`)
|
||||
- Bollinger Band (기간 20, ±2σ)
|
||||
- RSI(14)
|
||||
- MACD(12-26-9)
|
||||
- 단/중/장기 이동평균선(MA5/20/60)
|
||||
- 거래량 MA5
|
||||
4. **매수 후보 판정** (`check_buy_signals`)
|
||||
- *아래 새로운 “매수 후보 전략” 섹션 참조*
|
||||
5. **알림 발송** (`send_*_telegram_message`)
|
||||
- **추가 지표**: 스토캐스틱, OBV, ATR, MFI
|
||||
5. **매수 후보 판정** (`check_buy_signals`)
|
||||
- *아래 새로운 "매수 후보 전략" 섹션 참조*
|
||||
6. **알림 발송** (`send_*_telegram_message`)
|
||||
multiprocessing Pool을 이용해 다중 메시지를 병렬로 전송합니다.
|
||||
|
||||
---
|
||||
|
||||
## 매수 후보 전략
|
||||
## 매수 후보 전략 (표준화된 기술적 분석)
|
||||
|
||||
| 신호 | 변수명 | 조건 | 의미 |
|
||||
|------|--------|------|------|
|
||||
@@ -43,21 +52,26 @@
|
||||
| 이동평균 골든크로스 | `ma_signal` | `이전 MA5 < 이전 MA20` **AND** `현재 MA5 ≥ 현재 MA20` | 단기 추세 ↗ 전환 |
|
||||
| 거래량 급증 | `volume_signal` | `현재 거래량 > MA5 Volume × 1.5` | 수급 증가 |
|
||||
| **U자 반등 돌파** | `breakout_signal` | ① 최근 `BREAKOUT_LOOKBACK`(30)개 캔들 동안 최고·최저가 차이가 `BUY_THRESHOLD`(15 %) 이상 하락 → ② **현재가가 그 최고가 돌파** | 하락 후 반등의 추세 전환 확인 |
|
||||
| **장기 저항 돌파** | `long_breakout_signal` | 장기간 저항선 돌파 감지 | 장기 추세 전환 |
|
||||
| **스토캐스틱 과매도** | `stoch_signal` | `%K < 20 AND %K > 이전 %K` | 스토캐스틱 과매도 반등 |
|
||||
| **MFI 과매도** | `mfi_signal` | `MFI < 20 AND MFI > 이전 MFI` | 자금 흐름 과매도 반등 |
|
||||
| **OBV 상승** | `obv_signal` | `현재 OBV > 이전 OBV × 1.1` | 거래량 가중 상승 |
|
||||
| **ATR 급증** | `atr_signal` | `현재 ATR > ATR 20일 평균 × 1.5` | 변동성 급증 |
|
||||
|
||||
### 최종 매수 후보 결정 로직
|
||||
```text
|
||||
if breakout_signal:
|
||||
buy = True # U자 반등 돌파 단독으로도 매수 후보
|
||||
if breakout_signal or long_breakout_signal:
|
||||
buy = True # 돌파 신호 단독으로도 매수 후보
|
||||
else:
|
||||
# ① 볼린저 + RSI 동시, 또는 ② (신호 ≥ 2개) & (볼린저 또는 RSI 포함)
|
||||
buy = (bb_signal and rsi_signal) or (signal_count >= 2 and (bb_signal or rsi_signal))
|
||||
# ① 볼린저 + RSI 동시, 또는 ② (신호 ≥ 3개) & (볼린저 또는 RSI 포함)
|
||||
buy = (bb_signal and rsi_signal) or (signal_count >= 3 and (bb_signal or rsi_signal))
|
||||
```
|
||||
*`signal_count` = 위 6개 신호 중 True 개수*
|
||||
*`signal_count` = 위 11개 신호 중 True 개수*
|
||||
|
||||
### 메시지 구성
|
||||
- `🛒` : 최종 `buy=True`일 때 메시지 맨 앞에 부착
|
||||
- `📊신호(n):` 뒤에 활성화된 신호 목록
|
||||
- 볼린저/RSI/MACD/MA/거래량/Breakout 각각 표시
|
||||
- `매수` : 최종 `buy=True`일 때 메시지 맨 앞에 부착
|
||||
- `신호(n):` 뒤에 활성화된 신호 목록
|
||||
- 볼린저/RSI/MACD/MA/거래량/Breakout/스토캐스틱/MFI/OBV/ATR 각각 표시
|
||||
|
||||
해당 전략으로 **과매도 바닥근처 매수 기회 + 상승 추세 전환 브레이크아웃** 두 영역을 모두 포착할 수 있습니다.
|
||||
|
||||
@@ -66,7 +80,7 @@ else:
|
||||
## 스케줄 테이블 (기본값)
|
||||
| 대상 | 실행 시각(서버 기준) | 호출 함수 |
|
||||
|------|----------------------|-----------|
|
||||
| KRW 코인 | 매시간 04, 34분 | `monitor_coins()` |
|
||||
| KRW 코인 | 매시간 04, 14, 24, 34, 44, 54분 | `monitor_coins()` |
|
||||
| 미국 주식 / ETF | 05:10, 16:30, 23:30 | `monitor_us_stocks()` |
|
||||
| 한국 ETF / 주식 | 07:10, 18:20 | `monitor_kr_stocks()` |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user