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:
@@ -13,6 +13,7 @@ import {
|
|||||||
loadStrategies,
|
loadStrategies,
|
||||||
runBacktest,
|
runBacktest,
|
||||||
loadBacktestSettings,
|
loadBacktestSettings,
|
||||||
|
loadIndicatorSettings,
|
||||||
API_BASE,
|
API_BASE,
|
||||||
type BacktestResultRecord,
|
type BacktestResultRecord,
|
||||||
type BacktestAnalysis,
|
type BacktestAnalysis,
|
||||||
@@ -221,8 +222,9 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) {
|
|||||||
setRunLoading(true);
|
setRunLoading(true);
|
||||||
setRunError(null);
|
setRunError(null);
|
||||||
try {
|
try {
|
||||||
const [settings, barsRes] = await Promise.all([
|
const [settings, indicatorParams, barsRes] = await Promise.all([
|
||||||
loadBacktestSettings(),
|
loadBacktestSettings(),
|
||||||
|
loadIndicatorSettings(),
|
||||||
fetch(`${API_BASE}/candles/history?${new URLSearchParams({
|
fetch(`${API_BASE}/candles/history?${new URLSearchParams({
|
||||||
market: runMarket,
|
market: runMarket,
|
||||||
type: timeframeToCandleType(runTimeframe),
|
type: timeframeToCandleType(runTimeframe),
|
||||||
@@ -242,6 +244,7 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) {
|
|||||||
bars,
|
bars,
|
||||||
timeframe: runTimeframe,
|
timeframe: runTimeframe,
|
||||||
settings,
|
settings,
|
||||||
|
indicatorParams,
|
||||||
symbol: runMarket,
|
symbol: runMarket,
|
||||||
strategyName: strategy?.name,
|
strategyName: strategy?.name,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ import { readStoredSize, storeSize, usePanelResize } from './strategyEditor/useP
|
|||||||
import StrategyDescriptionModal from './strategyEditor/StrategyDescriptionModal';
|
import StrategyDescriptionModal from './strategyEditor/StrategyDescriptionModal';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import { MarketSearchPanel } from './MarketSearchPanel';
|
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 { timeframeToCandleType } from '../utils/chartCandleType';
|
||||||
import { getKoreanName } from '../utils/marketNameCache';
|
import { getKoreanName } from '../utils/marketNameCache';
|
||||||
import type { Timeframe } from '../types';
|
import type { Timeframe } from '../types';
|
||||||
@@ -981,8 +981,9 @@ export default function StrategyEditorPage({ theme, onNavigateToBacktest }: Prop
|
|||||||
setQbError(null);
|
setQbError(null);
|
||||||
try {
|
try {
|
||||||
const selectedStrategy = strategies.find(s => s.id === selectedId);
|
const selectedStrategy = strategies.find(s => s.id === selectedId);
|
||||||
const [settings, barsRes] = await Promise.all([
|
const [settings, indicatorParams, barsRes] = await Promise.all([
|
||||||
loadBacktestSettings(),
|
loadBacktestSettings(),
|
||||||
|
loadIndicatorSettings(),
|
||||||
fetch(`${API_BASE}/candles/history?${new URLSearchParams({
|
fetch(`${API_BASE}/candles/history?${new URLSearchParams({
|
||||||
market: qbMarket,
|
market: qbMarket,
|
||||||
type: timeframeToCandleType(qbTimeframe),
|
type: timeframeToCandleType(qbTimeframe),
|
||||||
@@ -1001,6 +1002,7 @@ export default function StrategyEditorPage({ theme, onNavigateToBacktest }: Prop
|
|||||||
bars,
|
bars,
|
||||||
timeframe: qbTimeframe,
|
timeframe: qbTimeframe,
|
||||||
settings,
|
settings,
|
||||||
|
indicatorParams,
|
||||||
symbol: qbMarket,
|
symbol: qbMarket,
|
||||||
strategyName: selectedStrategy?.name,
|
strategyName: selectedStrategy?.name,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user