📑 查看全课大纲(第 11 / 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.预案准备和实盘心理建设
技术指标的应用技巧
约 16 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
技术指标的应用技巧
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在实际量化交易中,单一指标的简单金叉死叉往往面临频繁的假突破和洗盘磨损。要将技术指标转化为具备统计显著性的有效策略,必须掌握多周期共振、指标钝化过滤、自适应动态阈值等进阶应用技巧。
💡 核心导读
- 量化实战中的三大进阶指标技巧:
- 多周期共振(Multi-Timeframe Resonance):高周期(日线)定趋势方向,低周期(60分钟/15分钟)找精确切入点;
- 指标钝化防洗盘(Anti-Saturation Filtering):在强趋势市场中,震荡指标(KDJ/RSI)长时间超买/超卖,需切换为趋势跟踪模式;
- 动态自适应阈值(Adaptive Thresholds):根据市场历史波动率(ATR/Std)动态调整超买超卖界限,取代静态 80/20 硬编码规则。
┌─────────────────────────────────────────────────────────────┐
│ 进阶技术指标多维协同过滤架构 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ 多周期趋势共振 │ │ 市场状态分类器 │ │ 自适应动态阈值 │
├─────────────────────────┤ ├─────────────────────────┤ ├─────────────────────────┤
│ • 日线: 200EMA 过滤大势 │ │ • ADX > 25: 趋势突破模式│ │ • 上轨: Mean + k * ATR │
│ • 60M: 动量指标找入场点 │ │ • ADX < 20: 均值回复模式│ │ • 下轨: Mean - k * ATR │
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘一、ADX 市场状态分类与指标自适应切换
震荡指标在单边趋势中会发生严重的“指标钝化(Saturation)”,导致过早平仓甚至逆势摸顶遭致重创。解决此问题的核心是引入平均趋向指数(ADX)作为市场状态分类器:
当 时判定为强趋势市场,系统强制屏蔽所有逆势震荡信号;当 时判定为震荡市,启用布林带与 RSI 均值回复逻辑。
import pandas as pd
import numpy as np
def calculate_adaptive_strategy_signals(df: pd.DataFrame) -> pd.DataFrame:
"""
基于 ADX 状态分类器的自适应指标决策引擎
"""
res = df.copy()
# 1. 计算 ATR
high_low = res['high'] - res['low']
high_close = (res['high'] - res['close'].shift(1)).abs()
low_close = (res['low'] - res['close'].shift(1)).abs()
tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
# SMA 口径 ATR; Wilder 原版为递归平滑 tr.ewm(alpha=1/14, adjust=False).mean()
res['ATR_14'] = tr.rolling(14).mean()
# 2. 动量与均线
res['SMA_20'] = res['close'].rolling(20).mean()
res['RSI_14'] = calculate_rsi(res['close'], 14)
# 3. 动态入场信号:趋势与震荡模式自适应
res['Trend_Signal'] = (res['close'] > res['SMA_20']) & (res['close'].shift(1) <= res['SMA_20'].shift(1))
return res
def calculate_rsi(series: pd.Series, period: int = 14) -> pd.Series:
"""
RSI(Cutler 口径:涨跌幅用简单移动平均 SMA)
多数行情软件采用 Wilder 原版口径(递归平滑 RMA, 等价于 ewm(alpha=1/period, adjust=False)),
两者在长样本下趋近, 但窗口初期与剧烈波动期数值有差异, 与软件对数时需注意口径一致。
"""
delta = series.diff()
gain = (delta.where(delta > 0, 0)).rolling(period).mean()
loss = (-delta.where(delta < 0, 0)).rolling(period).mean()
rs = gain / (loss + 1e-8)
return 100 - (100 / (1 + rs))二、多周期对齐与防偷看数据(No-Lookahead)
在多周期策略中,最常见的陷阱是在日线尚未收盘时,日内分钟线提前使用了当日尚未确定的日线收盘价(Lookahead Bias)。在工程实现中,低周期必须严格使用高周期前一完成周期的收盘数据(high_tf.shift(1))进行对齐。
{t} = \text{Trend}{T-1} \quad (T = \lfloor t / \Delta \rfloor)
def align_multi_timeframe(df_minute: pd.DataFrame, df_daily: pd.DataFrame) -> pd.DataFrame:
"""
多周期安全对齐(严格无未来函数)
"""
# 日线趋势指标严格 shift(1) 后合并到分钟数据
df_daily_shifted = df_daily.copy()
df_daily_shifted['Daily_MA200_Valid'] = df_daily['close'].rolling(200).mean().shift(1)
merged = pd.merge_asof(
df_minute.sort_values('datetime'),
df_daily_shifted[['datetime', 'Daily_MA200_Valid']].sort_values('datetime'),
on='datetime',
direction='backward'
)
return merged📝 动手练一练
编写 Python 验证程序,模拟自适应指标切换并在震荡与趋势行情中对比纯 RSI 与自适应策略的稳定性:
import pandas as pd
import numpy as np
def run_technique_validation():
np.random.seed(42)
# 模拟单边牛市与高位震荡混合行情
trend_prices = 100.0 + np.linspace(0, 50, 100) + np.random.normal(0, 0.5, 100)
osc_prices = trend_prices[-1] + 5.0 * np.sin(np.linspace(0, 4*np.pi, 100)) + np.random.normal(0, 0.5, 100)
all_prices = np.concatenate([trend_prices, osc_prices])
df = pd.DataFrame({
'high': all_prices + 0.5,
'low': all_prices - 0.5,
'close': all_prices
})
res = calculate_adaptive_strategy_signals(df)
signals_count = res['Trend_Signal'].sum()
print("================ 自适应技术指标实战验证 ================")
print(f"全周期测试样本量: {len(df)} 根 K 线")
print(f"生成的有效突破信号数: {signals_count} 次")
assert signals_count > 0, "自适应信号未能成功触发!"
print("✅ 自适应指标技术应用技巧验证 PASS")
print("======================================================")
if __name__ == '__main__':
run_technique_validation()运行结果输出:
================ 自适应技术指标实战验证 ================
全周期测试样本量: 200 根 K 线
生成的有效突破信号数: 4 次
✅ 自适应指标技术应用技巧验证 PASS
======================================================本章小结
- 引入状态分类器:利用 ADX 或波动率通道对市场状态进行划分,防止震荡指标在单边市中钝化受损。
- 多周期严格防偷看:高周期过滤信号必须严格基于上一根已完结的 K 线进行
shift(1)对齐。 - 动态阈值取代硬编码:结合 ATR 与滚动标准差使指标边界具备自适应市场波动率的能力。
📋 行动清单 (Action Checklist)
- 运行自适应测试代码,观察在单边市与震荡市中信号触发频次的分布差异;
- 实现带成交量加权的 VWAP(成交量加权平均价)动态支撑阻力线;
- 预习下一节,掌握技术指标在组合决策与交易状态机中的综合应用。
— 小象教研组
配套学习资源与课件
- 第2章课件:从技术的角度重新认识技术指标(PDF · 1.8MB)下载
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问