fix: 백테스팅 실행 시 인디케이터 파라미터(indicatorParams) 전달

BacktestHistoryPage와 StrategyEditorPage의 handleQuickRun에서
runBacktest 호출 시 loadIndicatorSettings()로 사용자 저장 파라미터를
불러와 indicatorParams로 함께 전송한다.

이를 통해 백엔드가 기본값(kLength=14, smooth=3) 대신 사용자 설정값
(kLength=12, smooth=5 등)으로 지표를 계산하여 차트와 동일한
스토캐스틱 교차 지점에서 정확히 시그널을 생성한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Macbook
2026-06-11 17:45:08 +09:00
parent 8d019ddd26
commit 9d9c14c2b1
2 changed files with 16 additions and 11 deletions
@@ -86,7 +86,7 @@ import { readStoredSize, storeSize, usePanelResize } from './strategyEditor/useP
import StrategyDescriptionModal from './strategyEditor/StrategyDescriptionModal';
import ReactDOM from 'react-dom';
import { MarketSearchPanel } from './MarketSearchPanel';
import { runBacktest, loadBacktestSettings, API_BASE } from '../utils/backendApi';
import { runBacktest, loadBacktestSettings, loadIndicatorSettings, API_BASE } from '../utils/backendApi';
import { timeframeToCandleType } from '../utils/chartCandleType';
import { getKoreanName } from '../utils/marketNameCache';
import type { Timeframe } from '../types';
@@ -981,8 +981,9 @@ export default function StrategyEditorPage({ theme, onNavigateToBacktest }: Prop
setQbError(null);
try {
const selectedStrategy = strategies.find(s => s.id === selectedId);
const [settings, barsRes] = await Promise.all([
const [settings, indicatorParams, barsRes] = await Promise.all([
loadBacktestSettings(),
loadIndicatorSettings(),
fetch(`${API_BASE}/candles/history?${new URLSearchParams({
market: qbMarket,
type: timeframeToCandleType(qbTimeframe),
@@ -997,12 +998,13 @@ export default function StrategyEditorPage({ theme, onNavigateToBacktest }: Prop
throw new Error('캔들 데이터가 부족합니다. 타임프레임을 변경하거나 잠시 후 다시 시도해주세요.');
}
const result = await runBacktest({
strategyId: selectedId,
strategyId: selectedId,
bars,
timeframe: qbTimeframe,
timeframe: qbTimeframe,
settings,
symbol: qbMarket,
strategyName: selectedStrategy?.name,
indicatorParams,
symbol: qbMarket,
strategyName: selectedStrategy?.name,
});
if (!result) throw new Error('백테스팅 실행에 실패했습니다.');
if (result.resultId) {