30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
/**
|
|
* 심리도 / 신심리도 / 투자심리도 (업비트)
|
|
* - 심리도: N일 중 종가 상승일 비율 × 100 (0~100)
|
|
* - 신심리도: N일 상승·하락 일수와 등락폭 반영, 0 중심 (미래에셋 공식)
|
|
* - 투자심리도: N일 중 종가 상승일 비율 × 100 (업비트·한국경제, 기본 10일)
|
|
*/
|
|
|
|
export const PSYCHOLOGICAL_DEFAULT_LENGTH = 12;
|
|
export const NEW_PSYCHOLOGICAL_DEFAULT_LENGTH = 10;
|
|
export const INVEST_PSYCHOLOGICAL_DEFAULT_LENGTH = 10;
|
|
|
|
/** 레거시 type 정규화 — NewPsychological 은 별도 지표로 유지 */
|
|
export function resolvePsychologicalIndicatorType(type: string): string {
|
|
return type;
|
|
}
|
|
|
|
export function normalizePsychologicalParams(
|
|
type: string,
|
|
params: Record<string, number | string | boolean>,
|
|
): Record<string, number | string | boolean> {
|
|
const defaultLen =
|
|
type === 'InvestPsychological'
|
|
? INVEST_PSYCHOLOGICAL_DEFAULT_LENGTH
|
|
: type === 'NewPsychological'
|
|
? NEW_PSYCHOLOGICAL_DEFAULT_LENGTH
|
|
: PSYCHOLOGICAL_DEFAULT_LENGTH;
|
|
const length = Math.max(1, Number(params.length ?? defaultLen) || defaultLen);
|
|
return { ...params, length };
|
|
}
|