This commit is contained in:
Macbook
2026-06-09 22:46:15 +09:00
parent 47e287c0f6
commit 222c6ecca8
2 changed files with 12 additions and 52 deletions
@@ -103,26 +103,6 @@ const TradeSignalMiniChart: React.FC<Props> = ({
applyNotificationSignalMarkers(mgr, signalMarkerRef.current, false);
}, []);
/** OBV plot0(본선) 누락 시 refreshIndicators 로 강제 재생성 */
const ensureObvDualLine = useCallback(async (attempt = 0) => {
const mgr = managerRef.current;
if (!mgr?.hasMainSeries() || !needsDeepObv) return;
const obvCfg = chartIndicators.find(i => i.type === 'OBV');
if (!obvCfg) return;
await mgr.repairDualLineSeries();
const plotIds = mgr.getIndicatorSeriesPlotIds(obvCfg.id);
const needsBoth = plotIds.length < 2 || !plotIds.includes('plot0');
if (needsBoth && attempt < 4) {
await mgr.refreshIndicators([obvCfg]);
await mgr.repairDualLineSeries();
const after = mgr.getIndicatorSeriesPlotIds(obvCfg.id);
if ((after.length < 2 || !after.includes('plot0')) && attempt < 3) {
setTimeout(() => void ensureObvDualLine(attempt + 1), 500 * (attempt + 1));
}
}
}, [needsDeepObv, chartIndicators]);
const syncChartLayout = useCallback(() => {
const wrap = canvasWrapRef.current;
const mgr = managerRef.current;
@@ -144,24 +124,13 @@ const TradeSignalMiniChart: React.FC<Props> = ({
}
syncChartLayout();
applySignalMarkers();
if (!mgr) return;
void ensureObvDualLine();
[0, 100, 500, 1200].forEach(delay => {
setTimeout(() => {
void managerRef.current?.repairDualLineSeries();
void ensureObvDualLine();
}, delay);
});
}, [syncChartLayout, applySignalMarkers, ensureObvDualLine]);
}, [syncChartLayout, applySignalMarkers]);
const handleManagerReady = useCallback((mgr: ChartManager) => {
managerRef.current = mgr;
syncToManager(mgr);
applySignalMarkers();
if (needsDeepObv) {
void mgr.repairDualLineSeries().then(() => ensureObvDualLine());
}
}, [syncToManager, applySignalMarkers, needsDeepObv, ensureObvDualLine]);
}, [syncToManager, applySignalMarkers]);
const applyRealtimeBar = useCallback((bar: OHLCVBar, append: boolean) => {
if (barsMarketRef.current !== marketRef.current) return;
@@ -216,19 +185,6 @@ const TradeSignalMiniChart: React.FC<Props> = ({
const chartDataReady = barsReady && obvBarsReady && settingsLoaded;
useEffect(() => {
if (!enabled || !chartDataReady) return;
const mgr = managerRef.current;
if (!mgr?.hasMainSeries()) return;
const timers = [200, 800, 1600].map(delay =>
setTimeout(() => {
void mgr.repairDualLineSeries();
void ensureObvDualLine();
}, delay),
);
return () => timers.forEach(clearTimeout);
}, [enabled, chartDataReady, chartIndicators, market, timeframe, settingsRevision, ensureObvDualLine]);
useLayoutEffect(() => {
chartLiveReadyRef.current = false;
pendingBarRef.current = null;