UNPKG

@gabriel3615/ta_analysis

Version:

stock ta analysis

145 lines (144 loc) 4.78 kB
import { Candle } from '../../../types.js'; export type PatternConfig = { windows: { sliceRecentCount: number; peakWindow: number; recentEmphasis: boolean; formingNearDistance: number; }; weights: { timeframe: { weekly: number; daily: number; '1hour': number; }; confirmedBoost: number; formingBoost: number; patternDistanceDecay: number; peakImportanceDecay: number; }; signals: { strongRatio: number; combineBiasRatio: number; recentCount: number; reliabilityBoostThreshold: number; recencyHighThreshold: number; recencyMediumThreshold: number; recencyHighBonus: number; recencyMediumBonus: number; }; validation: { priceSimilarityThreshold: number; minPatternHeightRatio: number; minPatternDuration: number; maxPatternDuration: number; breakoutConfirmationBars: number; breakoutConfirmationPercent: number; failureRetracementThreshold: number; volumeConfirmationMultiplier: number; minTrendlineTouches: number; trendlineTouchTolerance: number; }; }; export declare let patternConfig: PatternConfig; export declare function updatePatternConfig(partial: Partial<PatternConfig>): void; /** * 检查两个价格是否在同一水平(相似度检查) */ export declare function arePricesSimilar(price1: number, price2: number): boolean; /** * 检查价格是否接近趋势线 */ export declare function isPriceNearTrendline(price: number, trendlinePrice: number): boolean; /** * 计算形态高度是否足够显著 */ export declare function isPatternHeightSignificant(patternHeight: number, avgPrice: number): boolean; /** * 检查形态持续时间是否在合理范围内 */ export declare function isPatternDurationValid(duration: number): boolean; /** * 检查是否为有效突破 */ export declare function isValidBreakout(data: Candle[], breakoutIndex: number, breakoutLevel: number, isUpward: boolean): boolean; /** * 检查形态是否失败 */ export declare function isPatternFailed(data: Candle[], patternEndIndex: number, breakoutLevel: number, isUpward: boolean): boolean; /** * 标准化的形态可靠性评分系统 */ export interface ReliabilityFactors { patternHeight: number; avgPrice: number; duration: number; symmetry?: number; trendlineTouches?: number; expectedTouches?: number; volumeConfirmation?: boolean; volumePattern?: 'ideal' | 'good' | 'acceptable' | 'poor'; breakoutConfirmed?: boolean; breakoutStrength?: number; recency?: number; specificFactors?: { [key: string]: number; }; } /** * 计算标准化的可靠性评分 */ export declare function calculateStandardReliability(factors: ReliabilityFactors): number; /** * 分析成交量模式质量 */ export declare function analyzeVolumePatternQuality(data: Candle[], startIndex: number, endIndex: number, patternType: 'reversal' | 'continuation' | 'consolidation'): 'ideal' | 'good' | 'acceptable' | 'poor'; /** * 计算突破强度 */ export declare function calculateBreakoutStrength(data: Candle[], breakoutIndex: number, breakoutLevel: number, isUpward: boolean): number; /** * 形态冲突处理机制 */ import { PatternType, PatternAnalysisResult } from './analyzeMultiTimeframePatterns.js'; /** * 形态优先级枚举 */ export declare enum PatternPriority { Critical = 5,// 关键形态(如头肩、双顶双底) High = 4,// 高优先级形态(如三角形、楔形) Medium = 3,// 中等优先级形态(如旗形、三角旗) Low = 2,// 低优先级形态(如圆底圆顶) Minor = 1 } /** * 获取形态类型的优先级 */ export declare function getPatternPriority(patternType: PatternType): PatternPriority; /** * 形态冲突类型 */ export declare enum ConflictType { DirectionConflict = "direction_conflict",// 方向冲突(看涨vs看跌) OverlapConflict = "overlap_conflict",// 重叠冲突(形态重叠) TimingConflict = "timing_conflict",// 时间冲突(形成时间冲突) LevelConflict = "level_conflict" } /** * 形态冲突信息 */ export interface PatternConflict { type: ConflictType; pattern1: PatternAnalysisResult; pattern2: PatternAnalysisResult; severity: number; description: string; } /** * 检测形态冲突 */ export declare function detectPatternConflicts(patterns: PatternAnalysisResult[]): PatternConflict[]; /** * 解决形态冲突 */ export declare function resolvePatternConflicts(patterns: PatternAnalysisResult[], conflicts: PatternConflict[]): PatternAnalysisResult[];