版本: v1.0.0; Github地址: namoshizun/TradePy; Gitee镜像: dilu3100/TradePy
简介#
TradePy是一个面向证券交易的量化策略开发 + 实盘交易框架,实现了如下功能:
数据下载
策略实现: 提供声明式API以快速实现策略逻辑,内置多种常用指标,使用 Numba 加速耗时操作.
策略回测: 日K级别的交易回测,并生成回测报告。可用分钟K线做日内走势回测。
可设置 每日最大开仓数量、最低开仓金额、个股最大仓位
计算后复权股价,支持多种滑点设置
可并行跑多轮回测,观察策略表现的统计特征.
寻参优化: 基于网格搜索的参数寻优,并使用 Dask Distributed 做并行化。未来将集成更智能的寻参算法,当前也支持使用自定义的寻参算法。
实盘交易: 通过 XtQuant 执行实盘交易,并自行统计当日持仓和账户余额等信息,以规避QMT终端的诸多数据反馈不及时问题。
每日自动更新日K数据。
支持设置委托单过期时间,超时不成交且不在当前买一价,可自动撤单.
支持微信推送交易行为和异常状态 (🚧施工中)
实盘/回测对比: 读取实盘的交割单PDF,并与同期的回测结果进行比对,以验证回测结果的可信度(🚧施工中)。
示例#
以下即实现了一个基于10均与30均的金叉买入、死叉卖出策略,并过滤ST股。将父类改为 tradepy.strategy.base.LiveStrategy
即可直接用到实盘交易中。
from tradepy.strategy.factors import FactorsMixin
from tradepy.strategy.base import BacktestStrategy
from tradepy.decorators import tag
class MovingAverageCrossoverStrategy(BacktestStrategy, FactorsMixin):
@tag(outputs=["sma10_ref1", "sma30_ref1"], notna=True)
def moving_averages_ref1(self, sma10, sma30):
return sma10.shift(1), sma30.shift(1)
def should_buy(self, sma10, sma30,
sma10_ref1, sma30_ref1,
close, company):
if "ST" not in company:
if (sma10_ref1 < sma30_ref1) and (sma10 > sma30):
return close, 1
def should_sell(self, sma10, sma30, sma10_ref1, sma30_ref1):
return (sma10_ref1 > sma30_ref1) and (sma10 < sma30)
安装#
Linux或MacOS系统
安装Python3.10或3.11。推荐使用性能更佳的3.11
安装TA-Lib
Linux系统: 参考此 教程
MacOS系统:
brew install ta-lib
安装并初始化TradePy
# 获取代码 # 注: 如果网络错误,也可以从镜像库克隆 https://gitee.com/dilu3100/TradePy.git git clone --depth=1 namoshizun/TradePy.git # 安装TradePy cd TradePy pip install . # 初始化TradePy, 运行模式输入"backtest" python -m tradepy.cli.bootstrap
Windows系统
安装Python3.10或3.11
安装TA-Lib: 从 此处 下载并安装对应您的Python版本的TA-Lib Wheel文件。例如: Win10 64位系统,Python 3.10版本,Intel CPU,应下载
TA_Lib-0.4.26-cp310-cp310-win_amd64.whl
。然后运行pip install TA_Lib-0.4.26-cp310-cp310-win_amd64.whl
。安装和初始化TradePy,步骤如上