diff --git a/backend/src/main/java/com/goldenchart/service/LiveConditionStatusService.java b/backend/src/main/java/com/goldenchart/service/LiveConditionStatusService.java index dc47dbf..698f984 100644 --- a/backend/src/main/java/com/goldenchart/service/LiveConditionStatusService.java +++ b/backend/src/main/java/com/goldenchart/service/LiveConditionStatusService.java @@ -203,7 +203,8 @@ public class LiveConditionStatusService { private void walk(JsonNode node, String timeframe, String side, List out, Set seen) { if (node == null || node.isNull()) return; - String type = node.path("type").asText(""); + // StrategyDslToTa4jAdapter 와 동일하게 type 미설정 시 "CONDITION" 기본값 적용 + String type = node.path("type").asText("CONDITION"); if ("TIMEFRAME".equals(type)) { String tf = LiveStrategyTimeframeService.normalize( diff --git a/frontend/src/utils/virtualStrategyConditions.ts b/frontend/src/utils/virtualStrategyConditions.ts index ad849da..922d00d 100644 --- a/frontend/src/utils/virtualStrategyConditions.ts +++ b/frontend/src/utils/virtualStrategyConditions.ts @@ -47,7 +47,8 @@ function walk( return; } - if (node.type === 'CONDITION' && node.condition) { + // StrategyDslToTa4jAdapter 와 동일: type 미설정(구버전 DSL) 시 CONDITION 으로 처리 + if ((!node.type || node.type === 'CONDITION') && node.condition) { const c = node.condition; const key = `${side}:${timeframe}:${c.indicatorType}:${c.conditionType}:${c.targetValue ?? ''}:${c.leftField ?? ''}`; if (seen.has(key)) return;