查看全课大纲(第 6 / 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 分钟
📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在开展量化交易策略研发时,许多开发者常陷入一个极端误区:耗费数月甚至数年精力从零编写一套重量级的底层行情撮合与实盘交易系统。然而,量化交易的核心竞争力在于策略逻辑的 Alpha 挖掘与稳健风控,而非底层轮子的重复制造。在工业界,根据不同交易标的(股票、期货、外汇)、持仓周期(日内高频、中低频截面)以及团队规模,合理选择成熟的第三方商业或开源量化平台,是大幅提高研发生产力的关键。本讲系统盘点主流本地图表平台、云端 SaaS 平台与专业量化 SDK 的技术特性,并给出科学的选型决策树。
💡 核心导读
- 主流第三方量化平台三大流派全景解析:
- 本地图表驱动交易系统(Chart-Based Local Systems):
- 代表平台:TradeBlazer (TB 交易开拓者)、MultiCharts (MC)、金字塔、文华财经;
- 优势:针对商品期货与股指期货深度优化,内置开箱即用的 K 线图表、信号调试器与直连期货柜台(CTP);
- 适用场景:单品种/多品种 CTA 日内与跨周期趋势突破策略;
- 云端 SaaS 投研平台(Cloud-Native SaaS Platforms):
- 代表平台:JoinQuant (聚宽)、RiceQuant (米筐)、优矿 (UQer);
- 优势:免除本地环境配置,自带全市场清洗完毕的高质量 A 股历史行情、财务报表与宏观数据;
- 适用场景:A 股多因子选股模型、截面 Alpha 策略研究;
- 专业数据终端与机构级 SDK(Professional Terminals & SDKs):
- 代表平台:Wind API、Choice、掘金量化 (MyQuant)、AkShare / Tushare、VN.PY;
- 优势:高度灵活,支持 Python / C++ 原生脚本自由组合,支持复杂的跨品种统计套利与高频交易。
- 本地图表驱动交易系统(Chart-Based Local Systems):
- 量化平台选型三大核心决策法则:
- 法则一:品种定架构(期货 CTA 首选 TB/MC;股票多因子首选 Python/聚宽;外汇首选 MT5);
- 法则二:频率定语言(中低频日线/分钟级首选 Python 快速迭代;Tick 级微观高频首选 C++ 极速柜台);
- 法则三:分层解耦(策略逻辑必须抽象为通用接口,杜绝与特定平台 API 深度绑死)。
┌─────────────────────────────────────────────────────────────┐
│ 量化平台技术架构与选型决策树 │
└──────────────────────────────┬──────────────────────────────┘
│
标的资产与策略类型 ▲
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 1. 商品期货 CTA │ │ 2. 股票多因子选股│ │ 3. 统计套利/高频 │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│ • TB / MC / 文华 │ │ • 聚宽 / 米筐 │ │ • Python + CTP │
│• 图表驱动快速验证│ │ • 现代化 Pandas │ │• 自建异步事件引擎│
│• 内置极速柜台直连│ │• 丰富基本面因子库│ │• 毫秒级网络低延迟│
└──────────────────┘ └──────────────────┘ └──────────────────┘一、平台解耦设计:构建通用策略接口抽象
在现代量化工程中,最佳实践是将策略逻辑封装为标准的抽象基类,无论底层使用的是聚宽 API、TB/MC 还是自建回测引擎,核心信号逻辑完全复用:
import numpy as np
class BaseStrategyInterface:
"""
通用量化策略抽象基类 (适配多平台架构)
"""
def __init__(self, name, symbol):
self.name = name
self.symbol = symbol
self.position = 0
self.trades = []
def on_bar(self, bar_dict):
"""
每根 K 线闭合时的标准事件回调
"""
raise NotImplementedError
# 创建策略实例并验证接口定义
strategy_interface = BaseStrategyInterface(name="BaseTemplate", symbol="SYNTHETIC")
print("===== 量化策略通用接口抽象 =====")
print(f"策略名称: {strategy_interface.name}")
print(f"交易标的: {strategy_interface.symbol}")
print(f"初始仓位: {strategy_interface.position}")
print(f"交易记录: {strategy_interface.trades}")
print("接口定义完成,on_bar 方法需由子类实现。")===== 量化策略通用接口抽象 =====
策略名称: BaseTemplate
交易标的: SYNTHETIC
初始仓位: 0
交易记录: []
接口定义完成,on_bar 方法需由子类实现。二、双均线跨平台等价实现
以双均线策略为例,演示如何通过标准 Python 逻辑复现 TB/MC 的核心信号节拍:
import numpy as np
class BaseStrategyInterface:
"""
通用量化策略抽象基类 (适配多平台架构)
"""
def __init__(self, name, symbol):
self.name = name
self.symbol = symbol
self.position = 0
self.trades = []
def on_bar(self, bar_dict):
"""
每根 K 线闭合时的标准事件回调
"""
raise NotImplementedError
class DualMaVectorizedStrategy(BaseStrategyInterface):
"""
跨平台双均线实现 (Python 等价实现)
"""
def __init__(self, symbol, fast_period=5, slow_period=20):
super().__init__("DualMA", symbol)
self.fast_period = fast_period
self.slow_period = slow_period
self.price_history = []
def on_bar(self, bar):
self.price_history.append(bar['close'])
if len(self.price_history) < self.slow_period:
return "WAIT"
fast_ma = np.mean(self.price_history[-self.fast_period:])
slow_ma = np.mean(self.price_history[-self.slow_period:])
# 金叉做多
if fast_ma > slow_ma and self.position <= 0:
self.position = 1
self.trades.append(('BUY', bar['date'], bar['close']))
return "BUY"
# 死叉做空/平仓
elif fast_ma < slow_ma and self.position >= 0:
self.position = -1
self.trades.append(('SELL', bar['date'], bar['close']))
return "SELL"
return "HOLD"
# 合成数据驱动策略运行示例
rng = np.random.default_rng(seed=42)
dates = [f"2024-01-{i+1:02d}" for i in range(30)]
# 生成包含随机波动的价格序列,模拟市场不确定性
base_price = 100.0
price_series = base_price + np.cumsum(rng.normal(0.05, 1.5, 30))
strategy = DualMaVectorizedStrategy(symbol="TEST_ASSET", fast_period=5, slow_period=20)
print("===== 双均线策略向量化实现 (跨平台核心逻辑) =====")
print(f"策略: {strategy.name} | 标的: {strategy.symbol}")
print(f"快线周期: {strategy.fast_period} | 慢线周期: {strategy.slow_period}")
for i, (dt, price) in enumerate(zip(dates, price_series)):
bar = {'date': dt, 'close': price}
signal = strategy.on_bar(bar)
if signal != "HOLD" and signal != "WAIT":
print(f" Bar {i+1:2d} [{dt}] Close:{price:7.2f} -> Signal: {signal}")
print(f"\n最终仓位: {strategy.position}")
print(f"总交易次数: {len(strategy.trades)}")
# 提示:合成数据回测不代表实盘,策略存在未来函数与过拟合风险。===== 双均线策略向量化实现 (跨平台核心逻辑) =====
策略: DualMA | 标的: TEST_ASSET
快线周期: 5 | 慢线周期: 20
Bar 20 [2024-01-20] Close: 100.01 -> Signal: BUY
最终仓位: 1
总交易次数: 1📝 动手练一练
下面我们用 Python 编写一段 跨平台通用量化策略引擎模拟测试脚本,验证抽象接口在驱动多周期行情回测中的执行稳定性:
import pandas as pd
import numpy as np
class BaseQuantStrategy:
"""
通用量化策略抽象基类 (适配多平台架构)
"""
def __init__(self, name, symbol):
self.name = name
self.symbol = symbol
self.position = 0
self.trades = []
def on_bar(self, bar):
raise NotImplementedError
class DualMaStrategy(BaseQuantStrategy):
"""
跨平台双均线实现 (适用于 Python/TB/MC 架构等价转换)
"""
def __init__(self, symbol, short_win=5, long_win=20):
super().__init__("DualMA", symbol)
self.short_win = short_win
self.long_win = long_win
self.history = []
def on_bar(self, bar):
self.history.append(bar['close'])
if len(self.history) < self.long_win:
return "WAIT"
ma_s = np.mean(self.history[-self.short_win:])
ma_l = np.mean(self.history[-self.long_win:])
if ma_s > ma_l and self.position <= 0:
self.position = 1
self.trades.append(('BUY', bar['date'], bar['close']))
return "BUY"
elif ma_s < ma_l and self.position >= 0:
self.position = -1
self.trades.append(('SELL', bar['date'], bar['close']))
return "SELL"
return "HOLD"
def test_platform_engine():
"""模拟跨平台通用策略引擎测试(合成数据,历史回测不代表未来收益)"""
rng = np.random.default_rng(seed=2024)
dates = pd.date_range("2024-03-01", periods=60, freq="B")
# 生成包含趋势与波动的合成价格,模拟真实市场的不确定性
price_trend = 0.08 * np.arange(len(dates))
price_noise = rng.normal(0, 2.0, len(dates))
p = 100.0 + price_trend + price_noise
strat = DualMaStrategy("RB_MAIN", short_win=5, long_win=15)
for dt, price in zip(dates, p):
bar = {'date': dt.strftime('%Y-%m-%d'), 'close': price}
strat.on_bar(bar)
print("================ 跨平台通用量化策略引擎测试 ================")
print(f"策略名称: {strat.name} | 交易标的: {strat.symbol} | 最终仓位: {strat.position}")
print(f"触发交易指令数: {len(strat.trades)} 笔")
if strat.trades:
print("最近3笔交易记录:")
for t in strat.trades[-3:]:
print(f" - 触发指令: {t[0]} @ {t[1]} 价格: {t[2]:.2f}")
else:
print(" (无交易触发)")
print("----------------------------------------------------------")
print("量化精髓: 建立统一接口抽象,实现一套策略逻辑跨平台无缝迁移!")
print("风险提示: 回测使用合成数据,实盘需警惕前视偏差与过拟合风险。")
print("==========================================================")
test_platform_engine()运行结果输出:
================ 跨平台通用量化策略引擎测试 ================
策略名称: DualMA | 交易标的: RB_MAIN | 最终仓位: -1
触发交易指令数: 9 笔
最近3笔交易记录:
- 触发指令: SELL @ 2024-04-26 价格: 102.42
- 触发指令: BUY @ 2024-05-06 价格: 107.38
- 触发指令: SELL @ 2024-05-23 价格: 104.30
----------------------------------------------------------
量化精髓: 建立统一接口抽象,实现一套策略逻辑跨平台无缝迁移!
风险提示: 回测使用合成数据,实盘需警惕前视偏差与过拟合风险。
==========================================================👉 点击查看解析
本节练习帮助梳理常见量化平台的功能差异与选择依据,核心在于根据自身策略对数据覆盖、回测效率、实盘接口及成本等方面的需求来匹配平台,而不是仅看平台知名度。
本章小结
- 拒绝重复造轮子:善用成熟的 TB、MC、聚宽与 Python 开源生态,将 80% 的精力聚焦在策略模型研发本身。
- 坚持品种架构匹配:期货 CTA 充分利用 TB/MC 图表与柜台优势,股票多因子发挥 Python 科学计算生态威力。
- 推行策略与平台解耦:采用面向对象的标准抽象接口设计,保障策略资产的长期可迁移性与可维护性。
📋 行动清单 (Action Checklist)
- 运行本讲抽象接口代码,观察策略如何在不依赖外部平台库的前提下完成自闭环回测;
- 梳理自己当前的策略需求(标的、周期、资金规模),制定合理的平台选型清单;
- 预习下一节,学习如何将一套模糊的主观人工交易系统彻底量化为算法模型。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第1章课件:实战量化投资必备基础知识PDF · 4.5MB