매수, 매도 색상 수정
This commit is contained in:
+25
-2
@@ -18,6 +18,26 @@ goldenChart **전략편집기(Strategy Editor)** 의 화면 구성, 편집·저
|
||||
|
||||
전략편집기에서 저장하는 것은 **조건 트리 JSON**(`buyCondition`, `sellCondition`)이며, 노드 좌표·팔레트 사용자 정의 항목 등은 **브라우저 localStorage**에만 둘 수 있습니다.
|
||||
|
||||
### 1.1 아키텍처 원칙 (단일 평가 원천)
|
||||
|
||||
| 계층 | 역할 |
|
||||
|------|------|
|
||||
| **전략편집기** | `buy_condition_json` / `sell_condition_json` 만 DB에 저장. 그래프·목록 빌더는 **동일 DSL** 공유, 표현만 다름 |
|
||||
| **Logic Expression** | 저장된 DSL의 **설명용 미리보기** — 별도 조건 컬럼 없음 |
|
||||
| **`flow_layout_json`** | 캔버스 좌표·START 메타 등 **UI** — Ta4j 평가 입력이 아님 (DSL과 동기 저장) |
|
||||
| **백엔드** | Ta4j로 **유일한** BUY/SELL·조건 충족 평가 |
|
||||
| **프론트 가상투자 UI** | `GET /strategy/live-conditions` 표시·일치율만. **프론트에서 조건 재평가하지 않음** |
|
||||
| **가상 자동매매** | 백엔드 STOMP `signal` (BUY/SELL) 수신 시에만 모의 체결 |
|
||||
|
||||
### 1.2 봉 마감별 전략 체크 (스킵 방지)
|
||||
|
||||
1. 업비트 틱 → `BarBuilder.commitBar` — 1m 확정 시 전략 DSL에 포함된 상위봉(3m·5m·10m·15m …)까지 전파
|
||||
2. 각 **상위봉 마감** 시 `BarCloseStrategyEvaluationService.onMaturedBarClose` — `StrategyConditionTimeframeService.usesTimeframe` 이 true 인 분봉만 평가
|
||||
3. WS 갭 → `CandleGapBackfillService` REST 병합 후 `evaluateRecentMaturedBarsAfterBackfill` 로 병합 구간 마감봉 보정
|
||||
4. `REALTIME_TICK` 실행 방식은 추가로 `LiveStrategyScheduler`(3초)가 **동일 DSL 분봉**만 순회
|
||||
|
||||
예: 비트코인 전략 START에 `3m,5m,10m,15m` 이면 각 분봉 **마감봉마다** 백엔드 평가가 1회씩 실행되어야 하며, 평가 분봉은 DSL에 없는 `1h` 등에서는 실행되지 않음.
|
||||
|
||||
---
|
||||
|
||||
## 2. 화면 구성 (`StrategyEditorPage`)
|
||||
@@ -581,7 +601,8 @@ flowchart TB
|
||||
| `backend/.../service/BacktestingService.java` | 백테스트 |
|
||||
| `backend/.../service/LiveConditionStatusService.java` | 조건 현황 API |
|
||||
| `backend/.../service/StrategyConditionTimeframeService.java` | DSL 분봉 수집 |
|
||||
| `backend/.../websocket/BarBuilder.java` | 봉 조립·마감 평가 |
|
||||
| `backend/.../websocket/BarBuilder.java` | 봉 조립·마감 시 평가 트리거 |
|
||||
| `backend/.../service/BarCloseStrategyEvaluationService.java` | 봉 마감 전략 평가 단일 진입점 |
|
||||
| `backend/.../websocket/LiveStrategyScheduler.java` | 3초 REALTIME_TICK |
|
||||
| `backend/.../websocket/TradingWebSocketBroker.java` | STOMP 발행 |
|
||||
| `backend/.../storage/Ta4jStorage.java` | BarSeries 저장소 |
|
||||
@@ -597,7 +618,9 @@ flowchart TB
|
||||
5. **데이터** — `Ta4jStorage.exists(market, candleType)`, warm-up(`pinCandleWatch`)
|
||||
6. **포지션 모드** — `LONG_ONLY`에서 이미 포지션일 때 BUY 무시
|
||||
7. **STOMP** — 구독 토픽 `/sub/charts/{market}/{candleType}` 와 평가 분봉 일치
|
||||
8. **UI 현황 vs 시그널** — `live-conditions` matchRate ≠ 실제 BUY/SELL 발화 조건
|
||||
8. **UI 현황 vs 시그널** — `live-conditions` matchRate ≠ 실제 BUY/SELL 발화 조건 (UI는 리프별 Rule, 시그널은 트리 전체)
|
||||
9. **마감봉 평가** — `BarCloseStrategyEvaluationService` + DSL `usesTimeframe` 게이트; 갭은 `CandleGapBackfillService` 후 보정
|
||||
10. **프론트 평가 금지** — 가상투자 일치율·자동매매는 백엔드 API/STOMP 만 사용
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user