add fx strentth
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
# 分型强度检测功能文档
|
||||
|
||||
## 概述
|
||||
|
||||
本功能为缠论中的顶底分型添加了强度检测机制,通过多维度分析来量化分型的可靠性和重要性。强度分数范围为0-100分,数值越高表示分型越强、越可靠。
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 1. 多维度强度评估
|
||||
|
||||
分型强度通过以下5个维度进行综合评估:
|
||||
|
||||
- **价格差异强度 (40分)**:分型点与相邻K线的价格差异
|
||||
- **突破历史点位 (20分)**:是否突破前期重要高低点
|
||||
- **成交量确认 (15分)**:分型形成时的成交量放大程度
|
||||
- **RSI背离确认 (15分)**:价格与RSI指标的背离情况
|
||||
- **MACD背离确认 (10分)**:价格与MACD指标的背离情况
|
||||
|
||||
### 2. 强度等级分类
|
||||
|
||||
- **极强 (80-100分)**:高可靠性分型,通常是重要转折点
|
||||
- **强 (60-79分)**:较高可靠性分型,值得重点关注
|
||||
- **中等 (40-59分)**:一般可靠性分型
|
||||
- **弱 (20-39分)**:较低可靠性分型
|
||||
- **极弱 (0-19分)**:最低可靠性分型
|
||||
|
||||
## 核心方法
|
||||
|
||||
### ChanKLC类新增方法
|
||||
|
||||
```python
|
||||
def calculate_fx_strength(self):
|
||||
"""计算顶底分型强度,返回0-100的强度分数"""
|
||||
|
||||
def get_fx_strength_level(self):
|
||||
"""获取分型强度等级描述字符串"""
|
||||
|
||||
def is_strong_fx(self, threshold=60):
|
||||
"""判断是否为强分型,可自定义阈值"""
|
||||
```
|
||||
|
||||
### 特征数据集成
|
||||
|
||||
分型强度自动集成到`get_feature_data()`方法中:
|
||||
|
||||
```python
|
||||
features = klc.get_feature_data()
|
||||
|
||||
# 可获取以下分型强度相关特征:
|
||||
- klc_fx_strength # 强度分数 (0-100)
|
||||
- klc_fx_strength_level # 强度等级描述
|
||||
- klc_is_strong_fx # 是否为强分型 (1/0)
|
||||
- klc_fx_strength_extreme # 是否为极强分型 (1/0)
|
||||
- klc_fx_strength_strong # 是否为强分型 (1/0)
|
||||
- klc_fx_strength_medium # 是否为中等分型 (1/0)
|
||||
- klc_fx_strength_weak # 是否为弱分型 (1/0)
|
||||
- klc_fx_strength_very_weak # 是否为极弱分型 (1/0)
|
||||
```
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 基本使用
|
||||
|
||||
```python
|
||||
from ChanKLC import ChanKLC
|
||||
from ChanEnum import Chan_FX_TYPE
|
||||
|
||||
# 假设klc是一个已识别的分型
|
||||
if klc.fx != Chan_FX_TYPE.UNKNOWN:
|
||||
strength = klc.calculate_fx_strength()
|
||||
level = klc.get_fx_strength_level()
|
||||
is_strong = klc.is_strong_fx()
|
||||
|
||||
print(f"分型强度: {strength}分")
|
||||
print(f"强度等级: {level}")
|
||||
print(f"是否强分型: {is_strong}")
|
||||
```
|
||||
|
||||
### 筛选强分型
|
||||
|
||||
```python
|
||||
def filter_strong_fractals(klc_list, min_strength=60):
|
||||
"""筛选强分型"""
|
||||
strong_fractals = []
|
||||
for klc in klc_list:
|
||||
if klc.fx != Chan_FX_TYPE.UNKNOWN and klc.is_strong_fx(min_strength):
|
||||
strong_fractals.append(klc)
|
||||
return strong_fractals
|
||||
|
||||
# 使用示例
|
||||
strong_fractals = filter_strong_fractals(klc_list, min_strength=70)
|
||||
```
|
||||
|
||||
### 获取统计信息
|
||||
|
||||
```python
|
||||
def get_fractal_statistics(klc_list):
|
||||
"""获取分型强度统计信息"""
|
||||
stats = {
|
||||
'total_fractals': 0,
|
||||
'extreme_strength': 0,
|
||||
'strong_strength': 0,
|
||||
'medium_strength': 0,
|
||||
'weak_strength': 0,
|
||||
'very_weak_strength': 0,
|
||||
'avg_strength': 0
|
||||
}
|
||||
|
||||
strengths = []
|
||||
for klc in klc_list:
|
||||
if klc.fx != Chan_FX_TYPE.UNKNOWN:
|
||||
stats['total_fractals'] += 1
|
||||
strength = klc.calculate_fx_strength()
|
||||
strengths.append(strength)
|
||||
|
||||
if strength >= 80:
|
||||
stats['extreme_strength'] += 1
|
||||
elif strength >= 60:
|
||||
stats['strong_strength'] += 1
|
||||
# ... 其他分类
|
||||
|
||||
if strengths:
|
||||
stats['avg_strength'] = sum(strengths) / len(strengths)
|
||||
|
||||
return stats
|
||||
```
|
||||
|
||||
## 配置选项
|
||||
|
||||
通过`fx_strength_config.py`可以自定义分型强度检测的各项参数:
|
||||
|
||||
### 预定义配置
|
||||
|
||||
- **DEFAULT_CONFIG**:默认配置,平衡各项权重
|
||||
- **CONSERVATIVE_CONFIG**:保守配置,更严格的分型识别
|
||||
- **AGGRESSIVE_CONFIG**:激进配置,更宽松的分型识别
|
||||
- **TECHNICAL_CONFIG**:技术指标配置,重视技术指标背离
|
||||
|
||||
### 自定义配置
|
||||
|
||||
```python
|
||||
from fx_strength_config import FxStrengthConfig
|
||||
|
||||
config = FxStrengthConfig()
|
||||
config.price_difference_weight = 50 # 调整价格差异权重
|
||||
config.strong_threshold = 70 # 调整强分型阈值
|
||||
config.volume_lookback = 10 # 调整成交量回看期数
|
||||
```
|
||||
|
||||
## 强度计算详情
|
||||
|
||||
### 1. 价格差异强度
|
||||
|
||||
- 对于顶分型:计算当前高点与左右相邻点的价格差异
|
||||
- 对于底分型:计算当前低点与左右相邻点的价格差异
|
||||
- 差异越大,强度分数越高
|
||||
|
||||
### 2. 突破历史点位强度
|
||||
|
||||
- 检查是否突破前N根K线的最高/最低价
|
||||
- 突破幅度越大,强度分数越高
|
||||
|
||||
### 3. 成交量确认强度
|
||||
|
||||
- 比较当前K线成交量与前N根K线平均成交量
|
||||
- 成交量放大越多,强度分数越高
|
||||
|
||||
### 4. RSI背离确认强度
|
||||
|
||||
- 检查价格新高/新低时RSI是否出现相反走势
|
||||
- 背离程度越大,强度分数越高
|
||||
|
||||
### 5. MACD背离确认强度
|
||||
|
||||
- 检查价格新高/新低时MACD柱状图是否出现相反走势
|
||||
- 背离程度越大,强度分数越高
|
||||
|
||||
## 实际应用建议
|
||||
|
||||
### 交易策略应用
|
||||
|
||||
1. **入场信号**:只关注强度>=60的分型作为入场信号
|
||||
2. **重要转折**:极强分型(>=80分)通常预示重要转折点
|
||||
3. **止损设置**:根据分型强度调整止损距离
|
||||
4. **仓位管理**:强分型可以加大仓位,弱分型减小仓位
|
||||
|
||||
### 风险控制
|
||||
|
||||
1. **避免弱分型**:强度<40的分型建议谨慎对待
|
||||
2. **确认机制**:结合其他技术指标确认分型有效性
|
||||
3. **时间过滤**:高时间周期的强分型更可靠
|
||||
4. **市场环境**:在震荡市中提高强度阈值
|
||||
|
||||
### 机器学习特征
|
||||
|
||||
分型强度可以作为机器学习模型的重要特征:
|
||||
- 直接使用强度分数作为数值特征
|
||||
- 使用强度等级分类作为分类特征
|
||||
- 结合其他技术指标构建更复杂的特征
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **数据完整性**:确保KLC对象包含完整的价格和技术指标数据
|
||||
2. **时间序列**:确保KLC之间的pre/next关系正确建立
|
||||
3. **参数调优**:根据不同市场和时间周期调整配置参数
|
||||
4. **回测验证**:在实际使用前进行充分的历史数据回测
|
||||
5. **实时更新**:分型强度会随着后续K线的变化而更新
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `ChanKLC.py`:主要实现文件,包含分型强度计算逻辑
|
||||
- `fx_strength_example.py`:使用示例和功能演示
|
||||
- `fx_strength_config.py`:配置文件,支持自定义参数
|
||||
- `README_FX_STRENGTH.md`:本文档,详细说明功能特性
|
||||
|
||||
## 版本更新
|
||||
|
||||
- **v1.0**:基础分型强度检测功能
|
||||
- 支持多维度强度评估
|
||||
- 集成到特征数据系统
|
||||
- 提供配置化参数调整
|
||||
Reference in New Issue
Block a user