使用python做量化交易策略测试和回验,有哪些比较成熟一些的库

2024-04-29 08:13

1. 使用python做量化交易策略测试和回验,有哪些比较成熟一些的库

numpy
介绍:一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
scipy
介绍:SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包。它包括统计、优化、线性代数、傅里叶变换、信号和图像处理、常微分方程求解等等。
pandas
介绍:Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
quantdsl
介绍: quantdsl包是Quant DSL语法在Python中的一个实现。Quant DSL 是财务定量分析领域专用语言,也是对衍生工具进行建模的功能编程语言。Quant DSL封装了金融和交易中使用的模型(比如市场动态模型、最小二乘法、蒙特卡罗方法、货币的时间价值)。
statistics
介绍:python内建的统计库,该库提供用于计算数值数据的数学统计的功能。
PyQL
介绍: PyQL构建在Cython之上,并在QuantLib之上创建一个很浅的Pythonic层,是对QuantLib的一个包装,并利用Cython更好的性能。

使用python做量化交易策略测试和回验,有哪些比较成熟一些的库

2. 怎么学习python量化交易?

下面教你八步写个量化交易策略——单股票均线策略
1 确定策略内容与框架
若昨日收盘价高出过去20日平均价今天开盘买入股票 若昨日收盘价低于过去20日平均价今天开盘卖出股票
只操作一只股票,很简单对吧,但怎么用代码说给计算机听呢?
想想人是怎么操作的,应该包括这样两个部分
既然是单股票策略,事先决定好交易哪一个股票。
每天看看昨日收盘价是否高出过去20日平均价,是的话开盘就买入,不是开盘就卖出。每天都这么做,循环下去。
对应代码也是这两个部分
def initialize(context):    用来写最开始要做什么的地方def handle_data(context,data):    用来写每天循环要做什么的地方2 初始化
我们要写设置要交易的股票的代码,比如 兔宝宝(002043)
def initialize(context):    g.security = '002043.XSHE'# 存入兔宝宝的股票代码3 获取收盘价与均价
首先,获取昨日股票的收盘价
# 用法:变量 = data[股票代码].closelast_price = data[g.security].close# 取得最近日收盘价,命名为last_price然后,获取近二十日股票收盘价的平均价
# 用法:变量 = data[股票代码].mavg(天数,‘close’)# 获取近二十日股票收盘价的平均价,命名为average_priceaverage_price = data[g.security].mavg(20, 'close')4 判断是否买卖
数据都获取完,该做买卖判断了
# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出if last_price > average_price:    买入elif last_price < average_price:    卖出问题来了,现在该写买卖下单了,但是拿多少钱去买我们还没有告诉计算机,所以每天还要获取账户里现金量。
# 用法:变量 = context.portfolio.cashcash = context.portfolio.cash# 取得当前的现金量,命名为cash5 买入卖出
# 用法:order_value(要买入股票股票的股票代码,要多少钱去买)order_value(g.security, cash)# 用当前所有资金买入股票# 用法:order_target(要买卖股票的股票代码,目标持仓金额)order_target(g.security, 0)# 将股票仓位调整到0,即全卖出6 策略代码写完,进行回测
把买入卖出的代码写好,策略就写完了,如下
def initialize(context):#初始化    g.security = '002043.XSHE'# 股票名:兔宝宝def handle_data(context, data):#每日循环    last_price = data[g.security].close# 取得最近日收盘价# 取得过去二十天的平均价格    average_price = data[g.security].mavg(20, 'close')    cash = context.portfolio.cash# 取得当前的现金# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出。if last_price > average_price:        order_value(g.security, cash)# 用当前所有资金买入股票elif last_price < average_price:        order_target(g.security, 0)# 将股票仓位调整到0,即全卖出现在,在策略回测界面右上部,设置回测时间从20140101到20160601,设置初始资金100000,设置回测频率,然后点击运行回测。 
7 建立模拟交易,使策略和行情实时连接自动运行
策略写好,回测完成,点击回测结果界面(如上图)右上部红色模拟交易按钮,新建模拟交易如下图。 写好交易名称,设置初始资金,数据频率,此处是每天,设置好后点提交。
8 开启微信通知,接收交易信号
点击聚宽导航栏我的交易,可以看到创建的模拟交易,如下图。 点击右边的微信通知开关,将OFF调到ON,按照指示扫描二维码,绑定微信,就能微信接收交易信号了。