@gabriel3615/ta_analysis
Version:
stock ta analysis
145 lines (144 loc) • 4.78 kB
TypeScript
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[];