纯突破量化策略方案
策略名称: 纯突破量化策略
策略类型: 技术突破策略
数据频率: 日频/分钟频
目标市场: A股全市场
开发状态: 方案设计完成,待回测验证
创建时间: 2026-03-27 14:00:00
创建人: 赵云(数据工程将军)
归档目录: /strategies/pure-breakout-20260327/
📁 目录结构
pure-breakout-20260327/
├── README.md # 本说明文件
├── config/ # 配置目录(待创建)
├── data/ # 策略数据目录(待创建)
├── backtest/ # 回测代码目录(待创建)
├── rules/ # 买卖规则目录(待创建)
└── reports/ # 回测报告目录(待创建)
🎯 策略核心思想
1. 突破定义
突破: 价格突破特定阻力位或支撑位,形成新的价格趋势
2. 策略逻辑
- 突破买入: 价格突破阻力位,预期继续上涨
- 规则卖出: 按照预设规则卖出,锁定利润或控制亏损
- 简化规则: 避免复杂的择时和择股逻辑,专注于价格突破
3. 策略特点
- ✅ 纯粹性: 只关注价格突破,不涉及基本面
- ✅ 简单性: 规则明确,易于理解和实现
- ✅ 纪律性: 严格执行买卖规则,避免情绪干扰
- ✅ 可扩展性: 可扩展到多个时间框架和市场
📊 策略逻辑框架
1. 突破信号定义
1.1 价格突破类型
A. 新高突破 (New High Breakout)
- 价格突破N日最高价
- 动量强劲,趋势明显
B. 震荡突破 (Consolidation Breakout)
- 价格突破震荡区间
- 蓄势后突破,持续性较好
C. 颈线突破 (Neckline Breakout)
- 价格突破技术形态颈线
- 形态突破,信号可靠
1.2 成交量确认
- 突破时成交量 > 平均成交量 × 1.5
- 避免假突破: 成交量配合验证
2. 买入规则
2.1 突破条件
# 突破信号条件
def breakout_signal(stock_data: pd.DataFrame) -> bool:
"""判断是否出现突破信号"""
# 1. 价格突破N日最高价
price_breakout = (
stock_data['close'].iloc[-1] >
stock_data['high'].rolling(window=N).max().iloc[-2]
)
# 2. 成交量确认
volume_confirmation = (
stock_data['volume'].iloc[-1] >
stock_data['volume'].rolling(window=20).mean().iloc[-1] * 1.5
)
# 3. 波动率确认(避免窄幅震荡)
volatility_ok = (
stock_data['close'].pct_change().rolling(window=10).std().iloc[-1] > 0.02
)
return price_breakout and volume_confirmation and volatility_ok
2.2 买入时机
- 突破当日收盘价买入
- 或 突破次日开盘价买入(确认突破有效性)
3. 卖出规则
3.1 止盈规则
# 止盈规则
def take_profit(stock_data: pd.DataFrame, buy_price: float) -> bool:
"""判断是否满足止盈条件"""
# 1. 固定百分比止盈
profit_target = buy_price * (1 + profit_percentage)
current_price = stock_data['close'].iloc[-1]
# 2. 动态止盈(移动止损)
if dynamic_stop_loss_enabled:
highest_price_since_buy = stock_data.loc[buy_date:]['close'].max()
dynamic_stop_price = highest_price_since_buy * (1 - trailing_stop_pct)
if current_price <= dynamic_stop_price:
return True # 动态止盈
# 3. 时间止盈(最大持仓时间)
if max_holding_days is not None:
days_held = (current_date - buy_date).days
if days_held >= max_holding_days:
return True # 时间止盈
return current_price >= profit_target
3.2 止损规则
# 止损规则
def stop_loss(stock_data: pd.DataFrame, buy_price: float) -> bool:
"""判断是否满足止损条件"""
current_price = stock_data['close'].iloc[-1]
# 1. 固定百分比止损
if current_price <= buy_price * (1 - stop_loss_percentage):
return True # 固定止损
# 2. 移动止损
if moving_stop_loss_enabled:
highest_price_since_buy = stock_data.loc[buy_date:]['close'].max()
moving_stop_price = highest_price_since_buy * (1 - moving_stop_pct)
if current_price <= moving_stop_price:
return True # 移动止损
return False
3.3 强制卖出规则
- 最大持仓天数: 超过设定天数强制卖出
- 跌破重要均线: 价格跌破关键均线(如20日线)
- 成交量异常萎缩: 突破后成交量持续低于平均
4. 仓位管理
4.1 初始仓位
- 单笔买入金额: 固定金额或总资金比例
- 最大持仓股票数: 控制组合分散度
4.2 加仓规则
- 突破确认加仓: 突破后回踩不破前高,加仓
- 金字塔加仓: 每上涨一定幅度,加仓一定比例
4.3 减仓规则
- 部分止盈: 达到一定涨幅,减仓部分
- 风险控制: 市场环境恶化,主动减仓
🔧 参数配置
1. 突破参数
# configs/breakout_config.yaml
breakout:
# 突破周期参数
breakout_periods:
short_term: 20 # 20日突破
medium_term: 55 # 55日突破
long_term: 120 # 120日突破
# 价格突破参数
price_breakout:
# 突破幅度要求
breakout_percentage: 0.02 # 2%突破幅度
# 突破确认
confirmation_days: 1 # 1日确认
confirmation_percentage: 0.01 # 1%确认幅度
# 成交量确认参数
volume_confirmation:
min_volume_ratio: 1.5 # 突破日成交量 > 平均成交量 × 1.5
volume_period: 20 # 20日均量作为基准
# 波动率过滤
volatility_filter:
min_volatility: 0.02 # 最小波动率2%
volatility_period: 10 # 10日波动率
2. 买卖规则参数
# configs/trading_rules_config.yaml
trading_rules:
# 买入规则
buy_rules:
# 买入时机
buy_timing: "close" # close:突破日收盘价买入 | open:突破次日开盘价买入
# 买入确认
confirmation_required: true
confirmation_days: 1
confirmation_percentage: 0.01
# 卖出规则
sell_rules:
# 止盈规则
take_profit:
fixed_percentage: 0.20 # 固定止盈20%
dynamic_enabled: true # 启用动态止盈
trailing_stop_percentage: 0.10 # 10%移动止损
# 止损规则
stop_loss:
fixed_percentage: 0.10 # 固定止损10%
moving_enabled: true # 启用移动止损
moving_percentage: 0.08 # 8%移动止损
# 强制卖出规则
force_sell:
max_holding_days: 60 # 最大持仓60天
ma_break_period: 20 # 20日均线跌破卖出
volume_drop_ratio: 0.5 # 成交量低于均量50%卖出
# 仓位管理
position_management:
# 初始仓位
initial_position:
percentage: 0.02 # 单只股票初始仓位2%
max_position: 0.10 # 单只股票最大仓位10%
# 加仓规则
add_position:
enabled: true
add_price_increase: 0.10 # 上涨10%加仓
add_amount_percentage: 0.01 # 每次加仓1%
# 减仓规则
reduce_position:
partial_take_profit: true
partial_percentage: 0.50 # 部分止盈时减仓50%
3. 风险控制参数
# configs/risk_config.yaml
risk_control:
# 市场风险
market_risk:
stop_all_if_market_down: true
market_down_threshold: -0.05 # 市场下跌5%暂停买入
max_exposure_in_down_market: 0.50 # 下跌市场中最大暴露50%
# 个股风险
stock_risk:
max_position_per_stock: 0.10 # 单只股票最大持仓10%
max_industry_exposure: 0.30 # 单个行业最大暴露30%
# 组合风险
portfolio_risk:
max_correlation: 0.70 # 最大相关性70%
diversification_score: 0.50 # 最小分散度得分0.50
🏗️ 技术实现框架
1. 策略引擎设计
1.1 突破检测器
class BreakoutDetector:
"""突破信号检测器"""
def __init__(self, config: Dict):
self.config = config
def detect_breakout(self, stock_data: pd.DataFrame) -> Optional[BreakoutSignal]:
"""检测突破信号"""
# 检测各类突破信号
pass
def confirm_breakout(self, breakout_signal: BreakoutSignal) -> bool:
"""确认突破有效性"""
pass
1.2 信号生成器
class SignalGenerator:
"""交易信号生成器"""
def __init__(self, breakout_detector: BreakoutDetector):
self.breakout_detector = breakout_detector
def generate_buy_signals(self, market_data: Dict) -> List[BuySignal]:
"""生成买入信号"""
pass
def generate_sell_signals(self, portfolio: Portfolio) -> List[SellSignal]:
"""生成卖出信号"""
pass
1.3 交易执行器
class TradeExecutor:
"""交易执行器"""
def __init__(self, position_manager: PositionManager):
self.position_manager = position_manager
def execute_buy(self, buy_signal: BuySignal) -> TradeRecord:
"""执行买入交易"""
pass
def execute_sell(self, sell_signal: SellSignal) -> TradeRecord:
"""执行卖出交易"""
pass
2. 数据处理模块
2.1 价格数据处理
- 复权价格计算
- 技术指标计算(均线、布林带等)
- 价格模式识别
2.2 成交量分析
- 成交量均线计算
- 成交量比率分析
- 量价关系验证
2.3 突破信号识别
- 价格突破识别
- 成交量确认
- 模式匹配
3. 回测系统设计
3.1 数据模块
- 历史价格数据获取
- 交易成本模拟
- 市场环境模拟
3.2 策略模块
- 突破信号检测
- 买卖规则执行
- 仓位管理
3.3 绩效模块
- 收益风险计算
- 回撤分析
- 交易统计
3.4 报告模块
- 绩效报告生成
- 图表可视化
- 结果分析
📈 回测设计
1. 回测周期
- 训练期: 2015-01-01 至 2017-12-31 (3年)
- 验证期: 2018-01-01 至 2020-12-31 (3年)
- 测试期: 2021-01-01 至 2024-12-31 (4年)
- 实盘模拟: 2025-01-01 至今
2. 回测参数
- 初始资金: 1000万元
- 交易成本: 双边0.15% (印花税+佣金)
- 滑点: 0.1%
- 调仓频率: 日频(信号触发时交易)
- 股票池: A股全市场(流动性筛选)
3. 绩效指标
-
收益指标: 年化收益率、累计收益率、超额收益
-
风险指标: 年化波动率、最大回撤、夏普比率
-
交易指标: 胜率、盈亏比、平均持仓时间
-
组合指标: 信息比率、跟踪误差、Beta系数
🎯 策略优势与风险
✅ 策略优势
1. 逻辑简单清晰
-
只关注价格突破,容易理解和实现
-
规则明确,易于执行和监控
2. 执行纪律性强
-
明确的买卖规则,避免情绪干扰
-
严格的风险控制,限制亏损
3. 适应性强
-
可应用于不同市场和品种
-
可扩展到不同时间框架
4. 可解释性好
-
突破信号直观,易于解释
-
交易决策透明,便于优化
⚠️ 策略风险
1. 假突破风险
-
价格突破后迅速回落,造成亏损
-
需要结合成交量和其他确认信号
2. 市场环境风险
-
震荡市易产生假突破
-
趋势转换期信号失效
3. 交易成本影响
-
频繁交易积累交易成本
-
滑点影响实际收益率
4. 流动性风险
-
小市值股票流动性不足
-
突破时成交量不足影响执行
🔧 风险控制措施
1. 假突破过滤
-
成交量确认(突破日成交量 > 平均成交量 × 1.5)
-
波动率过滤(避免窄幅震荡突破)
-
等待确认(突破后等待1-2日确认)
2. 仓位控制
-
单只股票最大仓位控制(通常5-10%)
-
行业集中度限制
-
市场风险暴露管理
3. 交易执行优化
-
分批执行,减少市场冲击
-
价格滑点控制
-
交易时机优化
🚀 开发计划
阶段1: 数据准备 (1周)
- ✅ A股日线数据准备(已完成)
- 🔄 分钟数据采集(赵云负责,进行中)
- ⏳ 突破信号数据计算
阶段2: 策略实现 (2周)
- ⏳ 突破信号检测器开发
- ⏳ 买卖规则引擎实现
- ⏳ 仓位管理系统开发
阶段3: 回测验证 (2周)
- ⏳ 回测框架搭建
- ⏳ 参数优化测试
- ⏳ 绩效分析验证
阶段4: 实盘准备 (1周)
- ⏳ 交易接口对接
- ⏳ 监控系统开发
- ⏳ 风险管理系统实现
📋 实施建议
1. 开发优先级
- 突破信号检测器 - 核心模块,优先开发
- 买卖规则引擎 - 策略执行,优先级高
- 仓位管理系统 - 风险控制,优先级中
- 绩效分析模块 - 回测验证,优先级中
2. 测试策略
- 单元测试 - 各模块单独测试
- 集成测试 - 模块间联合测试
- 回测验证 - 历史数据回测验证
- 实盘模拟 - 模拟实盘环境测试
3. 优化建议
- 参数优化 - 基于历史数据进行参数优化
- 规则完善 - 根据回测结果优化买卖规则
- 风控加强 - 强化风险控制和仓位管理
- 绩效改进 - 持续优化策略绩效
👥 团队分工建议
| 角色 | 负责人 | 主要任务 |
|---|---|---|
| 策略设计 | 待定 | 突破规则设计、买卖规则优化 |
| 技术实现 | 赵云 | 数据准备、信号检测、回测框架 |
| 回测验证 | 待定 | 参数优化、绩效分析、风险测试 |
| 实盘对接 | 待定 | 交易接口、监控系统、风险管理 |
📝 存档说明
存档完成时间: 2026-03-27 14:15:00
创建人: 赵云(数据工程将军)
存档类型: 纯技术突破策略方案
当前状态:
- ✅ 策略逻辑设计完成
- ✅ 参数配置框架建立
- ✅ 技术架构设计完成
- 🔄 数据准备进行中
- ⏳ 开发实现待开始
常山赵子龙,纯突破策略方案存档完成! 🐎⚔️🚀
策略核心: 简单、纯粹、纪律的突破交易系统
开发状态: 方案设计完成,等待回测验证和开发实现