복합지표 전략 추가

This commit is contained in:
Macbook
2026-06-12 13:26:53 +09:00
parent 9208418c33
commit 52137cf1db
27 changed files with 2712 additions and 55 deletions
+25 -5
View File
@@ -71,14 +71,20 @@ export function migratePriceExtremeCondition(cond: ConditionDSL): ConditionDSL {
const leftField = cond.leftField && priceFields.has(cond.leftField)
? cond.leftField
: 'CLOSE_PRICE';
const rightField = priorExtremeField(ind, period);
let conditionType = cond.conditionType;
if (conditionType === 'CROSS_UP' && ind === 'NEW_HIGH' && !rightField.startsWith('NH_PRIOR_')) {
conditionType = 'GTE';
} else if (conditionType === 'CROSS_DOWN' && ind === 'NEW_LOW' && !rightField.startsWith('NL_PRIOR_')) {
conditionType = 'LTE';
}
return syncPriceExtremeSimpleFields({
...cond,
composite: false,
leftField,
rightField,
period,
conditionType: cond.conditionType === 'CROSS_UP' ? 'GTE'
: cond.conditionType === 'CROSS_DOWN' ? 'LTE'
: cond.conditionType,
conditionType,
});
}
@@ -96,13 +102,27 @@ export function migratePriceExtremeCondition(cond: ConditionDSL): ConditionDSL {
});
}
if (migrated.conditionType === 'CROSS_UP' && ind === 'NEW_HIGH') {
if (migrated.conditionType === 'CROSS_UP' && ind === 'NEW_HIGH'
&& !migrated.rightField?.startsWith('NH_PRIOR_')) {
migrated = { ...migrated, conditionType: 'GTE' };
}
if (migrated.conditionType === 'CROSS_DOWN' && ind === 'NEW_LOW') {
if (migrated.conditionType === 'CROSS_DOWN' && ind === 'NEW_LOW'
&& !migrated.rightField?.startsWith('NL_PRIOR_')) {
migrated = { ...migrated, conditionType: 'LTE' };
}
// 종가 vs NH/NL_PRIOR — GTE/LTE 유지형은 봉마다 시그널 → CROSS 돌파 1봉으로 정규화
if (ind === 'NEW_HIGH' && migrated.leftField === 'CLOSE_PRICE'
&& migrated.conditionType === 'GTE'
&& migrated.rightField?.startsWith('NH_PRIOR_')) {
migrated = { ...migrated, conditionType: 'CROSS_UP' };
}
if (ind === 'NEW_LOW' && migrated.leftField === 'CLOSE_PRICE'
&& migrated.conditionType === 'LTE'
&& migrated.rightField?.startsWith('NL_PRIOR_')) {
migrated = { ...migrated, conditionType: 'CROSS_DOWN' };
}
return migrated;
}