diff --git a/frontend/src/components/BacktestHistoryPage.tsx b/frontend/src/components/BacktestHistoryPage.tsx index 3b0e288..8c2cb26 100644 --- a/frontend/src/components/BacktestHistoryPage.tsx +++ b/frontend/src/components/BacktestHistoryPage.tsx @@ -3,6 +3,8 @@ */ import '../styles/backtestDashboard.css'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import ReactDOM from 'react-dom'; +import { MarketSearchPanel } from './MarketSearchPanel'; import { loadBacktestResults, deleteBacktestResult, @@ -17,7 +19,6 @@ import { type BacktestSignal, type StrategyDto, } from '../utils/backendApi'; -import { UPBIT_MARKETS } from '../utils/upbitApi'; import { timeframeToCandleType } from '../utils/chartCandleType'; import type { Theme, Timeframe } from '../types'; import { buildEquityFromSignals } from '../utils/backtestEquity'; @@ -101,6 +102,9 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) { const [runStrategyId, setRunStrategyId] = useState(null); const [runLoading, setRunLoading] = useState(false); const [runError, setRunError] = useState(null); + const [showMarketSearch, setShowMarketSearch] = useState(false); + const [marketQuery, setMarketQuery] = useState(''); + const marketBtnRef = useRef(null); const [leftWidth, setLeftWidth] = useState(() => readMinWidth(LEFT_KEY, LEFT_DEFAULT)); const [rightWidth, setRightWidth] = useState(() => readMinWidth(RIGHT_KEY, RIGHT_DEFAULT)); @@ -372,17 +376,42 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) { {/* 빠른 실행 툴바 */}
- + {getKoreanName(runMarket)} + {runMarket.replace('KRW-', '')} + + + + + {showMarketSearch && ReactDOM.createPortal( + { + setRunMarket(market); + setShowMarketSearch(false); + setMarketQuery(''); + }} + onClose={() => { + setShowMarketSearch(false); + setMarketQuery(''); + }} + anchorRect={marketBtnRef.current?.getBoundingClientRect() ?? null} + anchorPlacement="dropdown" + />, + document.body, + )}