전 봉 BB·일목 조합 분석 및 simulation 단일 실행으로 통합

9개 간격(1~1440분) BB·일목 위치 특징을 3분 타임라인에 맞춰 분석하고,
discover로 매수·매도 규칙을 찾은 뒤 HTML 차트에 해당 체결만 표시한다.
simulation_1h.py를 simulation.py로 변경했으며, 파라미터 없이 실행하면
analyze→discover→차트가 한 번에 수행된다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-05-29 01:20:36 +09:00
parent 7d53090034
commit e218a8ea32
15 changed files with 1510 additions and 803 deletions

View File

@@ -1,50 +1,64 @@
# DeepCoin — WLD 볼린저 MTF
# DeepCoin — WLD 전봉 BB·일목 조합 매매
빗썸 KRW-WLD 현물 전용. **모든 봉**에 동일한 BB 규칙을 적용하고, 봉별 상태를 비교해 실행·확인 봉을 정합니다.
빗썸 KRW-WLD 현물. **1, 3, 5, 10, 15, 30, 60, 240, 1440분** 모든 봉에서
볼린저 밴드·일목균형표 **캔들 위치**를 분석하고, 봉 조합으로 매수·매도 규칙을 탐색합니다.
## BB 기본 규칙 (모든 간격 동일)
## 구조
| 구분 | 조건 |
|------|------|
| 매수 | 이전 종가 ≤ 하단, 현재 종가 > 하단 (하단 **상향 돌파**) |
| 매도 | 이전 종가 < 상단, 현재 종가 ≥ 상단 (상단 **상향 돌파**) |
| 손절(선택) | 하단 재이탈 |
```text
downloader.py → coins.db (전 간격 증분)
indicators.py → BB·일목 계산
candle_features.py → 봉별 위치 특징 → 3분 타임라인 행렬
combination_analyzer.py → 조합 분석·combination_report.json
rule_discovery.py → discovered_rules.json
strategy.py → 실시간 evaluate_discovered_live
monitor_coin.py → 실거래 루프
simulation.py → 백테스트·HTML 차트
```
**MTF 적용** (`mtf_bb.py`, `ACTIVE_MTF_POLICY` / `mtf_bb_policy.json`)
## 봉별 분석 항목
- 실행 봉: 3·10·15·30·60분 중 백테스트 수익률 1위
- 확인 봉: 60분·일봉 등 상위 봉 상태가 매수/매도에 맞을 때만 체결
- 하락 추세: 매수 차단 (설정 시)
### 볼린저
- 이벤트: `cross_up_lower`, `cross_up_upper`, `inside_band`, `squeeze`
- 구간: `bb_zone_bottom` ~ `bb_zone_top` (%B)
봉별 상태: `inside`, `cross_up_lower`, `cross_up_upper`, `below_lower`, `above_upper`, `squeeze`
### 일목균형표
- `ichi_above_cloud`, `ichi_below_cloud`, `ichi_in_cloud`
- `ichi_tk_bull` / `ichi_tk_cross_up`, `ichi_cloud_bull`
## 파일
### 조합
- 3분 기준 `merge_asof`로 모든 봉 특징을 한 행에 정렬
- `discover`가 AND/OR 조합으로 매수·매도 규칙 탐색
| 파일 | 역할 |
|------|------|
| `strategy.py` | 신호·금액·매도 비율 |
| `monitor.py` | MTF 데이터, `process_wld_mtf`, 현물 주문 |
| `monitor_coin.py` | 실시간 루프 |
| `downloader.py` | `coins.db` (3분·1시간·일봉) |
| `mtf_bb.py` | 봉별 BB 비교·정책 추천 |
| `simulation_1h.py` | 백테스트 차트 |
## 실행
## 실행 순서
```bash
cp .env.example .env
python downloader.py
python simulation_1h.py discover # 모든 봉·캔들 특징 탐색 → discovered_rules.json
python simulation_1h.py # 탐색 규칙 HTML 차트 (기본)
python simulation_1h.py compare # 9종 조합 순위
python simulation_1h.py mtf # 봉별 BB 비교 (실거래 전 참고)
python monitor_coin.py # 실거래는 HTML 최적화 후 연동 예정
python downloader.py # 1분봉 2개월, 나머지 6개월
python simulation.py # analyze → discover → HTML (탐색 매수·매도 규칙 표시)
python monitor_coin.py # 실거래
```
`DOWNLOAD_MONTHS=6` — 간격: **3, 10, 15, 30, 60, 240, 1440**분.
**증분 저장**: DB `MAX(ymdhms)` 이후 봉만 INSERT (재실행 시 전체 삭제 없음).
HTML 차트에는 `discovered_rules.json` 에서 찾은 **매수·매도 규칙**의 체결만 표시합니다.
고급: `analyze`, `discover`, `compare`, `mtf`.
## 환경 변수
## 설정 (`config.py`)
`BITHUMB_ACCESS_KEY`, `BITHUMB_SECRET_KEY`, `COIN_TELEGRAM_*`,
`BUY_COOLDOWN_SEC`(기본 300), `SELL_COOLDOWN_SEC`(180), `DEFAULT_BUY_KRW` 등 — `.env.example` 참고.
| 항목 | 설명 |
|------|------|
| `ALL_INTERVALS` | 1,3,5,10,15,30,60,240,1440 |
| `ENTRY_INTERVAL` | 조합 행렬 기준 3분 |
| `DOWNLOAD_MONTHS_1M` | 1분봉 보관 개월 (기본 2) |
| `USE_DISCOVERED_LIVE` | 실거래에 discovered_rules 사용 |
## 출력 파일
| 파일 | 내용 |
|------|------|
| `combination_report.json` | 봉별 최신 위치·매수/매도 힌트 |
| `discovered_rules.json` | 탐색된 매매 규칙 |
| `reports/wld_bb_simulation.html` | 시뮬 차트 |
## 면책
실거래 손실 책임은 사용자에게 있습니다.