📑 查看全课大纲(第 15 / 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.量化系统的完整研发和系统搭建
基于分形的交易信号开发
约 5 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
基于分形的交易信号开发
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在量化交易的形态识别体系中,分形(Fractals) 是极具几何直觉与非线性特征的经典工具。它最早由比尔·威廉姆斯(Bill Williams)在其《混沌操作法》中系统提出,通过直接解构 K 线序列中的局部极值几何结构,捕捉市场动量反转的关键拐点,摆脱了对传统数值滤波器的依赖。
本讲将从底层几何拓扑出发,严密定义标准 5 根 K 线对称顶分型(Top Fractal)与底分型(Bottom Fractal) 的数学判定条件;重点揭示量化回测中分形固有滞后确认机制与严禁渗透未来函数(Look-ahead Bias) 的工程铁律;并探讨不同窗口宽度与非对称形态(如 W 底、M 头)的扩展开发空间。
💡 核心导读
- 分形结构的几何定义(以标准 5-bar 对称结构为例):
- 顶分型(Top Fractal / 局部极值高点):
- 中间根 K 线()的最高价同时高于其左侧两根()与右侧两根()的最高价:
- 底分型(Bottom Fractal / 局部极值低点):
- 中间根 K 线()的最低价同时低于其左侧两根()与右侧两根()的最低价:
- 顶分型(Top Fractal / 局部极值高点):
- 工程防坑铁律:滞后确认与未来函数防范:
- 要想在数学上严格确认 日是顶/底分型,必须等待其右侧的两根 K 线( 与 )完全走完且收盘!
- 绝对禁忌:若在 日当天或盘中提前发出分型买卖信号并以 日价格成交,属于严重的未来函数作弊!实盘与规范回测中,必须在 日盘后确认信号,并在 日执行交易。
- 分形宽度的灵活扩展:
- 检测宽度可灵活拓展至 ;
- 窗口越大,过滤的局部杂波越多,捕捉到的支撑/压力级别越宏大。
┌─────────────────────────────────────────────────────────────┐
│ 标准 5-Bar 顶分型与底分型结构 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┴─────────────────────────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 顶分型 (屋顶) │ │ 底分型 (谷底) │
├──────────────────┤ ├──────────────────┤
│ ▲ [t-2] │ │ | | [t-2] │
│ ▲ | ▲ │ │ | ▲ ▲ | │
│ ▲ | | | ▲ │ │ ▼ | ▼ | ▼ │
│ t-4 t-3 t-1 t │ │ t-4 t-3 t-1 t │
│ => 中间最高,见顶预警│ │ => 中间最低,企稳见底│
└──────────────────┘ └──────────────────┘一、分形的形态学原理与非线性特征
1. 摆脱传统均线滞后的几何形态
与依赖多期加权平均的均线指标不同,分形直接基于 K 线的真实极值点(High / Low)进行空间几何定位。顶分型构成局部的动态压力位(Resistance),底分型构成局部的动态支撑位(Support)。
2. 回测中的时间因果律与滞后确认
许多主观交易者在复盘图表时,看到分形尖顶就误以为能在当天逃顶。但在量化程序化执行中,因果律不可违背:
- 只有当第 5 根 K 线收盘, 高于前后全部 4 根的条件才被最终确定;
- 因此,分形信号天然具有 2 根 K 线的确认滞后(Lag)。量化策略通常将分形点位作为画线支撑压力线、ATR 突破通道锚点或形态止损基准。
二、矢量化分形检测与数据库落库实现
利用 Pandas 的 shift 函数,可一次性将 5 根 K 线对齐至同一行进行矢量化并行比对:
📝 动手练一练
下面我们用 Python 编写一段 5-Bar 顶分型与底分型量化检测引擎,演示如何使用 Pandas 矢量化提取形态,并严格保持时间因果律,杜绝未来函数:
import pandas as pd
import numpy as np
def compute_fractal_signals(df):
"""
矢量化计算标准 5-bar 顶分型 (Top Fractal) 与 底分型 (Bottom Fractal)
并在 t 日 (第 5 根 K 线走完的时刻) 确认 t-2 日的极值形态,严格保持时间因果律
"""
df = df.copy()
# 构造 5 根连续 K 线的高低点切片 (对齐至当前 t 日)
h_mid = df['High'].shift(2) # 中间根 (t-2)
h_0 = df['High'] # 当日 (t)
h_1 = df['High'].shift(1) # (t-1)
h_3 = df['High'].shift(3) # (t-3)
h_4 = df['High'].shift(4) # (t-4)
l_mid = df['Low'].shift(2) # 中间根 (t-2)
l_0 = df['Low'] # 当日 (t)
l_1 = df['Low'].shift(1) # (t-1)
l_3 = df['Low'].shift(3) # (t-3)
l_4 = df['Low'].shift(4) # (t-4)
# 顶分型: 中间根最高价同时高于前后各两根
df['Top_Fractal_Confirmed'] = (h_mid > h_0) & (h_mid > h_1) & (h_mid > h_3) & (h_mid > h_4)
# 底分型: 中间根最低价同时低于前后各两根
df['Bottom_Fractal_Confirmed'] = (l_mid < l_0) & (l_mid < l_1) & (l_mid < l_3) & (l_mid < l_4)
return df
def test_fractal_run():
np.random.seed(42)
dates = pd.date_range("2023-01-01", periods=10, freq="D")
# 构造含明确底分型 (Day 3) 与顶分型 (Day 7) 的高低点时序
highs = [12.0, 11.0, 10.0, 11.5, 13.0, 14.0, 15.0, 14.2, 13.5, 12.0]
lows = [10.5, 9.5, 8.0, 9.8, 11.0, 12.5, 13.8, 13.0, 12.0, 10.8]
df = pd.DataFrame({'High': highs, 'Low': lows}, index=dates)
res = compute_fractal_signals(df)
bottom_dates = res[res['Bottom_Fractal_Confirmed']].index.strftime('%Y-%m-%d').tolist()
top_dates = res[res['Top_Fractal_Confirmed']].index.strftime('%Y-%m-%d').tolist()
print("================ 5-Bar 顶分型/底分型量化检测引擎 ================")
print(res[['High', 'Low', 'Bottom_Fractal_Confirmed', 'Top_Fractal_Confirmed']])
print("----------------------------------------------------------------")
print(f"确认底分型形态落地日期 (t 日): {bottom_dates} (对应极值低点发生在 t-2 日 2023-01-03)")
print(f"确认顶分型形态落地日期 (t 日): {top_dates} (对应极值高点发生在 t-2 日 2023-01-07)")
print("量化防坑: 分形必须滞后 2 根 K 线确认,切忌在 t-2 当天提前交易,否则构成未来函数!")
print("================================================================")
if __name__ == "__main__":
test_fractal_run()运行结果输出:
================ 5-Bar 顶分型/底分型量化检测引擎 ================
High Low Bottom_Fractal_Confirmed Top_Fractal_Confirmed
2023-01-01 12.0 10.5 False False
2023-01-02 11.0 9.5 False False
2023-01-03 10.0 8.0 False False
2023-01-04 11.5 9.8 False False
2023-01-05 13.0 11.0 True False
2023-01-06 14.0 12.5 False False
2023-01-07 15.0 13.8 False False
2023-01-08 14.2 13.0 False False
2023-01-09 13.5 12.0 False True
2023-01-10 12.0 10.8 False False
----------------------------------------------------------------
确认底分型形态落地日期 (t 日): ['2023-01-05'] (对应极值低点发生在 t-2 日 2023-01-03)
确认顶分型形态落地日期 (t 日): ['2023-01-09'] (对应极值高点发生在 t-2 日 2023-01-07)
量化防坑: 分形必须滞后 2 根 K 线确认,切忌在 t-2 当天提前交易,否则构成未来函数!
================================================================本章小结
- 掌握分形几何定义:顶分型代表局部最高阻力位,底分型代表局部最低支撑位。
- 严防未来函数漏洞:分形需要左右两侧数据支撑,必须滞后 2 根 K 线确认,严禁在未走完前提前入场。
- 拓展形态想象空间:分形支持不对称宽度(如 )与复合形态(W 底、头肩顶),是构造高级形态滤波器的基础。
📋 行动清单 (Action Checklist)
- 运行本讲分形检测代码,确认
Bottom_Fractal_Confirmed准确在第 5 天落地,对应第 3 天的低点; - 尝试编写 7-Bar 分形识别函数(中间根对比前后各 3 根 K 线),对比信号频率的变化;
- 阅读下一讲,系统总结第二章四大信号系统,并做好第三章搭建回测系统的准备。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问