纯突破策略数据目录
📊 数据需求说明
1. 核心数据需求
1.1 行情数据
- 数据源: AKShare/Tushare/聚宽
- 时间范围: 2015-01-01 至 2026-03-27
- 覆盖范围: 全市场A股(流动性筛选后)
- 数据频率: 日频(突破检测)+ 分钟频(信号确认)
- 数据字段:
- 开高低收价格
- 成交量、成交额
- 复权因子
- 涨跌幅
1.2 技术指标数据
- 移动平均线: 5日、10日、20日、60日、200日
- 布林带: 20日布林带(上轨、中轨、下轨)
- 相对强弱指数: RSI(14)
- 成交量指标: 成交量均线、成交量比率
1.3 突破信号数据
- 价格突破: N日新高、N日新低
- 成交量突破: 成交量异常放大
- 技术形态: 头肩顶、双底、三角形等
2. 数据目录结构
data/
├── raw/ # 原始数据
│ ├── daily/ # 日线数据
│ │ ├── 2015/
│ │ ├── 2016/
│ │ └── ... 按年份分区
│ ├── minute/ # 分钟数据(赵云负责)
│ │ ├── 1min/
│ │ ├── 5min/
│ │ └── 15min/
│ └── financial/ # 财务数据(用于过滤)
│ ├── balance_sheet/
│ ├── income_statement/
│ └── cash_flow/
├── processed/ # 处理后的数据
│ ├── indicators/ # 技术指标
│ │ ├── moving_averages/
│ │ ├── bollinger_bands/
│ │ └── oscillators/
│ ├── breakout_signals/ # 突破信号
│ │ ├── new_high_breakouts/
│ │ ├── range_breakouts/
│ │ └── pattern_breakouts/
│ └── trading_signals/ # 交易信号
│ ├── buy_signals/
│ ├── sell_signals/
│ └── position_signals/
├── intermediate/ # 中间数据
│ ├── cleaned/ # 清洗后的数据
│ ├── normalized/ # 标准化数据
│ └── aggregated/ # 聚合数据
└── metadata/ # 元数据
├── stock_list.json # 股票列表
├── industry_classification.json # 行业分类
└── data_quality_report.json # 数据质量报告
3. 数据质量要求
3.1 完整性要求
- 交易日连续性: 不缺失交易日数据
- 股票代码完整性: 全市场股票覆盖
- 数据字段完整性: 必需字段不缺失
3.2 准确性要求
- 价格逻辑检查: 开<高>低<收
- 成交量一致性: 成交额 ≈ 成交量 × 价格
- 财务数据一致性: 三表勾稽关系
3.3 时效性要求
- 日线数据: 当日18:00前更新
- 分钟数据: 实时采集(赵云负责)
- 突破信号: 每日收盘后计算
3.4 数据清洗规则
# data/cleaner.py
class DataCleaner:
"""数据清洗器"""
def clean_price_data(self, df: pd.DataFrame) -> pd.DataFrame:
"""清洗价格数据"""
# 1. 处理缺失值
df = df.fillna(method='ffill')
# 2. 价格逻辑检查
df = df[(df['high'] >= df['low']) &
(df['high'] >= df['close']) &
(df['low'] <= df['close'])]
# 3. 异常值处理
price_changes = df['close'].pct_change()
df = df[price_changes.abs() < 0.20] # 过滤单日涨跌超过20%
# 4. 成交量异常处理
volume_ratio = df['volume'] / df['volume'].rolling(20).mean()
df = df[volume_ratio < 10] # 过滤异常成交量
return df
def check_data_quality(self, df: pd.DataFrame) -> Dict:
"""检查数据质量"""
quality_report = {
'completeness': self._check_completeness(df),
'consistency': self._check_consistency(df),
'accuracy': self._check_accuracy(df),
'timeliness': self._check_timeliness(df)
}
return quality_report
4. 数据处理流程
4.1 数据获取流程
# data/acquisition.py
class DataAcquisition:
"""数据获取模块"""
def fetch_daily_data(self, date: str) -> pd.DataFrame:
"""获取日线数据"""
# 从数据源获取数据
pass
def fetch_minute_data(self, stock_code: str, timeframe: str) -> pd.DataFrame:
"""获取分钟数据"""
# 赵云负责的分钟数据采集
pass
def update_data(self, data_type: str) -> None:
"""更新数据"""
# 定时更新数据
pass
4.2 技术指标计算
# data/indicators.py
class TechnicalIndicators:
"""技术指标计算"""
def calculate_moving_averages(self, df: pd.DataFrame) -> pd.DataFrame:
"""计算移动平均线"""
df['ma5'] = df['close'].rolling(window=5).mean()
df['ma10'] = df['close'].rolling(window=10).mean()
df['ma20'] = df['close'].rolling(window=20).mean()
df['ma60'] = df['close'].rolling(window=60).mean()
df['ma200'] = df['close'].rolling(window=200).mean()
return df
def calculate_bollinger_bands(self, df: pd.DataFrame) -> pd.DataFrame:
"""计算布林带"""
df['bb_middle'] = df['close'].rolling(window=20).mean()
df['bb_std'] = df['close'].rolling(window=20).std()
df['bb_upper'] = df['bb_middle'] + 2 * df['bb_std']
df['bb_lower'] = df['bb_middle'] - 2 * df['bb_std']
return df
def calculate_rsi(self, df: pd.DataFrame, period: int = 14) -> pd.DataFrame:
"""计算RSI"""
delta = df['close'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
rs = gain / loss
df['rsi'] = 100 - (100 / (1 + rs))
return df
4.3 突破信号检测
# data/breakout_detector.py
class BreakoutDetector:
"""突破信号检测"""
def detect_new_high_breakouts(self, df: pd.DataFrame, period: int = 55) -> pd.DataFrame:
"""检测新高突破"""
df['new_high'] = df['close'] > df['high'].rolling(window=period).max().shift(1)
return df
def detect_range_breakouts(self, df: pd.DataFrame, range_period: int = 20) -> pd.DataFrame:
"""检测区间突破"""
# 计算区间
df['range_high'] = df['high'].rolling(window=range_period).max()
df['range_low'] = df['low'].rolling(window=range_period).min()
# 检测突破
df['range_breakout_up'] = df['close'] > df['range_high'].shift(1)
df['range_breakout_down'] = df['close'] < df['range_low'].shift(1)
return df
def detect_volume_breakouts(self, df: pd.DataFrame) -> pd.DataFrame:
"""检测成交量突破"""
df['avg_volume'] = df['volume'].rolling(window=20).mean()
df['volume_breakout'] = df['volume'] > df['avg_volume'] * 1.5
return df
5. 数据存储策略
5.1 存储格式
- Parquet格式: 列式存储,高压缩比
- 分区存储: 按年份、股票代码分区
- 压缩算法: Snappy或Zstd压缩
5.2 存储优化
# data/storage.py
class DataStorage:
"""数据存储管理"""
def save_to_parquet(self, df: pd.DataFrame, path: str) -> None:
"""保存为Parquet格式"""
df.to_parquet(
path,
engine='pyarrow',
compression='snappy',
index=False
)
def load_from_parquet(self, path: str) -> pd.DataFrame:
"""从Parquet加载"""
return pd.read_parquet(path)
def optimize_storage(self, data_dir: str) -> None:
"""优化存储结构"""
# 合并小文件
# 重新分区
# 清理临时文件
pass
6. 数据API接口
6.1 数据查询接口
# api/data_api.py
class DataAPI:
"""数据API接口"""
def get_stock_data(self, stock_code: str, start_date: str, end_date: str) -> pd.DataFrame:
"""获取股票数据"""
pass
def get_breakout_signals(self, date: str) -> pd.DataFrame:
"""获取突破信号"""
pass
def get_market_status(self) -> Dict:
"""获取市场状态"""
pass
def get_indicators(self, stock_code: str, indicator_type: str) -> pd.DataFrame:
"""获取技术指标"""
pass
6.2 实时数据流
# api/streaming.py
class DataStreaming:
"""实时数据流"""
def stream_market_data(self, callback):
"""流式传输市场数据"""
pass
def stream_breakout_signals(self, callback):
"""流式传输突破信号"""
pass
def stream_trading_signals(self, callback):
"""流式传输交易信号"""
pass
7. 数据监控
7.1 数据质量监控
# monitoring/data_monitor.py
class DataMonitor:
"""数据监控"""
def monitor_data_quality(self) -> Dict:
"""监控数据质量"""
quality_metrics = {
'completeness': self._check_data_completeness(),
'timeliness': self._check_data_timeliness(),
'accuracy': self._check_data_accuracy(),
'consistency': self._check_data_consistency()
}
return quality_metrics
def alert_on_data_issues(self, issues: List[str]) -> None:
"""数据问题告警"""
for issue in issues:
self._send_alert(f"数据问题: {issue}")
7.2 性能监控
# monitoring/performance_monitor.py
class PerformanceMonitor:
"""性能监控"""
def monitor_query_performance(self) -> Dict:
"""监控查询性能"""
pass
def monitor_storage_performance(self) -> Dict:
"""监控存储性能"""
pass
def monitor_processing_performance(self) -> Dict:
"""监控处理性能"""
pass
8. 当前状态
✅ 已完成
- 数据需求分析
- 数据目录结构设计
- 数据清洗规则设计
🔄 进行中 (赵云负责)
- 分钟数据采集(正在运行)
- 日线数据整理
- 技术指标计算
⏳ 待开始
- 突破信号数据计算
- 数据API开发
- 数据监控系统
9. 联系人
数据负责人: 赵云(数据工程将军)
当前任务: 分钟数据采集、技术指标计算
联系方式: 通过庞统副军师协调
数据更新时间: 2026-03-27
数据状态: 分钟数据采集进行中,日线数据准备就绪