벡테스팅 수정

This commit is contained in:
Macbook
2026-06-03 02:04:30 +09:00
parent 88fe92d8c3
commit 8de3b77479
14 changed files with 156 additions and 86 deletions
+7 -14
View File
@@ -37,7 +37,7 @@ import {
import { pinStrategyEvaluationTimeframes } from '../utils/strategyTimeframePin';
import { persistVirtualTargetPinned } from '../utils/virtualTargetMutations';
import {
coalesceTargetsToDefaultStrategy,
freezeTargetsBeforeGlobalStrategyChange,
resolveVirtualTargetStrategyId,
} from '../utils/virtualTargetStrategy';
import {
@@ -186,11 +186,6 @@ export function useVirtualTradingCore(options: UseVirtualTradingCoreOptions = {}
}, [session]);
useEffect(() => { saveVirtualCardViewMode(viewMode); }, [viewMode]);
useEffect(() => {
if (session.globalStrategyId == null) return;
setTargets(prev => coalesceTargetsToDefaultStrategy(prev, session.globalStrategyId));
}, [session.globalStrategyId]);
const strategyNames = useMemo(
() => Object.fromEntries(strategies.map(s => [s.id, s.name])),
[strategies],
@@ -258,13 +253,13 @@ export function useVirtualTradingCore(options: UseVirtualTradingCoreOptions = {}
const names = resolveVirtualTargetNames(market, meta?.koreanName, meta?.englishName);
setTargets(prev => [...prev, {
market,
strategyId: null,
strategyId: session.globalStrategyId,
koreanName: names.koreanName,
englishName: names.englishName,
}]);
setSelectedMarket(market);
return true;
}, [targets, virtualTargetMaxCount]);
}, [targets, session.globalStrategyId, virtualTargetMaxCount]);
const handleRemoveTarget = useCallback((market: string) => {
setTargets(prev => prev.filter(x => x.market !== market));
@@ -282,13 +277,11 @@ export function useVirtualTradingCore(options: UseVirtualTradingCoreOptions = {}
});
}, []);
/** 상단 기본전략 — 신규 추가 종목 템플릿만 변경, 기존 종목 전략은 유지 */
const handleGlobalStrategyChange = useCallback((strategyId: number | null) => {
const next = { ...session, globalStrategyId: strategyId };
setSession(next);
if (session.running && strategyId) {
void syncVirtualTargetsToBackend(targets, next, true);
}
}, [session, targets]);
setTargets(prev => freezeTargetsBeforeGlobalStrategyChange(prev, session.globalStrategyId));
setSession(prev => ({ ...prev, globalStrategyId: strategyId }));
}, [session.globalStrategyId]);
const handleStart = useCallback(async () => {
if (targets.length === 0) {