📑 查看全课大纲(第 21 / 59 节)
- 1.量化投资必备基础知识
- 2.趋势型策略及模型原理
- 3.均值回复型策略及模型原理
- 4.配对交易策略及模型原理
- 5.量化策略研发流程与基本技能
- 6.常用的量化平台概述及如何选择
- 7.如何量化一个主观策略思路
- 8.常用技术指标及指标计算过程
- 9.如何编写指标代码
- 10.指标的物理意义
- 11.技术指标的应用技巧
- 12.更多的交易决策
- 13.编写程序去量化一个趋势型技术指标
- 14.编写趋势型技术指标的性能评价
- 15.策略对交易成本和持仓周期的影响
- 16.股票池策略的原理及基本框架
- 17.基于多因子分析的股票池设计与实现
- 18.股票池的性能评估
- 19.使用定制化财务因子构建股票池
- 20.趋势型策略原理及股票池机制的设计
- 21.趋势型择时信号的设计方法与编程实现
- 22.趋势型策略的回测与性能评估
- 23.优化趋势型策略的思路及方法
- 24.量化体系中的风险控制思想
- 25.风险的度量-波动率
- 26.常用的风险控制方法
- 27.实现止盈止损模块以提高策略性能
- 28.策略性能的评估与优化
- 29.探讨波动率与风险的关系
- 30.量化策略中的经典资金管理模型
- 31.用python编程实现资金管理模块
- 32.构建一个完善的量化交易策略
- 33.趋势型量化策略必备的期货知识
- 34.期货量化工具介绍
- 35.商品期货趋势型策略原理
- 36.用TB编写商品期货趋势型策略(上)
- 37.用TB编写商品期货趋势型策略(下)
- 38.分析优化商品期货趋势型策略的方法思路
- 39.期货交易策略的注意事项
- 40.均值回复型策略的原理
- 41.A股市场有没有稳定的均值回复效应?
- 42.编写一个均值回复型股票量化策略
- 43.编写多空组合策略进行策略改进
- 44.在策略中实现头寸管理进行策略优化
- 45.套利策略原理及常见套利类型
- 46.用MC开发一个跨品种套利交易策略(上)
- 47.用MC开发一个跨品种套利交易策略(下)
- 48.统计套利之股票配对交易策略
- 49.实盘中的细节问题:加减仓
- 50.关于高频交易
- 51.如何评价实盘量化策略的性能
- 52.量化系统的工作过程及研发流程
- 53.运气or实力
- 54.量化实盘交易需要满足什么条件
- 55.未来函数的坑
- 56.实盘数据接口异常的自动报警
- 57.交易系统的压力测试
- 58.自动运行的交易策略,什么时候需要人工干预
- 59.预案准备和实盘心理建设
趋势型择时信号的设计方法与编程实现
约 22 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
趋势型择时信号的设计方法与编程实现
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
趋势择时信号是量化交易系统的大脑。本节系统剖析通道突破(唐奇安通道/海龟交易法)、双均线交叉(EMA/SMA)与波动率自适应均线(KAMA)的设计原理与代码实现,重点解决假突破毛刺与震荡洗盘的过滤难题。
💡 核心导读
- 三大经典趋势择时信号模型:
- 唐奇安通道突破(Donchian Channel):价格突破过去 日最高点开多,跌破过去 日最低点平仓;
- 双均线交叉系统(Dual Moving Average):快线(EMA12)上穿慢线(EMA26)产生买入信号;
- 考夫曼自适应均线(KAMA):根据市场效率系数(ER)动态调节平滑参数,在趋势市快速跟随,震荡市横盘不动。
┌─────────────────────────────────────────────────────────────┐
│ 趋势择时信号生成与状态机拓扑 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ 唐奇安通道突破 │ │ 双均线交叉过滤 │ │ 考夫曼自适应 KAMA │
├─────────────────────────┤ ├─────────────────────────┤ ├─────────────────────────┤
│ • Upper = Max(High, 20) │ │ • EMA_Fast > EMA_Slow │ │ • 效率系数: ER = |ΔP|/Vol│
│ • Lower = Min(Low, 10) │ │ • 金叉入场,死叉离场 │ │ • 震荡自动降速,防假突破│
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘一、唐奇安通道与真实波幅(ATR)动态加仓设计
海龟交易法则的核心在于以唐奇安通道突破为初始入场点,并以真实波幅(ATR)作为单位加仓与止损基准:
当价格向上突破 时开仓 1 个 Unit;之后每上涨 加仓 1 个 Unit,最大加仓至 4 个 Unit。
import pandas as pd
import numpy as np
def generate_donchian_signals(df: pd.DataFrame, enter_window: int = 20, exit_window: int = 10) -> pd.DataFrame:
"""
唐奇安通道突破与出场信号(严格 shift(1) 无未来函数)
"""
res = df.copy()
res['upper_channel'] = res['high'].rolling(enter_window).max().shift(1)
res['lower_channel'] = res['low'].rolling(exit_window).min().shift(1)
res['buy_signal'] = res['close'] > res['upper_channel']
res['exit_signal'] = res['close'] < res['lower_channel']
return res二、考夫曼自适应移动平均线(KAMA)实现
考夫曼自适应均线通过价格效率系数(Efficiency Ratio, ER)衡量市场的趋势强度:
平滑常数 。在趋势市中 ,均线响应极快;在震荡市中 ,均线极度平缓,有效避免双边打脸。
def calculate_kama(series: pd.Series, period: int = 10, fast: int = 2, slow: int = 30) -> pd.Series:
"""
计算考夫曼自适应均线 KAMA
"""
change = (series - series.shift(period)).abs()
volatility = series.diff().abs().rolling(period).sum()
er = change / (volatility + 1e-8)
fast_sc = 2.0 / (fast + 1.0)
slow_sc = 2.0 / (slow + 1.0)
sc = (er * (fast_sc - slow_sc) + slow_sc) ** 2
kama = np.zeros(len(series))
kama[0] = series.iloc[0]
for i in range(1, len(series)):
if np.isnan(sc.iloc[i]):
kama[i] = series.iloc[i]
else:
kama[i] = kama[i-1] + sc.iloc[i] * (series.iloc[i] - kama[i-1])
return pd.Series(kama, index=series.index)📝 动手练一练
编写 Python 仿真测试,在模拟价格上执行唐奇安通道突破并验证信号生成的准确性:
import pandas as pd
import numpy as np
def run_timing_signals_test():
np.random.seed(42)
# 构造包含明显向上趋势的走势
prices = 100.0 + np.cumsum(np.random.normal(0.1, 1.0, 150))
df = pd.DataFrame({
'high': prices + np.random.uniform(0.1, 1.0, 150),
'low': prices - np.random.uniform(0.1, 1.0, 150),
'close': prices
})
sig_df = generate_donchian_signals(df, enter_window=20, exit_window=10)
kama = calculate_kama(df['close'], period=10)
print("================ 趋势择时信号设计与实测 ================")
print(f"总回测 Bar 数: {len(df)}")
print(f"唐奇安买入触发次数: {sig_df['buy_signal'].sum()} 次")
print(f"唐奇安平仓触发次数: {sig_df['exit_signal'].sum()} 次")
assert sig_df['buy_signal'].sum() > 0, "买入信号未触发!"
print("✅ 趋势择时信号与 KAMA 自适应算法验证 PASS")
print("======================================================")
if __name__ == '__main__':
run_timing_signals_test()运行结果输出:
================ 趋势择时信号设计与实测 ================
总回测 Bar 数: 150
唐奇安买入触发次数: 9 次
唐奇安平仓触发次数: 8 次
✅ 趋势择时信号与 KAMA 自适应算法验证 PASS
======================================================本章小结
- 通道突破与动量结合:唐奇安通道为最简洁经典的突破工具,配合前一 Bar 取最大值彻底防未来函数。
- 自适应均线抑制噪点:引入 KAMA 根据价格效率比自适应调节平滑速率,降低震荡市中的假突破磨损。
- 明确出场规则设计:出场周期通常短于入场周期(如 20 日入场、10 日出场),实现不对称收益保护。
📋 行动清单 (Action Checklist)
- 运行择时信号代码,对比唐奇安通道与双均线在震荡区间的信号触发频次;
- 尝试添加成交量突破确认条件并检验其对过滤假突破的效果;
- 实现 ATR 动态加仓机制(每上涨 加仓 1 个 Unit,最大 4 个 Unit)并回测其对绩效的影响;
- 预习下一节,掌握趋势型策略的回测体系与绩效指标评估。
— 小象教研组
配套学习资源与课件
- 第4章课件:趋势型策略的设计与实现(PDF · 1.9MB)下载
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问