paramParser.ts•1.17 kB
// 技术指标参数解析器模块
export interface IndicatorParams {
name: string;
params: number[];
}
/**
* 解析技术指标参数
* @param indicator 指标字符串,例如 "macd(12,26,9)" 或 "rsi"
* @returns 解析后的指标名称和参数
*/
export function parseIndicatorParams(indicator: string): IndicatorParams {
const match = indicator.match(/^([a-zA-Z]+\d*)(\(([^)]+)\))?$/);
if (!match) {
throw new Error(`无效的技术指标格式: ${indicator}`);
}
const name = match[1].toLowerCase();
const paramsStr = match[3];
let params: number[] = [];
if (paramsStr) {
params = paramsStr.split(',').map(p => {
const num = parseFloat(p.trim());
if (isNaN(num)) {
throw new Error(`技术指标${name}的参数必须是数字: ${p}`);
}
return num;
});
}
return { name, params };
}
/**
* 格式化指标参数用于显示
* @param name 指标名称
* @param params 参数数组
* @returns 格式化的参数字符串
*/
export function formatIndicatorParams(name: string, params: number[]): string {
return params.length > 0 ? `(${params.join(',')})` : '(默认)';
}