核心理念: 在A股市场,利用15分钟K线捕捉短期趋势,通过动态筛选最适合该策略的活跃品种,结合严格的风险管理和自动化交易,实现持续盈利。
完整框架:
+-------------------------+ +-------------------------+ +------------------------------+
| 1. 数据获取与处理 | ---> | 2. 策略逻辑设计 | ---> | 3. 选股/品种选择 (实盘核心) |
| (Data Acquisition) | | (Strategy Logic) | | (Universe Selection - Live)|
+-------------------------+ +-------------------------+ +------------------------------+
| |
| V
+-------------------------+ +-------------------------+ +-------------------------+
| 6. 回测框架 | <--- | 5. 投资组合构建与风控 | <--- | 4. 动态监控与过滤 |
| (Backtesting) | | (Portfolio & Risk Mgmt)| | (Dynamic Monitoring) |
+-------------------------+ +-------------------------+ +-------------------------+
|
V
+-------------------------+
| 7. 交易执行系统 |
| (Trading Execution) |
+-------------------------+
|
V
+-------------------------+
| 8. 监控与持续优化 |
| (Monitoring & Opt.) |
+-------------------------+
详细设计:
1. 数据获取与处理 (Data Acquisition & Processing)
- 数据源: 可靠的金融数据服务商 (Wind, Choice, Tushare Pro, JoinQuant, RiceQuant等) 或券商API。
- 所需数据:
- 核心: A股个股 15分钟 K线 (OHLCV),至少覆盖3-5年历史。
- 选股用:
- 日 K线数据 (用于计算中长期指标、波动率、流动性)。
- 个股基础信息 (上市日期、行业、市值、是否ST/*ST)。
- 财务简要 (如 PE, PB - 可选,用于排除极端估值)。
- 股东信息 (如限售解禁日期 - 可选,用于规避风险)。
- 辅助: 复权因子、交易日历、指数行情。
- 数据处理: 清洗、前复权处理、高效存储 (数据库/HDF5)、指标预计算。
2. 策略逻辑设计 (Strategy Logic Design)
- 趋势识别: (同前) 双均线交叉 (如EMA10/EMA30)、MACD信号、布林带突破、通道突破 (如Donchian 20周期)、ADX > 25 且 +DI > -DI 等,或其组合。
- 入场信号: 满足趋势识别条件 + 可选过滤 (如成交量放大、大盘指数位于均线上方)。
- 出场信号:
- 核心止损: ATR 止损 (如买入价 - 2 * ATR 或 K线最低价 - 1.5 * ATR)。
- 核心跟踪止损: ATR 跟踪止损 (如
max(前期跟踪止损位, 当前最高价 - 2.5 * ATR)
)。 这是让利润奔跑的关键。 - 趋势反转信号: 如 短均线下穿长均线 作为辅助离场信号。
- 时间止损: (可选)持有超过 N 根 K线未有进展则离场。
- A股特性考虑: T+1、涨跌停处理(回测模拟撮合,实盘订单管理)。
3. 选股/品种选择 (Universe Selection - 实盘核心)
-
目标: 动态筛选出当前阶段流动性好、波动适中、可能更容易产生15分钟级别趋势的股票池,作为策略信号的触发范围。此过程需自动化,并在实盘中定期执行。
-
执行频率: 建议每日开盘前执行一次,或每周最后一个交易日收盘后执行一次,生成下一个交易日/周的股票池。过于频繁(如盘中)可能引入过多噪音且增加复杂度。
-
流程设计:
-
步骤一:基础池筛选 (静态/半静态,频率较低,如每月或每季更新)
- 市场范围: 如沪深主板、创业板、科创板 (根据策略适应性选择)。
- *剔除ST/ST: 排除风险警示股票。
- 剔除上市时间过短: 如上市不足 6 个月。
- 剔除长期低流动性: 如过去 60 个交易日日均成交额低于 5000 万 或 1 亿元人民币。
- 剔除特定行业(可选): 如果策略在某些行业表现不佳(如银行、公用事业波动小),可以剔除。
- 产出:一个相对稳定的基础股票池。
-
步骤二:动态活跃池筛选 (核心,频率较高,如每日开盘前)
- 输入: 基础股票池。
- 筛选指标 (针对15分钟趋势策略):
- 近期流动性 (关键):
- 计算过去 N (如 5-10) 个交易日的日均成交额。设定阈值 (如 > 2 亿元)。
- 计算过去 M (如 1-3) 个交易日的15分钟平均成交量/额。确保短周期也有足够的交易活动。
- 近期波动率 (关键):
- 计算基于日线数据的 ATR (平均真实波幅) 的百分比 (
ATR / Close
),衡量相对波动。 - 计算过去 P (如 10-20) 根 15分钟 K 线的 ATR。
- 目标:选择波动率适中偏上的股票。波动太小没趋势,波动异常大(如连续一字板后开板)风险高。可以设定一个ATR百分比范围 (如 日线 ATR% 在 1.5% - 7% 之间)。
- 计算基于日线数据的 ATR (平均真实波幅) 的百分比 (
- 短期趋势/动量 (辅助):
- 日线级别:价格位于 N 日均线 (如 MA20) 之上。
- ADX (日线):ADX > 20 或 25,表明可能处于趋势中。
- 近期涨跌幅 (如 5日/10日 收益率) 为正。
- 近期流动性 (关键):
- 排名与选择:
- 对基础池中的股票,计算上述动态指标。
- 可以给每个指标打分并加权,得到一个综合“活跃度/趋势潜力”得分。例如:
Score = 0.4*Norm(流动性) + 0.4*Norm(波动率) + 0.2*Norm(趋势动量)
(权重可调整优化)。 - 按得分从高到低排序。
- 选择排名前 N 只 (如 Top 50 或 Top 100) 的股票,形成当日/本周的交易标的池 (Active Pool)。
- 产出:一个规模较小、动态更新的、适合策略运行的股票列表。
-
-
实盘整合:
- 选股程序作为独立模块,按设定频率运行,生成最新的
active_pool.txt
或存入数据库。 - 主交易策略程序在每日初始化时加载这个最新的
active_pool
。 - 策略引擎只监控和处理
active_pool
中股票的15分钟行情数据,并只对这些股票产生交易信号。
- 选股程序作为独立模块,按设定频率运行,生成最新的
4. 动态监控与过滤 (与选股配合)
- 盘中实时过滤:
- 涨跌停过滤: 如果股票已涨停,取消新的买入信号;如果已跌停,取消新的卖出信号(或尝试排队)。
- 流动性突降: (可选,较复杂)如果某只股票盘中流动性突然枯竭(如连续多根15分钟K线成交稀疏),可以临时暂停对其发出新信号。
- 临时黑名单: 对于盘中发布重大利空消息、收到监管函、或即将除权除息影响较大的股票,可以手动或通过特定数据源接口加入临时禁止交易列表。
5. 投资组合构建与风控 (Portfolio Construction & Risk Management)
- 资金分配:
- 核心原则: 基于单笔风险控制头寸。
- 计算公式:
头寸股数 = (总权益 * 单笔风险百分比 R%) / (入场价 - 初始止损价)
。R% 通常设为 0.5% - 2%。 - 波动率调整 (推荐):
头寸股数 = (总权益 * 单笔风险百分比 R%) / (N * ATR)
(使用入场时的ATR)。N通常为2-3。这使得每笔交易的初始风险大致相当。
- 组合层风控:
- 最大持仓数量: 限制同时持有的股票不超过 M 只 (如 5-15 只)。
- 单票最大仓位: 单只股票市值不超过总权益的 X% (如 10% 或 15%)。
- 总风险敞口: 所有持仓的(初始风险之和)或(当前价值 - 跟踪止损价)之和,不超过总权益的 Y% (如 10%)。
- 行业/风格分散 (可选): 尽量避免持仓过度集中于同一行业。
- 信号优先级: 当资金不足以响应所有买入信号时:
- 按信号强度排序(如MACD柱状线高度、突破幅度)。
- 按选股排名排序(优先买入活跃度/趋势潜力得分高的)。
- 随机选择。
6. 回测框架 (Backtesting Framework)
- 引擎: Backtrader, Zipline, vn.py, 在线平台, 自建。
- 关键设置:
- 严格模拟选股: 回测时必须模拟每日/每周的选股过程,使用当时的历史数据进行筛选,避免未来函数。
- 精确成本模拟: 手续费 (双边万2.5左右)、印花税 (卖出千1)、滑点 (15分钟级别至少模拟1-2个最小价格变动单位,或按成交量比例模拟)。
- T+1 限制: 严格遵守。
- 涨跌停无法成交模拟: 必须加入。
- 分红配股处理: 基于复权因子调整持仓成本和数量。
- 评估指标: (同前) 年化收益、夏普、索提诺、最大回撤、卡玛、胜率、盈亏比、持仓周期、交易频率。重点关注回撤控制和收益稳定性。
- 健壮性检验: (同前) 样本外、参数敏感性、蒙特卡洛。
7. 交易执行系统 (Trading Execution)
- 自动化: 必须自动化。
- 技术方案: 券商API (NATP, XTP, CTP) + 交易平台 (vn.py 或 自建系统)。
- 订单管理:
- 订单类型: 考虑使用限价单并进行追价/超价以提高成交率,同时控制滑点。例如,买入时以
盘口卖一价 + N * 最小变动单位
下单,卖出时以盘口买一价 - N * 最小变动单位
下单。N需要测试平衡成交率和成本。 - 撤单逻辑: 对于未能立即成交的限价单,设定超时撤单或价格偏离过大时撤单重发机制。
- 状态监控 & 异常处理: (同前)
- 订单类型: 考虑使用限价单并进行追价/超价以提高成交率,同时控制滑点。例如,买入时以
- 部署: 稳定、低延迟的服务器。
8. 监控与持续优化 (Monitoring & Optimization)
- 实时监控: (同前) 系统、账户、信号、风控指标、报警。特别关注选股池的变化和实际成交滑点。
- 绩效归因: 定期分析盈利和亏损来源。哪些股票/行业贡献最大?选股模块是否有效?止损/止盈设置是否合理?
- 策略迭代:
- 根据实盘反馈调整选股指标和阈值。
- 优化策略参数 (均线周期、ATR倍数等),但避免过度拟合。
- 审视风险管理规则是否需要调整。
- 适应市场风格变化,可能需要调整策略逻辑或增加过滤条件。
总结:
这个强化的框架将“选股”提升到了一个动态、核心的地位。对于A股的15分钟趋势跟踪策略,能否持续找到适合趋势交易的活跃品种,是策略成败的关键之一。实盘中,这个选股模块需要和交易执行、风险管理紧密结合,并能够根据市场反馈进行调整优化。