111 lines
3.1 KiB
TypeScript
111 lines
3.1 KiB
TypeScript
/**
|
||
* 전략편집기 — 보조지표 설정(DEF)에서 기간 표시·기본값 조회.
|
||
* 팔레트 칩, PaletteItemModal, getDefaultIndicatorPeriod, getFieldOpts 라벨에 공통 사용.
|
||
*/
|
||
import type { DefType } from './strategyEditorShared';
|
||
|
||
/** 팔레트·요약용 기간 문자열 (복수 파라미터는 슬래시 구분) */
|
||
export function formatIndicatorPeriodLabel(indicator: string, def: DefType): string {
|
||
switch (indicator) {
|
||
case 'RSI':
|
||
return String(def.rsiPeriod);
|
||
case 'CCI':
|
||
return String(def.cciPeriod);
|
||
case 'ADX':
|
||
return String(def.adxPeriod);
|
||
case 'WILLIAMS_R':
|
||
return String(def.williamsR);
|
||
case 'TRIX':
|
||
return `${def.trixPeriod}/${def.trixSignal}`;
|
||
case 'VR':
|
||
return String(def.vrPeriod);
|
||
case 'BWI':
|
||
return String(def.bwiPeriod);
|
||
case 'OBV':
|
||
return def.obvPeriod === def.obvSignal
|
||
? String(def.obvPeriod)
|
||
: `${def.obvPeriod}/${def.obvSignal}`;
|
||
case 'MACD':
|
||
return `${def.macdFast}/${def.macdSlow}/${def.macdSignal}`;
|
||
case 'STOCHASTIC':
|
||
return `${def.stochK}/${def.stochD}`;
|
||
case 'DMI':
|
||
return String(def.dmiPeriod);
|
||
case 'VOLUME_OSC':
|
||
return `${def.volOscShort}/${def.volOscLong}`;
|
||
case 'DISPARITY':
|
||
return `${def.dispUltra}/${def.dispShort}/${def.dispMid}/${def.dispLong}`;
|
||
case 'PSYCHOLOGICAL':
|
||
return String(def.psyPeriod);
|
||
case 'NEW_PSYCHOLOGICAL':
|
||
return String(def.newPsy);
|
||
case 'INVEST_PSYCHOLOGICAL':
|
||
return String(def.investPsy);
|
||
case 'MA':
|
||
return def.maLines.length ? def.maLines.join('/') : '5';
|
||
case 'EMA':
|
||
return def.maLines.length ? def.maLines.slice(0, 4).join('/') : '5';
|
||
case 'BOLLINGER':
|
||
return `${def.bbPeriod}(σ${def.bbStdDev})`;
|
||
case 'ICHIMOKU':
|
||
return `${def.ichTenkan}/${def.ichKijun}/${def.ichSenkouB}`;
|
||
case 'NEW_HIGH':
|
||
case 'NEW_LOW':
|
||
return '9';
|
||
case 'VOLUME':
|
||
return '';
|
||
default:
|
||
return '';
|
||
}
|
||
}
|
||
|
||
/** 팔레트·프리셋용 대표 기간(일) — 단일 숫자 입력 지표 */
|
||
export function getIndicatorPrimaryPeriod(indicator: string, def: DefType): number {
|
||
switch (indicator) {
|
||
case 'RSI':
|
||
return def.rsiPeriod;
|
||
case 'CCI':
|
||
return def.cciPeriod;
|
||
case 'ADX':
|
||
return def.adxPeriod;
|
||
case 'WILLIAMS_R':
|
||
return def.williamsR;
|
||
case 'TRIX':
|
||
return def.trixPeriod;
|
||
case 'VR':
|
||
return def.vrPeriod;
|
||
case 'BWI':
|
||
return def.bwiPeriod;
|
||
case 'OBV':
|
||
return def.obvPeriod;
|
||
case 'MACD':
|
||
return def.macdFast;
|
||
case 'STOCHASTIC':
|
||
return def.stochK;
|
||
case 'DMI':
|
||
return def.dmiPeriod;
|
||
case 'VOLUME_OSC':
|
||
return def.volOscShort;
|
||
case 'DISPARITY':
|
||
return def.dispShort;
|
||
case 'PSYCHOLOGICAL':
|
||
return def.psyPeriod;
|
||
case 'NEW_PSYCHOLOGICAL':
|
||
return def.newPsy;
|
||
case 'INVEST_PSYCHOLOGICAL':
|
||
return def.investPsy;
|
||
case 'MA':
|
||
case 'EMA':
|
||
return def.maLines[0] ?? 5;
|
||
case 'BOLLINGER':
|
||
return def.bbPeriod;
|
||
case 'ICHIMOKU':
|
||
return def.ichTenkan;
|
||
case 'NEW_HIGH':
|
||
case 'NEW_LOW':
|
||
return 9;
|
||
default:
|
||
return 14;
|
||
}
|
||
}
|