ai 전략 기능 추가
This commit is contained in:
@@ -0,0 +1,382 @@
|
||||
# 전략편집기 — 템플릿 탭 ↔ 매매 시그널 감지
|
||||
|
||||
전략편집기 우측 **템플릿** 탭에 나열된 각 전략을 적용했을 때 생성·저장되는 DSL이,
|
||||
실제 차트·백테스트·실시간 평가에서 **어떻게 매수/매도 시그널로 판정되는지**를 정리한 문서입니다.
|
||||
|
||||
> **평가 원천:** `StrategyDslToTa4jAdapter` → Ta4j `Rule` → 봉 `i`에서 `rule.isSatisfied(i)`
|
||||
> **관련:** [전략지표컨트롤.md](./전략지표컨트롤.md) · [매매전략조건.md](./매매전략조건.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. 템플릿 탭 구조
|
||||
|
||||
**파일:** `StrategyEditorPage.tsx`, `strategyTemplateList.ts`, `TemplatePaletteTab.tsx`
|
||||
|
||||
템플릿 목록은 **4종 출처**를 하나의 리스트로 합칩니다 (`buildStrategyTemplatePaletteRows`).
|
||||
|
||||
| 출처 (`source`) | 배지 | 개수(기본) | 생성·적용 |
|
||||
|-----------------|------|------------|-----------|
|
||||
| **builtin** | (없음) | 28 | `getStrategyTemplates()` |
|
||||
| **composite-palette** | 복합지표 | ~58 | 복합지표 팔레트와 동일 항목 |
|
||||
| **sideways-palette** | 횡보지표 | 52 | 횡보필터 팔레트와 동일 항목 |
|
||||
| **user** | 내 템플릿 | 사용자 저장 | `ui_preferences.strategyEditor.userTemplates` |
|
||||
|
||||
검색(`templateSearch`)은 **라벨·설명·매수/매도·배지** 문자열로 필터합니다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 템플릿 적용 방식 (중요)
|
||||
|
||||
템플릿을 **더블클릭/적용**할 때 동작이 출처마다 다릅니다.
|
||||
|
||||
| 출처 | 적용 함수 | 캔버스 동작 |
|
||||
|------|-----------|-------------|
|
||||
| **내장 (builtin)** | `handleTemplate` | 해당 **매수 또는 매도 탭 전체를 교체** (반대 탭·고아 노드 초기화) |
|
||||
| **내 템플릿 (user)** | `applyUserTemplate` | 저장된 **LogicNode 트리로 해당 탭 전체 교체** |
|
||||
| **복합지표 (composite-palette)** | `applyPaletteItem` | **현재 탭 루트에 AND 병합** (기존 조건 유지 + 추가) |
|
||||
| **횡보지표 (sideways-palette)** | `applySidewaysFilter` | **현재 탭 루트에 AND 병합** (필터 노드 추가) |
|
||||
|
||||
```text
|
||||
[내장/내 템플릿 적용]
|
||||
→ buyCondition 또는 sellCondition = 템플릿 루트 1개 (교체)
|
||||
|
||||
[복합·횡보 템플릿 적용]
|
||||
→ mergeAtRoot(기존 루트, 새 노드, AND) — 다른 조건과 결합 가능
|
||||
```
|
||||
|
||||
**전략평가 탭**에서는 `buildTemplateEvaluationPayload`가 내장/내 템플릿을 **새 평가 전략**으로 만들고, 복합·횡보는 동일 빌더로 DSL을 생성합니다.
|
||||
|
||||
---
|
||||
|
||||
## 3. 시그널 판정 공통 규칙
|
||||
|
||||
템플릿도 최종적으로 **LogicNode 트리**이므로, leaf `CONDITION`마다 아래 규칙이 적용됩니다.
|
||||
|
||||
| conditionType | 봉 `i`에서 true 조건 |
|
||||
|---------------|----------------------|
|
||||
| **CROSS_UP** | `left[i−1] ≤ right[i−1]` **且** `left[i] > right[i]` |
|
||||
| **CROSS_DOWN** | `left[i−1] ≥ right[i−1]` **且** `left[i] < right[i]` |
|
||||
| **GT / LT / GTE / LTE** | `left[i]` vs `right[i]` 수준 비교 |
|
||||
| **AND** | 모든 자식 true |
|
||||
| **OR** | 하나라도 true |
|
||||
| **NOT** | 자식 false |
|
||||
| **EXISTS_IN** (N봉) | 최근 N봉 중 core Rule **1회 이상** true |
|
||||
|
||||
**필터 강도:** 복합 전략(9·20 신고가, 33변곡, 안정형 등)은 기본 **`relaxed`(완화)** — ADX·거래량 등 보조 필터 **없음**이 기본값입니다. 편집기에서 **강함/보통**으로 변경 가능.
|
||||
|
||||
**positionMode:** 설정 → 전략 설정. `LONG_ONLY`면 BUY 후 exit(SELL) true 전까지 재진입 BUY 억제.
|
||||
|
||||
---
|
||||
|
||||
## 4. 내장 템플릿 (28종)
|
||||
|
||||
**출처:** `strategyPresets.ts` → `getStrategyTemplates(def)`
|
||||
|
||||
MA 기간은 설정의 `maLines[0]`, `maLines[1]` (기본 5·10일)을 사용합니다.
|
||||
|
||||
### 4.1 단순 템플릿 (`kind: 'simple'`) — 16종
|
||||
|
||||
CONDITION **1개**. `simpleTemplateToNode()`로 변환.
|
||||
|
||||
| 라벨 | signal | indicator | condition | left → right | 시그널 의미 |
|
||||
|------|--------|-----------|-----------|--------------|-------------|
|
||||
| MA 골든크로스 매수 | buy | MA | CROSS_UP | MA5 → MA10 | 단기 MA **장기 MA 상향 교차** 봉 |
|
||||
| MA 데드크로스 매도 | sell | MA | CROSS_DOWN | MA5 → MA10 | 단기 MA **장기 MA 하향 교차** 봉 |
|
||||
| RSI 과매도 매수 | buy | RSI | **LTE** | RSI_VALUE → OVERSOLD_30 | RSI **≤ 30** (과매도 구간 **체류**, 교차 아님) |
|
||||
| RSI 과매수 매도 | sell | RSI | **GTE** | RSI_VALUE → OVERBOUGHT_70 | RSI **≥ 70** |
|
||||
| MACD 상향 돌파 | buy | MACD | CROSS_UP | MACD_LINE → SIGNAL_LINE | MACD **시그널선 골든크로스** |
|
||||
| MACD 하향 돌파 | sell | MACD | CROSS_DOWN | MACD_LINE → SIGNAL_LINE | MACD **데드크로스** |
|
||||
| 볼린저 하단 돌파 매수 | buy | BOLLINGER | CROSS_UP | CLOSE → LOWER_BAND | 종가 **하단밴드 상향 돌파** (반등) |
|
||||
| 볼린저 상단 돌파 매도 | sell | BOLLINGER | CROSS_UP | CLOSE → UPPER_BAND | 종가 **상단밴드 상향 돌파** (과열 이탈) |
|
||||
| CCI 과매도 반등 | buy | CCI | CROSS_UP | CCI_VALUE → OVERSOLD_NEG100 | CCI **−100선 상향 돌파** |
|
||||
| 심리도 과매도 반등 매수 | buy | PSY | CROSS_UP | PSY_VALUE → OVERSOLD_25 | 심리도 **25선 상향 돌파** |
|
||||
| 스토캐스틱 골든크로스 | buy | STOCH | CROSS_UP | STOCH_K → STOCH_D | %K **%D 상향 교차** |
|
||||
| ADX 중앙선 상향 돌파 | buy | ADX | CROSS_UP | ADX_VALUE → ADX_25 | ADX **25선 상향 돌파** |
|
||||
| 9일 신고가 돌파 | buy | NEW_HIGH | CROSS_UP | CLOSE → NH_PRIOR_9 | 종가 **직전 9봉 최고가** 교차 |
|
||||
| 20일 신고가 돌파 | buy | NEW_HIGH | CROSS_UP | CLOSE → NH_PRIOR_20 | 종가 **직전 20봉 최고가** 교차 |
|
||||
| 9일 신저가 이탈 | sell | NEW_LOW | CROSS_DOWN | CLOSE → NL_PRIOR_9 | 종가 **직전 9봉 최저가** 하향 교차 |
|
||||
| 20일 신저가 이탈 | sell | NEW_LOW | CROSS_DOWN | CLOSE → NL_PRIOR_20 | 종가 **직전 20봉 최저가** 하향 교차 |
|
||||
|
||||
**NH_PRIOR_n / NL_PRIOR_n:** `max(high[t−n..t−1])` / `min(low[t−n..t−1])` — **현재 봉 high/low 미포함**.
|
||||
|
||||
### 4.2 복합 내장 템플릿 (`kind: 'composite'`) — 12종
|
||||
|
||||
`build()` 함수가 **AND/OR LogicNode**를 반환. 적용 시 **해당 탭 전체**가 이 트리로 교체됩니다.
|
||||
|
||||
#### 4.2.1 9·20일 신고/신저가
|
||||
|
||||
| 라벨 | signal | 트리 | 기본(relaxed) 시그널 |
|
||||
|------|--------|------|----------------------|
|
||||
| 9·20일 신고가 매수 | buy | `AND` | `CLOSE CROSS_UP NH_PRIOR_20` **만** |
|
||||
| 9·20일 신저가 매도 | sell | `AND` | `CLOSE CROSS_DOWN NL_PRIOR_20` **만** |
|
||||
|
||||
**필터 강도별 추가 leaf (편집기에서 변경 가능):**
|
||||
|
||||
| 강도 | 매수 추가 | 매도 추가 |
|
||||
|------|-----------|-----------|
|
||||
| **strict** | 9일 CROSS + ADX≥25 + 거래량>MA + 고가≥20일선 | ADX≥20 + 거래량>MA |
|
||||
| **balanced** | ADX≥18 | ADX≥15 |
|
||||
| **relaxed** | (없음) | (없음) |
|
||||
|
||||
#### 4.2.2 33변곡
|
||||
|
||||
| 라벨 | signal | 트리 | 기본(relaxed) 시그널 |
|
||||
|------|--------|------|----------------------|
|
||||
| 33변곡 매수 | buy | `AND` | EMA33 **1봉 SLOPE_UP** + CLOSE **CROSS_UP** CLOSE_MAX_33 |
|
||||
| 33변곡 매도 | sell | `OR` | CLOSE **CROSS_DOWN** CLOSE_MIN_33 **만** (EMA 분기 생략) |
|
||||
|
||||
**balanced/strict** 시 매수: EMA 2봉 변곡, 종가>EMA33, ADX·거래량 필터 추가.
|
||||
**매도 strict/balanced:** EMA 하락+종가<EMA33 **OR** 채널 이탈.
|
||||
|
||||
#### 4.2.3 돈천·터틀·일목 (Donchian / Ichimoku)
|
||||
|
||||
| 라벨 | signal | DSL 핵심 | 시그널 |
|
||||
|------|--------|----------|--------|
|
||||
| 돈천 채널(20일) 매수 | buy | DONCHIAN CROSS_UP CLOSE → DC_UPPER_20 | 20일 채널 **상단** 돌파 |
|
||||
| 돈천 채널(20일) 매도 | sell | DONCHIAN CROSS_DOWN CLOSE → DC_LOWER_20 | 20일 채널 **하단** 이탈 |
|
||||
| 터틀 S1 매수 | buy | DC_UPPER_**20** CROSS_UP | 20일 **최고가** 돌파 진입 |
|
||||
| 터틀 S1 청산 | sell | DC_LOWER_**10** CROSS_DOWN | 10일 **최저가** 이탈 청산 |
|
||||
| 터틀 S2 매수 | buy | DC_UPPER_**55** CROSS_UP | 55일 최고가 돌파 |
|
||||
| 터틀 S2 청산 | sell | DC_LOWER_**20** CROSS_DOWN | 20일 최저가 이탈 |
|
||||
| 일목 전환/기준선 매수 | buy | ICHIMOKU CROSS_UP CONVERSION → BASE | **전환·기준 골든크로스** |
|
||||
| 일목 전환/기준선 매도 | sell | ICHIMOKU CROSS_DOWN CONVERSION → BASE | **데드크로스** |
|
||||
|
||||
> **참고:** 터틀 S1 매수 = 돈천 20일 매수와 **동일 DSL**. S1 청산만 10일 하단으로 다름.
|
||||
|
||||
---
|
||||
|
||||
## 5. 복합지표 템플릿 (~58종, 배지「복합지표」)
|
||||
|
||||
**출처:** `buildCompositePaletteTemplateRows` — `DEFAULT_COMPOSITE_ITEMS` (`strategyPaletteStorage.ts`)
|
||||
|
||||
지표 탭 **복합** 서브탭과 **동일 항목**이 템플릿 탭에도 노출됩니다.
|
||||
적용 시 **현재 탭 조건에 AND 병합** (`applyPaletteItem`).
|
||||
|
||||
### 5.1 Stoch 과열×보조 (1종)
|
||||
|
||||
| 라벨 | signal | 트리 | 시그널 |
|
||||
|------|--------|------|--------|
|
||||
| Stoch 과열×보조 | buy | `OR` | `(Stoch≥80 ∧ 보조 CROSS_UP 중앙) ∨ (보조≥중앙 ∧ Stoch CROSS_UP 80)` |
|
||||
|
||||
기본 보조: **CCI**. 편집기에서 RSI·ADX 등 변경 가능.
|
||||
|
||||
### 5.2 9·20 신고/신저 · 33변곡 · 일목×BB (6종)
|
||||
|
||||
내장 §4.2와 **동일 빌더**. 템플릿 탭에서는 **추가(병합)** 방식만 다름.
|
||||
|
||||
| 항목 | 빌더 | 기본 시그널 요약 |
|
||||
|------|------|------------------|
|
||||
| 9·20일 신고가 매수 | `buildNewHigh920BuyTree` | 20일 신고가 CROSS + (필터) |
|
||||
| 9·20일 신저가 매도 | `buildNewLow920SellTree` | 20일 신저가 CROSS + (필터) |
|
||||
| 33변곡 매수/매도 | `buildInflection33Tree` | EMA33 변곡 + 33봉 종가 채널 |
|
||||
| 일목×BB 매수 | `buildIchimokuBbBuyTree` | **26봉 전** 후행 vs **26봉 전** BB **상한** CROSS_UP |
|
||||
| 일목×BB 매도 | `buildIchimokuBbSellTree` | **26봉 전** 후행 vs **26봉 전** BB **하한** CROSS_DOWN |
|
||||
|
||||
### 5.3 일목 상황별 (23종)
|
||||
|
||||
**빌더:** `ichimokuSituationStrategy.ts` — `BUILDERS[situationId][mode]`
|
||||
|
||||
| ID | 라벨(요) | signal | 논리 | leaf 조건 (동일 봉 AND/OR) |
|
||||
|----|----------|--------|------|---------------------------|
|
||||
| GOLDEN_CROSS | 골든크로스 매수 | buy | AND | 전환 **CROSS_UP** 기준 |
|
||||
| BASE_BREAKUP | 기준선 돌파 매수 | buy | AND | 종가 **CROSS_UP** 기준선 |
|
||||
| CLOUD_BREAKUP | 구름 돌파 매수 | buy | AND | **CLOUD_BREAK_UP** |
|
||||
| LAGGING_BULL | 후행 호전 매수 | buy | AND | 후행 **>** 26봉 전 종가 |
|
||||
| CLOUD_SUPPORT | 구름 지지 매수 | buy | AND | 종가>선행1 **且** 종가>기준선 |
|
||||
| HOJEON | 호전(정배열) 매수 | buy | AND | 전환>기준 + 구름 위 + 양운 + 후행>종가 |
|
||||
| DEAD_CROSS | 데드크로스 매도 | sell | OR | 전환 **CROSS_DOWN** 기준 |
|
||||
| BASE_BREAKDOWN | 기준선 이탈 매도 | sell | OR | 종가 **CROSS_DOWN** 기준선 |
|
||||
| CLOUD_BREAKDOWN | 구름 이탈 매도 | sell | OR | **CLOUD_BREAK_DOWN** |
|
||||
| LAGGING_BEAR | 후행 역전 매도 | sell | OR | 후행 **<** 26봉 전 종가 |
|
||||
| CLOUD_RESISTANCE | 구름 저항 매도 | sell | AND | 종가<선행1 **且** 종가<기준선 |
|
||||
| SANYAKU_REVERSE | 삼역역전 매도 | sell | AND | 전환<기준 + 구름 아래 + 후행 역전 |
|
||||
| GYEOKJEON | 역전(역배열) 매도 | sell | AND | 전환<기준 + 구름 아래 + 음운 + 후행 역전 |
|
||||
| EW1 | 1파 매수 | buy | AND | 종가>기준 CROSS + 전환>기준 |
|
||||
| EW2 | 2파 매수/손절 | buy/sell | AND/OR | 매수: 기준·선행2 지지+전환>기준 / 매도: 기준 이탈 OR 구름 이탈 |
|
||||
| EW3 | 3파 매수 | buy | AND | 전환>기준 + 구름 위 + 후행 + 양운 |
|
||||
| EW4 | 4파 재매수/익절 | buy/sell | AND/OR | 매수: 선행1·전환 지지 / 매도: 기준·구름 이탈 |
|
||||
| EW5 | 5파 분할매도 | sell | OR | 종가<전환 OR 데드 OR 구름 이탈 |
|
||||
| EW_A | A파 매도 | sell | OR | 기준·데드 이탈 |
|
||||
| EW_B | B파 매도 | sell | AND | 기준 아래 + 구름 아래 + 전환<기준 |
|
||||
| EW_C | C파 매도 | sell | AND | 구름 이탈 + 구름 아래 + 전환<기준 + 후행 역전 |
|
||||
|
||||
### 5.4 추천 안정형 (18종)
|
||||
|
||||
**빌더:** `stableStrategyPairs.ts` — 기본 필터 **`relaxed`**
|
||||
|
||||
| strategyId | 매수 핵심 | 매도 핵심 | relaxed 시그널 |
|
||||
|------------|-----------|-----------|----------------|
|
||||
| **TURTLE_S1** | DC_UPPER_20 CROSS_UP | DC_LOWER_10 CROSS_DOWN | §4.2.3과 동일 |
|
||||
| **TURTLE_S2** | DC_UPPER_55 CROSS_UP | DC_LOWER_20 CROSS_DOWN | 장기 터틀 |
|
||||
| **DONCHIAN_20** | DC_UPPER_20 CROSS_UP | DC_LOWER_20 CROSS_DOWN | 20일 채널 |
|
||||
| **MA_TREND** | MA20 CROSS_UP MA60 | MA20 CROSS_DOWN MA60 **OR** 종가<MA20 | 이평 추세 |
|
||||
| **ICHIMOKU_TREND** | 전환/기준 CROSS_UP | CROSS_DOWN **OR** 구름 아래(balanced+) | 일목 추세 |
|
||||
| **ICHIMOKU_SANYAKU** | 구름 돌파 + (종가>전환 등) | 전환/기준/구름 **하향 CROSS** OR | 삼역호전 |
|
||||
| **ICHIMOKU_PERFECT** | 전환>기준 + 구름 위 | 전환<기준 + 구름 아래 | 5원소(양운·후행은 strict) |
|
||||
| **MACD_MOMENTUM** | MACD CROSS_UP | MACD CROSS_DOWN **OR** 종가<EMA60 | 모멘텀 |
|
||||
| **BOLLINGER_RANGE** | RSI≤30 + ADX약 + 하단밴드 CROSS_UP | RSI≥70 **OR** 상단밴드 CROSS_UP | 박스권 |
|
||||
|
||||
**필터 강도 (strict/balanced) 추가 예:**
|
||||
|
||||
| 전략 | strict 추가 |
|
||||
|------|-------------|
|
||||
| TURTLE / DONCHIAN 매수 | ADX≥25 + 거래량>MA |
|
||||
| MA_TREND 매수 | ADX≥25 + 거래량>MA |
|
||||
| ICHIMOKU_SANYAKU 매수 | EXISTS_IN 윈도우(12~26봉) + MA60·거래량 |
|
||||
| MACD_MOMENTUM 매수 | EMA60 위 + ADX·거래량 |
|
||||
|
||||
### 5.5 동일 지표 2기간 교차 (10종)
|
||||
|
||||
**적용:** `makeNode(..., { composite: true })` — 현재 **매수/매도 탭**에 따라 `CROSS_UP` / `CROSS_DOWN`.
|
||||
|
||||
| 칩 | left → right (기본 기간) | 시그널 |
|
||||
|----|--------------------------|--------|
|
||||
| 돈치안 | DC_UPPER_9 CROSS DC_UPPER_20 | **단기 채널상단**이 **장기 상단** 돌파 |
|
||||
| RSI | RSI_VALUE_9 CROSS RSI_VALUE_18 | 단기 RSI **장기** RSI 교차 |
|
||||
| CCI | CCI_VALUE_9 CROSS CCI_VALUE_26 | 동일 패턴 |
|
||||
| ADX | ADX_VALUE_14 CROSS ADX_VALUE_28 | 동일 |
|
||||
| Williams %R | WILLIAMS_R 14 vs 28 | 동일 |
|
||||
| TRIX | TRIX 12 vs 24 | 동일 |
|
||||
| VR | VR 26 vs 52 | 동일 |
|
||||
| 심리도 / 투자심리도 | 설정 기간 ×2 | 동일 |
|
||||
| 이격도 | dispShort vs dispMid | 동일 |
|
||||
|
||||
기간은 **보조지표 설정**(`DefType`)에서 상속.
|
||||
|
||||
---
|
||||
|
||||
## 6. 횡보지표 템플릿 (52종, 배지「횡보지표」)
|
||||
|
||||
**출처:** `buildSidewaysPaletteTemplateRows` — `DEFAULT_SIDEWAYS_FILTER_ITEMS`
|
||||
|
||||
적용: `buildSidewaysFilterLogic(templateId, mode, def)` → **현재 탭에 AND 병합**.
|
||||
|
||||
| mode | LogicNode | 시그널 해석 |
|
||||
|------|-----------|-------------|
|
||||
| **include** | 필터 leaf 그대로 | **횡보일 때** true — 횡보 구간 **포함** 필터 |
|
||||
| **exclude** | `NOT(필터 leaf)` | **추세일 때** true — 횡보 **제외** |
|
||||
|
||||
**템플릿 탭 signal 표시:** include → **buy**, exclude → **sell** (UI 라벨용; 실제로는 **필터 노드**이며 단독 매매 시그널이 아님).
|
||||
|
||||
### 6.1 카테고리별 시그널 조건
|
||||
|
||||
| 카테고리 | 대표 템플릿 | true = 횡보(include) |
|
||||
|----------|-------------|----------------------|
|
||||
| **ADX** | ADX < 25 | ADX **< 25** (비추세) |
|
||||
| | ADX ≥ 25 (exclude) | 추세 — NOT으로 **횡보 제외** |
|
||||
| **볼린저** | BB 수축 | 상·하단 간격 **DIFF_LT** (Squeeze) |
|
||||
| | 종가 ≈ 중심 | 종가 **≈** MIDDLE_BAND |
|
||||
| **MA** | MA5≈MA20 | MA 스프레드 **DIFF_LT** |
|
||||
| **일목** | 구름 안 | **IN_CLOUD** |
|
||||
| **Donchian** | 9/20일 채널 좁음 | DC_UPPER − DC_LOWER **DIFF_LT** |
|
||||
| **오실레이터** | RSI 40~60 | RSI **GTE 40 ∧ LTE 60** |
|
||||
| **cycle** | Stoch 20봉 침체 | **LOWEST_LTE** %K ≤ 20 (lookback 20) |
|
||||
| **DMI** | +DI ≈ −DI | PDI−MDI **DIFF_LT** |
|
||||
| **volume** | 거래량 < MA | VOLUME **LT** VOLUME_MA |
|
||||
| **combo** | ADX+구름+RSI | 위 조건 **AND** (3중 횡보) |
|
||||
|
||||
**실전 조합 예:**
|
||||
|
||||
```text
|
||||
매수 = AND( MA 골든크로스, NOT「ADX<25」 ) ← exclude ADX≥25 = 추세에서만 매수
|
||||
매수 = AND( RSI 과매도, 「RSI 40~60」 ) ← include = 횡보 확인 (드묾)
|
||||
```
|
||||
|
||||
전체 52항목 ID·설명은 `sidewaysFilterPalette.ts` `DEFAULT_SIDEWAYS_FILTER_ITEMS` 참고.
|
||||
|
||||
---
|
||||
|
||||
## 7. 내 템플릿 (사용자 저장)
|
||||
|
||||
**저장:** 현재 **매수 또는 매도** 탭의 `EditorConditionState` + `orphans` 스냅샷.
|
||||
|
||||
| 필드 | 의미 |
|
||||
|------|------|
|
||||
| `signal` | buy / sell — 적용 시 **해당 탭만** 채움 |
|
||||
| `editorState.root` | LogicNode 트리 |
|
||||
| `orphans` | 캔버스 고아 노드 |
|
||||
|
||||
**시그널:** 저장 시점 DSL 그대로 `StrategyDslToTa4jAdapter` 평가.
|
||||
내용은 사용자가 만든 **AND/OR/CONDITION** 조합이므로, leaf별로 §3 공통 규칙 적용.
|
||||
|
||||
**적용:** 반대 탭·고아 초기화 후 **전체 교체** (`applyUserTemplate`).
|
||||
|
||||
---
|
||||
|
||||
## 8. 내장 vs 복합지표 중복
|
||||
|
||||
다음 항목은 **내장 템플릿**과 **복합지표 템플릿**에 **둘 다** 나타날 수 있습니다.
|
||||
|
||||
| 항목 | 차이 |
|
||||
|------|------|
|
||||
| 9·20 신고/신저, 33변곡, 터틀, 돈천, 일목 전환/기준 | **DSL 동일** |
|
||||
| 적용 방식 | 내장 = **탭 교체** / 복합 = **AND 추가** |
|
||||
|
||||
숨김: 템플릿 삭제 → `hiddenBuiltinTemplateIds`에 key 저장 (복원 가능).
|
||||
|
||||
---
|
||||
|
||||
## 9. 차트까지의 평가 경로
|
||||
|
||||
```text
|
||||
[템플릿 적용]
|
||||
↓
|
||||
buyConditionJson / sellConditionJson (전략 저장)
|
||||
↓
|
||||
StrategyDslToTa4jAdapter.toRule(buy) / toRule(sell)
|
||||
↓
|
||||
BacktestingService · StrategyEvaluationChart · LiveConditionStatusService
|
||||
↓
|
||||
isSatisfied(i) === true → 봉 i에 BUY/SELL 마커
|
||||
```
|
||||
|
||||
| 기능 | 템플릿 사용처 |
|
||||
|------|---------------|
|
||||
| **전략편집기** | 템플릿 탭 적용 → 편집 후 전략 저장 |
|
||||
| **전략평가** | 템플릿 선택 → `[템플릿] {라벨}` 임시 전략 생성 |
|
||||
| **실시간** | 저장된 전략 DSL → 분봉 마감 시 TriggerBranch 평가 |
|
||||
|
||||
---
|
||||
|
||||
## 10. 템플릿별 시그널 빠른 참조
|
||||
|
||||
| 템플릿 유형 | 대표 예 | 한 줄 시그널 |
|
||||
|-------------|---------|--------------|
|
||||
| 단순 내장 | MA 골든크로스 | 이평 **교차** 1봉 |
|
||||
| 단순 내장 | RSI 과매도 | RSI **≤30** 수준 |
|
||||
| 단순 내장 | 20일 신고가 | **직전 20봉 고가** CROSS_UP |
|
||||
| 복합 내장 | 9·20 신고가 | 20일 CROSS + (선택 필터) AND |
|
||||
| 복합 내장 | 터틀 S1 | 20일 돌파 매수 / 10일 이탈 매도 |
|
||||
| 복합지표 | Stoch×CCI | 과열+보조 **OR** 조합 |
|
||||
| 복합지표 | 일목 EW3 | 4~5 일목 leaf **AND** |
|
||||
| 복합지표 | MA 추세 | MA20/60 + (ADX) |
|
||||
| 복합지표 | RSI 2기간 | RSI 단기 **장기** CROSS |
|
||||
| 횡보 | ADX<25 include | **횡보 필터** (타 조건과 AND) |
|
||||
| 횡보 | ADX≥25 exclude | **추세만** 통과 NOT |
|
||||
| 내 템플릿 | (사용자) | 저장 DSL 그대로 |
|
||||
|
||||
---
|
||||
|
||||
## 11. 코드 인덱스
|
||||
|
||||
| 영역 | 경로 |
|
||||
|------|------|
|
||||
| 템플릿 목록 병합 | `frontend/src/utils/strategyTemplateList.ts` |
|
||||
| 내장 28종 정의 | `frontend/src/utils/strategyPresets.ts` |
|
||||
| 복합·횡보 행 변환 | `frontend/src/utils/strategyEditorTemplatePaletteRows.ts` |
|
||||
| 템플릿 UI | `frontend/src/components/strategyEditor/TemplatePaletteTab.tsx` |
|
||||
| 적용 (편집기) | `frontend/src/components/StrategyEditorPage.tsx` — `handleTemplateApply` |
|
||||
| 적용 (전략평가) | `frontend/src/utils/strategyEvaluationTemplateApply.ts` |
|
||||
| 9·20 / 33변곡 | `priceExtremeBreakoutPair.ts`, `inflection33Strategy.ts` |
|
||||
| Stoch×보조 | `stochOverboughtPair.ts` |
|
||||
| 일목×BB | `ichimokuBbStrategy.ts` |
|
||||
| 일목 23상황 | `ichimokuSituationStrategy.ts` |
|
||||
| 안정형 18 | `stableStrategyPairs.ts` |
|
||||
| 2기간 교차 | `compositeIndicators.ts` |
|
||||
| 횡보 52 | `sidewaysFilterPalette.ts` |
|
||||
| 사용자 템플릿 | `strategyTemplateStorage.ts` |
|
||||
| Rule 변환 | `backend/.../StrategyDslToTa4jAdapter.java` |
|
||||
|
||||
---
|
||||
|
||||
*문서 버전: 2026-06 — goldenChart 전략편집기 템플릿 탭·strategyPresets 기준*
|
||||
Reference in New Issue
Block a user