📑 查看全课大纲(第 28 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 38.量化系统的完整研发和系统搭建
完整策略介绍-基础策略
约 20 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
完整策略架构设计:双均线基础策略搭建
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在深入理解了风控止损与 CPR 仓位管理模型的理论之后,我们需要将其整合进一个标准化的量化策略工程底座中。在工业量化研发中,构建策略绝不能一蹴而就写出庞大繁杂的代码,而是必须遵循**“先搭建简洁可跑的基准(Baseline),再插拔式叠加风控与仓位模块进行渐进优化”** 的科学工程方法。
本讲系统介绍一个工业级量化策略的标准代码骨架(初始化配置、盘前准备、盘中撮合、盘后结算);以上证 50 指数成分股为标的池、MA10/MA30 为择时信号,构建极简的双均线基准策略(Baseline);并为下一讲的分步渐进优化提供严格的对照基准。
💡 核心导读
- 一个完整量化交易系统的五大基础要素:
- 双均线基准策略(Baseline Strategy)设计规范:
- 股票池(Market Universe):上证 50 指数成分股(精选蓝筹龙头,流动性充裕);
- 择时信号引擎(Timing Signal):
- 快线 MA10 与 慢线 MA30(日 K 级别);
- 金叉买入:MA10 上穿 MA30 时发出买入信号;
- 死叉卖出:MA10 下穿 MA30 时发出清仓信号;
- 初始仓位模型:模型 2 等价值均仓分配(Equal Value Units);
- 基准对照组:沪深 300 指数(
000300.XSHG)。
- 标准量化策略生命周期函数接口:
initialize(context):策略上线与回测启动时触发,配置基准指数、手续费佣金(如万三佣金 + 万五印花税)与定时任务映射;before_market_open(context):每日 09:15 盘前触发,扫描股票池与成分股变动;market_open(context):每日 09:30 盘中触发,执行金叉开仓与死叉平仓撮合;after_market_close(context):每日 15:00 盘后触发,结算账户净值并输出运行日志。
┌─────────────────────────────────────────────────────────────┐
│ 量化策略生命周期与执行流图 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ initialize │ │ market_open │ │ after_market │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│ • 设定基准指数 │ │ • 遍历持仓股 │ │ • 每日收盘结算 │
│ • 配置万三佣金 │ │ • MA10 死叉卖出 │ │ • 核算总资产净值 │
│ • 注册定时调度 │ │ • MA10 金叉买入 │ │ • 记录策略回测日志│
└──────────────────┘ └──────────────────┘ └──────────────────┘一、双均线基础策略的优缺点剖析
双均线(如 MA10 / MA30)是趋势跟踪策略中最经典的代表:
- 核心优势:在单边波澜壮阔的大牛市中,能够牢牢抓住主升浪,胜率不高但单笔盈亏比极高;
- 致命弱点:在无明确趋势的宽幅震荡市或横盘行情中,快慢均线频繁缠绕死叉,会产生密集的虚假交易信号,导致”买在山顶、割在山底”的反复频繁摩擦亏损。
二、基准策略核心代码实现
在标准量化回测框架中,开盘交易核心逻辑如下:
def market_open(context):
for stock in g.stocks:
# 获取历史收盘价
close_data = attribute_history(stock, g.long_window + 5, '1d', ['close'])
# 数据长度校验: 新股上市或长期停牌导致历史数据不足慢线窗口时, 跳过本标的
if len(close_data) < g.long_window:
continue
ma_short = close_data['close'][-g.short_window:].mean()
ma_long = close_data['close'][-g.long_window:].mean()
# 死叉清仓
if ma_short < ma_long and stock in context.portfolio.positions:
order_target(stock, 0)
# 金叉买入
elif ma_short > ma_long and stock not in context.portfolio.positions:
order_value(stock, g.cash_per_stock)📝 动手练一练
下面我们用 Python 编写一段 双均线基准策略模拟引擎,演示当快线 MA10 上穿与下穿慢线 MA30 时,系统如何自动判定金叉买入与死叉平仓:
import pandas as pd
import numpy as np
def run_dual_ma_baseline(prices_df, short_win=10, long_win=30):
"""
双均线基准策略 (Baseline Strategy):
1. 计算 MA10 (快线) 与 MA30 (慢线)
2. MA10 上穿 MA30 产生金叉买入信号
3. MA10 下穿 MA30 产生死叉卖出信号
"""
df = prices_df.copy()
df['MA_Fast'] = df['close'].rolling(short_win).mean()
df['MA_Slow'] = df['close'].rolling(long_win).mean()
# 判定交叉边沿
df['Golden_Cross'] = (df['MA_Fast'] > df['MA_Slow']) & (df['MA_Fast'].shift(1) <= df['MA_Slow'].shift(1))
df['Death_Cross'] = (df['MA_Fast'] < df['MA_Slow']) & (df['MA_Fast'].shift(1) >= df['MA_Slow'].shift(1))
return df
def test_baseline_run():
np.random.seed(16)
dates = pd.date_range("2023-01-01", periods=35, freq="B")
# 模拟价格先震荡后走出明显牛市波段
base = 10.0 + np.cumsum(np.random.normal(0.08, 0.2, 35))
df = pd.DataFrame({'close': base}, index=dates)
res = run_dual_ma_baseline(df, short_win=5, long_win=15)
print("================ 双均线基准策略 (Baseline) 信号输出 ================")
crosses = res[res['Golden_Cross'] | res['Death_Cross']]
print(crosses[['close', 'MA_Fast', 'MA_Slow', 'Golden_Cross', 'Death_Cross']])
print("------------------------------------------------------------------")
print(f"回测区间内共捕获金叉买入次数: {res['Golden_Cross'].sum()} | 死叉卖出次数: {res['Death_Cross'].sum()}")
print("==================================================================")
if __name__ == "__main__":
test_baseline_run()运行结果输出:
================ 双均线基准策略 (Baseline) 信号输出 ================
close MA_Fast MA_Slow Golden_Cross Death_Cross
2023-01-23 10.196061 9.890427 9.823067 True False
------------------------------------------------------------------
回测区间内共捕获金叉买入次数: 1 | 死叉卖出次数: 0
==================================================================本章小结
- 规范量化策略架构:严格遵守初始化、盘前准备、盘中撮合与盘后结算四段式生命周期。
- 确立基准对照基石:双均线基准策略(MA10/MA30 + 上证 50 + 均仓)为后续所有风控与仓位优化提供了客观检验标尺。
- 正视均线滞后缺陷:纯均线死叉离场滞后性大,在剧烈见顶行情中易回吐大量利润,亟需在下一讲引入风控与仓位优化。
📋 行动清单 (Action Checklist)
- 运行本讲双均线基准代码,核验均线滑动窗口与金叉死叉判定逻辑;
- 思考如果仅依赖死叉卖出,在标的见顶暴跌 20% 时策略会遭受多大损失;
- 预习下一讲,学习如何通过叠加 CPR 仓位模型与跟踪止盈对基础策略进行分步阶梯式优化。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问