전략편집기 시간봉 선택오류 수정
This commit is contained in:
@@ -204,11 +204,6 @@ function normalizeCandleTypesList(types: string[]): string[] {
|
||||
}
|
||||
}
|
||||
if (out.length === 0) return [DEFAULT_START_CANDLE];
|
||||
// 레거시/불일치로 multi 분봉에 stale 1m 이 섞인 경우가 있어,
|
||||
// multi 인데 non-1m 이 있으면 1m 을 기본적으로 제외한다.
|
||||
if (out.length > 1 && out.includes('1m') && out.some(ct => ct !== '1m')) {
|
||||
return out.filter(ct => ct !== '1m');
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -414,7 +409,7 @@ export function collectTimeframesFromEditorState(state: EditorConditionState): s
|
||||
return [...set];
|
||||
}
|
||||
|
||||
/** 매수·매도 START(기본) 평가 분봉을 동일하게 맞춤 — 한쪽만 3m·5m 체크 시 다른 쪽 1m 잔존 방지 */
|
||||
/** @deprecated 매수·매도 시간봉은 각각 독립 설정 — updateStartCandleTypes 사용 */
|
||||
export function syncBuySellPrimaryStartCandleTypes(
|
||||
buy: EditorConditionState,
|
||||
sell: EditorConditionState,
|
||||
@@ -436,19 +431,14 @@ export function syncEditorStateCandleTypesForSave(state: EditorConditionState):
|
||||
return next;
|
||||
}
|
||||
|
||||
/** 저장 직전 — 양쪽 START 분봉 합집합을 각 탭에 반영 (매수만 설정한 경우 매도 DSL도 동기화) */
|
||||
/** 저장 직전 — 각 탭 START 분봉을 해당 조건 트리 left/rightCandleType 에 반영 (매수·매도 독립) */
|
||||
export function alignBuySellStartCandleTypesForSave(
|
||||
buy: EditorConditionState,
|
||||
sell: EditorConditionState,
|
||||
): { buy: EditorConditionState; sell: EditorConditionState } {
|
||||
const merged = normalizeCandleTypesList([
|
||||
...getStartCandleTypes(buy.startMeta[START_NODE_ID]),
|
||||
...getStartCandleTypes(sell.startMeta[START_NODE_ID]),
|
||||
]);
|
||||
const synced = syncBuySellPrimaryStartCandleTypes(buy, sell, merged);
|
||||
return {
|
||||
buy: syncEditorStateCandleTypesForSave(synced.buy),
|
||||
sell: syncEditorStateCandleTypesForSave(synced.sell),
|
||||
buy: syncEditorStateCandleTypesForSave(buy),
|
||||
sell: syncEditorStateCandleTypesForSave(sell),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ import { generateNodeId } from './strategyTypes';
|
||||
|
||||
export const START_NODE_ID = '__strategy_start__';
|
||||
export const DEFAULT_START_CANDLE = '1m';
|
||||
/** 새 전략 START 노드 기본 평가 분봉 */
|
||||
export const DEFAULT_NEW_STRATEGY_START_CANDLE = '3m';
|
||||
|
||||
export const STRATEGY_CANDLE_TYPES = [
|
||||
'1m', '3m', '5m', '10m', '15m', '30m', '1h', '4h', '1w', '1d',
|
||||
@@ -36,7 +38,12 @@ export function createStartNodeId(): string {
|
||||
}
|
||||
|
||||
export function defaultStartMeta(): Record<string, StartNodeMeta> {
|
||||
return { [START_NODE_ID]: { candleTypes: [DEFAULT_START_CANDLE], candleType: DEFAULT_START_CANDLE } };
|
||||
return {
|
||||
[START_NODE_ID]: {
|
||||
candleTypes: [DEFAULT_NEW_STRATEGY_START_CANDLE],
|
||||
candleType: DEFAULT_NEW_STRATEGY_START_CANDLE,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
/** START 메타에서 정렬된 평가 분봉 목록 (최소 1개) */
|
||||
|
||||
Reference in New Issue
Block a user