268 lines
7.8 KiB
Markdown
268 lines
7.8 KiB
Markdown
# 加密货币市场K线形态策略使用指南
|
||
|
||
本项目已支持将K线形态策略应用于加密货币市场(Binance),可以同时扫描A股和加密货币市场。
|
||
|
||
## 新增功能
|
||
|
||
### 1. Binance数据获取器
|
||
- **文件**: `src/data/binance_fetcher.py`
|
||
- **功能**:
|
||
- 获取Binance交易所的K线数据
|
||
- 支持多种时间周期(1d, 4h, 1h等)
|
||
- 获取热门交易对(按24h交易量排序)
|
||
- 支持交易对搜索和筛选
|
||
- 自动缓存机制,减少API调用
|
||
|
||
### 2. 加密货币K线形态策略
|
||
- **文件**: `src/strategy/crypto_kline_pattern_strategy.py`
|
||
- **特点**:
|
||
- 继承自原有的`KLinePatternStrategy`
|
||
- 适配加密货币市场特点(24小时交易、高波动性)
|
||
- 支持USDT、BTC等多种计价货币
|
||
- 可配置最小交易量过滤
|
||
|
||
### 3. 加密货币市场扫描脚本
|
||
- **文件**: `crypto_scanner.py`
|
||
- **功能**: 扫描Binance热门交易对,识别K线形态信号
|
||
|
||
## 安装依赖
|
||
|
||
```bash
|
||
# 安装python-binance库
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
或单独安装:
|
||
```bash
|
||
pip install python-binance>=1.0.19
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 1. 编辑配置文件
|
||
打开 `config/config.yaml`,配置Binance API(可选):
|
||
|
||
```yaml
|
||
data_source:
|
||
# Binance API配置(获取公开数据不需要API密钥)
|
||
binance_api_key: "" # 可选
|
||
binance_api_secret: "" # 可选
|
||
binance_testnet: false # 是否使用测试网
|
||
```
|
||
|
||
### 2. 策略参数配置
|
||
在 `config/config.yaml` 中配置加密货币策略参数:
|
||
|
||
```yaml
|
||
strategy:
|
||
crypto_kline_pattern:
|
||
enabled: true # 是否启用
|
||
min_entity_ratio: 0.55 # 阳线实体最小占比55%
|
||
final_yang_min_ratio: 0.40 # 突破阳线实体最小占比40%
|
||
max_turnover_ratio: 100.0 # 最大换手率(加密货币较高)
|
||
timeframes: ["4hour", "daily", "weekly"] # 时间周期:4小时、日线、周线
|
||
scan_symbols_count: 100 # 扫描交易对数量
|
||
quote_asset: "USDT" # 计价货币
|
||
min_volume_usdt: 1000000 # 最小24h交易量(美元)
|
||
|
||
# 回踩监控配置
|
||
pullback_tolerance: 0.02 # 回踩容忍度2%
|
||
monitor_days: 30 # 监控天数
|
||
pullback_confirmation_days: 7 # 回踩确认天数
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 方法1: 使用启动脚本(推荐)
|
||
```bash
|
||
# 扫描100个热门交易对
|
||
./start_crypto_scanner.sh
|
||
|
||
# 扫描50个热门交易对
|
||
./start_crypto_scanner.sh 50
|
||
|
||
# 扫描200个热门交易对
|
||
./start_crypto_scanner.sh 200
|
||
```
|
||
|
||
### 方法2: 直接运行Python脚本
|
||
```bash
|
||
# 扫描100个热门交易对(默认)
|
||
python crypto_scanner.py
|
||
|
||
# 扫描指定数量的交易对
|
||
python crypto_scanner.py 50
|
||
```
|
||
|
||
### 方法3: 在代码中使用
|
||
```python
|
||
from src.data.binance_fetcher import BinanceFetcher
|
||
from src.strategy.crypto_kline_pattern_strategy import CryptoKLinePatternStrategy
|
||
from src.utils.notification import NotificationManager
|
||
|
||
# 初始化数据获取器
|
||
data_fetcher = BinanceFetcher()
|
||
|
||
# 初始化策略
|
||
strategy_config = {
|
||
'min_entity_ratio': 0.55,
|
||
'timeframes': ['4hour', 'daily', 'weekly'], # 4小时、日线、周线
|
||
'quote_asset': 'USDT'
|
||
}
|
||
notification_config = {'dingtalk': {'enabled': False}}
|
||
notification_manager = NotificationManager(notification_config)
|
||
|
||
strategy = CryptoKLinePatternStrategy(
|
||
data_fetcher,
|
||
notification_manager,
|
||
strategy_config
|
||
)
|
||
|
||
# 扫描市场
|
||
results = strategy.scan_market(max_symbols=100)
|
||
```
|
||
|
||
## 定时任务配置
|
||
|
||
### 使用crontab定时扫描
|
||
编辑 `crontab/crypto-scanner` 文件已包含预设的定时任务:
|
||
|
||
```bash
|
||
# 每天早上8点扫描
|
||
0 8 * * * root cd /app && python crypto_scanner.py 100
|
||
|
||
# 每天下午4点扫描
|
||
0 16 * * * root cd /app && python crypto_scanner.py 100
|
||
|
||
# 每天晚上12点扫描
|
||
0 0 * * * root cd /app && python crypto_scanner.py 100
|
||
|
||
# 每4小时扫描(适合4小时K线)
|
||
0 */4 * * * root cd /app && python crypto_scanner.py 50
|
||
|
||
# 周日深度扫描
|
||
0 10 * * 0 root cd /app && python crypto_scanner.py 200
|
||
```
|
||
|
||
加载定时任务:
|
||
```bash
|
||
# 在Docker容器中
|
||
crontab crontab/crypto-scanner
|
||
|
||
# 或在本地系统
|
||
crontab -e
|
||
# 然后复制crypto-scanner内容
|
||
```
|
||
|
||
## 策略说明
|
||
|
||
### K线形态识别
|
||
与A股策略相同,识别"两阳线+阴线+突破阳线"形态:
|
||
|
||
1. **基础形态**(前3根K线): 阳线 + 阳线 + 阴线
|
||
2. **前两根阳线**: 实体部分占振幅55%以上
|
||
3. **突破确认**: 第4/5/6根K线中任意一根突破阴线最高价
|
||
4. **突破阳线**: 实体占振幅40%以上,收盘在EMA20上方
|
||
5. **回踩确认**: 价格先创新高,再回踩到阴线最高价附近
|
||
|
||
### 加密货币市场特点
|
||
- **24小时交易**: 没有开盘收盘限制
|
||
- **高波动性**: 换手率阈值设置较高(100%)
|
||
- **支持多周期**: 4小时线(4h)、日线(1d)、周线(1w)
|
||
- **实时数据**: 可以随时获取最新K线数据
|
||
|
||
## 输出结果
|
||
|
||
### 日志文件
|
||
- 位置: `logs/crypto_scanner_YYYY-MM-DD.log`
|
||
- 包含: 详细的扫描过程、信号发现、错误信息
|
||
|
||
### 数据库存储
|
||
扫描结果会自动保存到MySQL数据库:
|
||
- 扫描会话信息
|
||
- 发现的信号详情
|
||
- 形态形成记录
|
||
|
||
### 钉钉通知
|
||
如果配置了钉钉webhook,会自动发送:
|
||
- 信号汇总通知(每10个信号一组)
|
||
- 回踩提醒(每5个提醒一组)
|
||
- 包含交易对、价格、形态类型等关键信息
|
||
|
||
## 常见问题
|
||
|
||
### 1. 如何选择扫描的交易对数量?
|
||
- **日常监控**: 50-100个交易对,速度快
|
||
- **全面扫描**: 100-200个交易对,覆盖更全
|
||
- **深度分析**: 200+个交易对,周末或特殊时段
|
||
|
||
### 2. 需要Binance API密钥吗?
|
||
- **不需要**: 获取K线、ticker等公开数据不需要API密钥
|
||
- **需要**: 如果要查询账户信息、下单等操作才需要
|
||
|
||
### 3. 时间周期如何选择?
|
||
- **weekly(周线)**: 适合长线信号,信号质量最高,趋势更明确
|
||
- **daily(日线)**: 适合中线信号,平衡信号质量和频率
|
||
- **4hour(4小时)**: 适合短线交易,信号更频繁,适合波段操作
|
||
|
||
### 4. 与A股策略有什么区别?
|
||
- **数据源**: Binance API vs Tushare API
|
||
- **交易时间**: 24小时 vs 交易日限制
|
||
- **换手率**: 阈值更高,适应加密货币高波动
|
||
- **计价单位**: USDT/BTC vs 人民币
|
||
|
||
### 5. 如何同时运行A股和加密货币扫描?
|
||
两个脚本独立运行,互不影响:
|
||
```bash
|
||
# A股扫描
|
||
./start_market_scanner.sh 200
|
||
|
||
# 加密货币扫描
|
||
./start_crypto_scanner.sh 100
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **API限制**: Binance对API调用频率有限制,建议控制扫描频率
|
||
2. **网络连接**: 需要稳定的网络连接访问Binance API
|
||
3. **数据准确性**: 加密货币市场波动大,建议结合其他指标综合判断
|
||
4. **风险提示**: 本工具仅用于技术分析,不构成投资建议
|
||
|
||
## 技术架构
|
||
|
||
```
|
||
TradingAI/
|
||
├── src/
|
||
│ ├── data/
|
||
│ │ ├── binance_fetcher.py # Binance数据获取器(新增)
|
||
│ │ └── tushare_fetcher.py # A股数据获取器(原有)
|
||
│ └── strategy/
|
||
│ ├── crypto_kline_pattern_strategy.py # 加密货币策略(新增)
|
||
│ └── kline_pattern_strategy.py # A股策略(原有)
|
||
├── crypto_scanner.py # 加密货币扫描脚本(新增)
|
||
├── market_scanner.py # A股扫描脚本(原有)
|
||
├── start_crypto_scanner.sh # 加密货币启动脚本(新增)
|
||
├── start_market_scanner.sh # A股启动脚本(原有)
|
||
└── crontab/
|
||
├── crypto-scanner # 加密货币定时任务(新增)
|
||
└── market-scanner # A股定时任务(原有)
|
||
```
|
||
|
||
## 更新日志
|
||
|
||
### v1.1.0 (2025-10-12)
|
||
- ✨ 新增Binance数据获取器
|
||
- ✨ 新增加密货币K线形态策略
|
||
- ✨ 新增加密货币市场扫描脚本
|
||
- ✨ 新增定时任务配置
|
||
- 📝 更新配置文件支持加密货币
|
||
- 📝 新增使用文档
|
||
|
||
## 贡献
|
||
|
||
欢迎提交Issue和Pull Request来改进此功能!
|
||
|
||
## 许可
|
||
|
||
与主项目保持一致
|