UNPKG

@gabriel3615/ta_analysis

Version:

stock ta analysis

45 lines (44 loc) 1.8 kB
import { TradeDirection } from '../../../types.js'; import { PatternDirection } from '../../basic/patterns/analyzeMultiTimeframePatterns.js'; function clamp(value, min = 0, max = 100) { return Math.max(min, Math.min(max, value)); } export function createPatternPlugin() { return { id: 'pattern', category: 'main', extract(input, _context) { const p = input.analyses.pattern; const dir = p.combinedSignal; const direction = dir === PatternDirection.Bullish ? TradeDirection.Long : dir === PatternDirection.Bearish ? TradeDirection.Short : TradeDirection.Neutral; const tfWeights = { weekly: 0.4, daily: 0.4, '1hour': 0.2, }; let statusAdj = 0; for (const tf of p.timeframeAnalyses ?? []) { const w = tfWeights[tf.timeframe] ?? 0.2; const st = tf.dominantPattern?.status; if (st === 'confirmed') statusAdj += 20 * w; else if (st === 'completed') statusAdj += 10 * w; else if (st === 'forming') statusAdj += -10 * w; else if (st === 'failed') statusAdj += -20 * w; } const confidence = Math.abs(p.signalStrength ?? 0) + statusAdj; return { direction, confidence: clamp(confidence), source: 'pattern' }; }, summarize(input) { const pattern = input.analyses.pattern; return `形态综合方向:${pattern.combinedSignal} 强度:${pattern.signalStrength?.toFixed?.(1) ?? pattern.signalStrength}`; }, }; }