투자관리 화면 수정

This commit is contained in:
Macbook
2026-05-31 17:02:39 +09:00
parent 78f00dbaa5
commit d6c2f3e451
8 changed files with 251 additions and 13 deletions
@@ -12,6 +12,11 @@ import { normalizeChartTimeframe } from '../../utils/backtestUiUtils';
import { resolveStrategyPrimaryTimeframe } from '../../utils/strategyToChartIndicators';
import type { OHLCVBar, Theme } from '../../types';
import { useIndicatorSettings } from '../../hooks/useIndicatorSettings';
import {
DEFAULT_PAPER_OVERLAY_VISIBILITY,
type PaperOverlayToggleKey,
type PaperOverlayVisibility,
} from '../../utils/paperChartOverlayVisibility';
const BAR_COUNT = 300;
const HISTORY_BACKTEST_DEBOUNCE_MS = 450;
@@ -34,6 +39,10 @@ const PaperAnalysisChart: React.FC<Props> = ({ market, strategyId, theme = 'dark
const [running, setRunning] = useState(false);
const [historyLoading, setHistoryLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
/** 종목 변경해도 유지 — 투자관리 차트 탭 세션 전용 (DB·설정 저장 없음) */
const [overlayVisibility, setOverlayVisibility] = useState<PaperOverlayVisibility>(
() => ({ ...DEFAULT_PAPER_OVERLAY_VISIBILITY }),
);
const toTimeSec = useMemo(() => Math.floor(Date.now() / 1000), [market, strategyId]);
const backtestGenRef = useRef(0);
const historyDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
@@ -141,6 +150,10 @@ const PaperAnalysisChart: React.FC<Props> = ({ market, strategyId, theme = 'dark
};
}, [market, strategyId, strategy, toTimeSec, runSignalsForBars]);
const handleToggleOverlay = useCallback((key: PaperOverlayToggleKey) => {
setOverlayVisibility(prev => ({ ...prev, [key]: !prev[key] }));
}, []);
const handleHistoryBarsLoaded = useCallback((bars: OHLCVBar[]) => {
const strat = strategyRef.current;
const sid = strategyIdRef.current;
@@ -189,6 +202,8 @@ const PaperAnalysisChart: React.FC<Props> = ({ market, strategyId, theme = 'dark
theme={theme}
onHistoryBarsLoaded={handleHistoryBarsLoaded}
onHistoryLoadingChange={setHistoryLoading}
overlayVisibility={overlayVisibility}
onToggleOverlay={handleToggleOverlay}
/>
</div>
);