📑 查看全课大纲(第 8 / 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.预案准备和实盘心理建设
常用技术指标及指标计算过程
约 9 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
常用技术指标及指标计算过程
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在量化交易与金融时间序列分析中,技术指标是提取市场特征、过滤高频噪音与刻画资产运行规律的核心数学工具。从简单的移动平均线到复杂的多周期振荡器,技术指标本质上是对开盘价、最高价、最低价、收盘价与成交量(OHLCV)等基础行情序列进行的非线性或线性数学变换。本讲系统梳理常用技术指标的数学机理、移动平均线家族的权重衰减特性,并建立工业级 Python 向量化指标计算管线。
💡 核心导读
- 技术指标的数学本质与降维思想:
- 降维与滤波:原始 K 线行情充斥着微观流动性冲击与随机游走噪音,技术指标通过滑动窗口(Rolling Window)与卷积平滑提取低频趋势与周期特征;
- 状态映射:将连续的价格序列转化为具有统计学上下界(如 RSI、KDJ 的 [0, 100] 区间)或相对零轴对称的偏离度分布。
- 移动平均线(MA)家族三大流派数学对比:
- 简单移动平均(SMA):等权重算术平均,对历史与最新价格一视同仁,存在明显的滞后性与“尾部剔除效应”;
- 加权移动平均(WMA):线性递减权重,近期价格赋予更高权重:
- 指数移动平均(EMA):无限冲激响应(IIR)平滑,近期权重呈几何级数衰减,天然消除尾部跳变:
- 指标计算的量化工程铁律:
- 严格遵循因果律(Causality),计算当前 Bar 的指标值时仅允许使用 及历史数据,坚决杜绝未来函数。
┌─────────────────────────────────────────────────────────────┐
│ 技术指标特征提取与信号生成拓扑图 │
└──────────────────────────────┬──────────────────────────────┘
│
原始 OHLCV 行情时序 ▲
┌─────────────────────────────┴─────────────────────────────┐
│ • Open, High, Low, Close, Volume, Open Interest │
└─────────────────────────────┬─────────────────────────────┘
│ (向量化滑动窗口变换)
┌───────────────┬─────────────┼─────────────┬───────────────┐
▼ ▼ ▼ ▼ ▼
┌─────────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────────┐
│ 1. 趋势型指标│ │ 2. 均值回复│ │ 3. 能量动量│ │ 4. 成交量型│ │ 5. 波动率型 │
├─────────────┤ ├───────────┤ ├───────────┤ ├───────────┤ ├─────────────┤
│ • SMA / EMA │ │ • 布林带 │ │ • MACD │ │ • OBV 能量潮│ │ • ATR 真实波│
│ • 唐奇安通道│ │ • KDJ / RSI│ │ • CCI / ROC│ │ • 量比 / VWAP││ • 历史波动率 │
└─────────────┘ └───────────┘ └───────────┘ └───────────┘ └─────────────┘一、移动平均线算法推导与权重响应对比
移动平均线是所有技术指标的基石。不同的平滑权重对突发价格波动的敏感度截然不同:EMA 对最新价格跳空响应最灵敏,而 SMA 相对平缓但滞后性大。
import pandas as pd
import numpy as np
def calculate_ma_family(series, window=20):
"""
计算移动平均线家族 (SMA, WMA, EMA)
"""
# 1. 简单移动平均 SMA
sma = series.rolling(window=window).mean()
# 2. 指数移动平均 EMA
ema = series.ewm(span=window, adjust=False).mean()
# 3. 线性加权移动平均 WMA
weights = np.arange(1, window + 1)
wma = series.rolling(window=window).apply(lambda prices: np.dot(prices, weights) / weights.sum(), raw=True)
return pd.DataFrame({
'close': series,
'SMA': sma,
'EMA': ema,
'WMA': wma
})二、指标分类工程体系与无未来函数计算管线
在实际回测框架中,技术指标必须通过全向量化矩阵运算完成,以保证大规模股票池与高频数据的回测效率:
def calculate_standard_indicators(df):
"""
向量化计算典型技术指标矩阵 (严格防范未来函数)
"""
res = df.copy()
# 趋势指标: 20日均线与通道
res['ma20'] = res['close'].rolling(20).mean()
res['upper_channel'] = res['high'].rolling(20).max().shift(1)
res['lower_channel'] = res['low'].rolling(20).min().shift(1)
# 真实波幅 ATR
tr1 = res['high'] - res['low']
tr2 = (res['high'] - res['close'].shift(1)).abs()
tr3 = (res['low'] - res['close'].shift(1)).abs()
res['tr'] = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
res['atr14'] = res['tr'].rolling(14).mean()
return res📝 动手练一练
下面我们用 Python 编写一段 常用技术指标向量化计算与响应测试脚本,模拟全时序数据清洗与 SMA/EMA/ATR 指标输出:
import pandas as pd
import numpy as np
def run_indicators_calculation():
"""
技术指标向量化计算与输出模拟
"""
np.random.seed(42)
dates = pd.date_range("2023-01-01", periods=60, freq="B")
# 构造含有一段突发脉冲的行情
p = 100.0 + np.cumsum(np.random.normal(0.05, 1.0, 60))
p[35:] += 5.0 # 模拟跳空突发价格
df = pd.DataFrame({
'open': p - 0.2,
'high': p + 0.5,
'low': p - 0.5,
'close': p,
'volume': np.random.uniform(1000, 5000, 60)
}, index=dates)
# 计算 SMA20, EMA20 与 ATR14
df['sma20'] = df['close'].rolling(20).mean()
df['ema20'] = df['close'].ewm(span=20, adjust=False).mean()
tr1 = df['high'] - df['low']
tr2 = (df['high'] - df['close'].shift(1)).abs()
tr3 = (df['low'] - df['close'].shift(1)).abs()
df['atr14'] = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1).rolling(14).mean()
res = {
"Total_Bars": len(df),
"Last_Close": f"{df['close'].iloc[-1]:.2f} 元",
"Last_SMA20": f"{df['sma20'].iloc[-1]:.2f} 元",
"Last_EMA20": f"{df['ema20'].iloc[-1]:.2f} 元",
"Last_ATR14": f"{df['atr14'].iloc[-1]:.2f} 元",
"EMA_vs_SMA_Lead": f"{(df['ema20'].iloc[-1] - df['sma20'].iloc[-1]):.2f} 元 (EMA 响应更快)"
}
return res
def test_indicators_run():
res = run_indicators_calculation()
print("================ 常用技术指标向量化计算测试 ================")
for k, v in res.items():
print(f" - {k:<20}: {v}")
print("----------------------------------------------------------")
print("量化精髓: 熟练掌握指标数学内涵,严格使用向量化滚动计算杜绝未来函数!")
print("==========================================================")
if __name__ == "__main__":
test_indicators_run()运行结果输出:
================ 常用技术指标向量化计算测试 ================
- Total_Bars : 60
- Last_Close : 98.72 元
- Last_SMA20 : 97.54 元
- Last_EMA20 : 97.60 元
- Last_ATR14 : 1.28 元
- EMA_vs_SMA_Lead : 0.06 元 (EMA 响应更快)
----------------------------------------------------------
量化精髓: 熟练掌握指标数学内涵,严格使用向量化滚动计算杜绝未来函数!
==========================================================本章小结
- 领会指标降维本质:技术指标是对市场原始行情的高维特征提取与噪音滤波,服务于定量决策。
- 区分均线平滑权重:根据策略对时间敏感度的要求,合理选用 SMA(平稳)或 EMA(灵敏)。
- 推行向量化工程实现:利用
pandas.rolling()与ewm()打造高性能、无未来函数的标准指标库。
📋 行动清单 (Action Checklist)
- 运行本讲技术指标计算代码,观察跳空行情下 EMA 与 SMA 的响应时滞差异;
- 尝试为自己的量化框架封装通用的 ATR 与真实波幅计算函数;
- 预习下一节,深入学习趋势型技术指标(MACD、EMA、唐奇安通道)的经典形态量化。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问