diff --git a/frontend/src/utils/ChartManager.ts b/frontend/src/utils/ChartManager.ts index 820f570..63d3845 100644 --- a/frontend/src/utils/ChartManager.ts +++ b/frontend/src/utils/ChartManager.ts @@ -928,6 +928,24 @@ export class ChartManager { ); } + // ── OBV 진단 로그 (개발용) ──────────────────────────────────────────── + if (config.type === 'OBV') { + const plotKeys = Object.keys(result.plots); + const seriesIds = seriesMeta.map(m => m.plotId); + const volSum = this.rawBars.reduce((s, b) => s + (Number(b.volume) || 0), 0); + // eslint-disable-next-line no-console + console.error( + '[OBV Debug] series:', seriesList.length, + '| plotIds:', seriesIds, + '| resultKeys:', plotKeys, + '| plotVisibility:', JSON.stringify(config.plotVisibility), + '| plot0Color:', config.plots?.find(p => p.id === 'plot0')?.color, + '| bars:', this.rawBars.length, + '| volSum>0:', volSum > 0, + '| pane:', pane, + ); + } + // hlines(과열선/중앙선/침체선)는 첫 번째 시리즈에만 한 번 생성 (중복 방지) const hlineRefs: IPriceLine[] = []; let fillPrimitive: IndicatorFillPrimitive | undefined; @@ -2903,6 +2921,11 @@ export class ChartManager { } else { opts['color'] = plot.color ?? '#aaa'; } + // ── OBV plot0 스타일 진단 로그 ────────────────────────────────────────── + if (entry.type === 'OBV' && pid === 'plot0') { + // eslint-disable-next-line no-console + console.error('[OBV Style] plot0 opts:', JSON.stringify({ visible: opts['visible'], color: opts['color'], lineWidth: opts['lineWidth'] })); + } // eslint-disable-next-line @typescript-eslint/no-explicit-any series.applyOptions(opts as any); });