2026-06-15 15:33:39 +09:00
|
|
|
# 전략 제안서 — 2026-06-15
|
|
|
|
|
|
|
|
|
|
## 요약
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
`TIME/FORCE` 청산 후에는 같은 당일 돌파 신호를 그대로 재사용하지 않고,
|
|
|
|
|
목표가 아래로 한 번 식었다가 다시 돌파할 때만 재진입하도록 필터 추가.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
**적용 완료:** 2026-06-15
|
2026-06-15 15:33:39 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 관찰된 문제
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
오늘(2026-06-15) 삼성전자(005930)가 두 차례 진입됐다. 1차는 09:20 돌파 진입이었고,
|
|
|
|
|
10:51 `TIME` 청산 후 60분 쿨다운이 끝난 11:51에 다시 진입됐다.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
|
|
|
|
| 진입 | 진입가 | 목표가(TP) | 차이 | 결과 |
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
| 1차 09:20 | 340,000 | 334,000 | -6,000 | TIME -21,681원 |
|
|
|
|
|
| 2차 11:51 | 338,500 | 334,000 | -4,500 | TIME -1,422원 |
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
주의: 코드상 `목표가`는 익절가가 아니라 변동성 돌파 진입 기준가다.
|
|
|
|
|
따라서 `현재가 >= 목표가`를 무조건 막으면 전략 전체 진입이 중단된다.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
실제 구조적 문제는 `TIME/FORCE` 청산 후에도 현재가가 목표가 위에 머물면,
|
|
|
|
|
새로운 돌파가 없는데도 쿨다운 종료만으로 같은 신호를 재사용해 재진입할 수 있다는 점이다.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 제안 내용
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
### TIME/FORCE 후 재돌파 조건 추가
|
2026-06-15 15:33:39 +09:00
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
`mark_final_exit()`에서 `TIME` 또는 `FORCE` 청산 종목을 재돌파 대기 목록에 넣고,
|
|
|
|
|
`check_entry()`에서 해당 종목이 목표가 아래로 내려오기 전까지 진입을 차단한다.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
|
|
|
|
```python
|
2026-06-15 18:52:42 +09:00
|
|
|
if ticker in self._rebreak_required_tickers:
|
|
|
|
|
if current_price >= target:
|
|
|
|
|
result["reason"] = f"재돌파 대기 ({current_price:,} >= {target:,.0f})"
|
|
|
|
|
return result
|
|
|
|
|
self._rebreak_required_tickers.discard(ticker)
|
2026-06-15 15:33:39 +09:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
적용 위치: `app/strategy/volatility_breakout.py` — `check_entry()` 함수 내
|
|
|
|
|
진입 조건 검사 직전.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 기대 효과
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
- 오늘 기준: 삼성전자 2차 TIME 재진입(-1,422원) 방어 가능.
|
|
|
|
|
- 같은 날 같은 돌파 신호를 쿨다운 후 반복 사용하는 구조 차단.
|
2026-06-15 15:33:39 +09:00
|
|
|
- SL/TIME 낭비 거래 제거 → R:R 개선.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 위험 및 주의사항
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
- 최초 돌파 진입은 기존과 동일하게 허용된다.
|
|
|
|
|
- TIME/FORCE 뒤에도 가격이 목표가 아래로 내려갔다가 다시 돌파하면 재진입 가능하다.
|
|
|
|
|
- 샘플: 오늘 1건의 명확한 재진입 사례 관찰. 통계적 근거로는 부족하나, 이는 파라미터 조정이 아니라
|
2026-06-15 15:33:39 +09:00
|
|
|
**논리적 버그 수정**에 해당하므로 소량 샘플로도 충분히 정당화됨.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 증거
|
|
|
|
|
|
|
|
|
|
| 날짜 | 티커 | 진입가 | 목표가 | 차이 | 손익 |
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
| 2026-06-15 | 삼성전자(005930) 1차 | 340,000 | 334,000 | -6,000 | -21,681원 |
|
|
|
|
|
| 2026-06-15 | 삼성전자(005930) 2차 | 338,500 | 334,000 | -4,500 | -1,422원 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 승인 조건
|
|
|
|
|
|
2026-06-15 18:52:42 +09:00
|
|
|
- [x] `volatility_breakout.py` 내 돌파 목표가 변수(`target`) 접근 확인.
|
|
|
|
|
- [x] `TIME/FORCE` 청산 후 같은 신호 재사용 경로 확인.
|
|
|
|
|
- [x] 수동 코드 검토 후 적용.
|
2026-06-15 15:33:39 +09:00
|
|
|
|
|
|
|
|
**FORCE_EXIT = "14:50"** 변경 없음. SL 우선순위 변경 없음.
|