量化回测平台|有现成的不用吗?如何利用聚宽平台回测交易策略

    技术2022-07-12  119

    导览

    本文为掘金小册课程加推篇!小册还在持续加推中,敬请期待!!!目前已经加推了20节!!!

    超值的43节课程!从目录就能看出来!

    1-贯穿小册:Python金融数据分析实战型项目

    2-前置基础:量化交易及应用场景简介

    3-前置基础:开发环境及基础工具说明

    4-前置基础:创建一个Python文件的细节

    5-前置基础:Python变量类型及动态特性

    6-前置基础:玩转Python遍历工具for..in

    7-前置基础:无可或缺的Python异常处理

    8-前置基础:NumPy模拟随机漫步理论

    9-前置基础:Pandas构建DataFrame股票数据

    10-前置基础:Matplotlib函数式绘图的方式

    11-前置基础:Matplotlib对象式绘图的方式

    12-前置基础:Matplotlib模拟随机漫步轨迹

    13-前置基础:从概率角度谈市场中的博弈

    14-股票数据获取:Pandas金融模块获取股票数据

    15-股票数据获取:差异化分析常用股票数据接口

    16-股票数据获取:详解网络爬虫的原理和过程

    17-股票数据获取:爬虫方式获取行业板块数据

    18-股票数据获取:爬虫抓取东方财富网股吧帖子

    19-股票数据分析:全方位访问DataFrame格式股票数据

    20-股票数据分析:遍历DataFrame格式股票数据的方法

    21-股票数据分析:股票分时明细数据的处理与转换

    22-股票数据分析:除权数据前复权和后复权处理

    23-股票数据可视化:自定义Matplotlib版股票行情界面

    24-股票数据可视化:pyecharts实现Web版股票行情界面

    25-股票数据可视化:pyecharts从V0.5至V1版的转变

    26-股票数据可视化:TA-Lib技术指标库的扩展应用

    27-股票数据可视化:用TA-Lib封装更灵活的指标库

    28-股票交易策略:线性回归算法建立选股策略

    29-股票交易策略:基于欧奈尔RPS指标选股策略

    30-股票交易策略:海龟择时策略入门量化交易

    31-股票交易策略:收益与风险维度度量策略效果

    32-股票交易策略:择时策略融入ATR风险管理

    33-股票交易策略:择时策略融入ATR动态仓位管理

    34-股票交易策略:蒙特卡洛算法最优化策略参数

    35-股票交易策略:基于凯利公式的仓位管理

    36-量化策略回测:扒一扒量化回测中常见的陷阱

    37-量化策略回测:创建属于自己的回测框架

    38-量化策略回测:如何利用聚宽平台回测交易策略【本次加推篇】

    39-量化策略回测:基于BackTrader建立双均线策略

    40-远程下单方案:微信机器人实时提醒交易

    41-远程下单方案:SMTP邮件实时提醒交易

    42-效率优化措施:Python扩展C/C++加速执行

    43-结尾篇:贯穿知识点才能学以致用

    前言

    我们经过了自己动手搭建量化回测框架这个过程之后,能够对回测有一定的认识。

    接下来可以探索下那些现有的回测框架或者平台,试着找到适合自己风格的方式。

    这里我们选一个比较普及的线上回测平台——聚宽,通过几个简单的例程来熟悉下这个平台的使用特点。

    编程框架

    首先文件中要导入jqdata和其他使用到的库。如下所示:

    # 导入函数库 import jqdata import pandas as pd import numpy as np import talib as tl

    基本的框架可以概括为“初始化+周期循环”框架。

    首先建立一个初始化函数initialize,在函数里面可以设置基准、滑点、手续费等初始化操作。

    然后选择run_daily/run_weekly/run_monthly中的一种周期去循环执行策略。

    比如官网上最简单的一个例程,如下所示:

    # 导入聚宽函数库 import jqdata # 初始化函数,设定要操作的股票、基准等等def initialize(context):     # 定义一个全局变量, 保存要操作的股票     # 000001(股票:平安银行)     g.security = '000001.XSHE'     # 运行函数     run_daily(market_open, time='every_bar')     if g.security not in context.portfolio.positions:         order(g.security, 1000)     else: order(g.security, -800)

    这个例程里先在初始化函数 initialize里指定操作'000001.XSHE'平安银行,然后就是每天调用market_open函数,每次调用时候判断没有股票时就买入1000股,有股票时卖出800股……虽然是一个很没意义的策略,但是对理解如何在聚宽上写策略还是比较直观的。

    大家在编写策略的时候是要使用聚宽上封装了的API函数的,可以查看官网的介绍。比如set_benchmark设置基准、set_order_cost设置佣金/印花税、set_slippage设置滑点、use_real_price设置动态复权(真实价格)模式、order按股数下单、get_ticks获取tick数据等等,不得不说从这方面来看使用上还是蛮方便的。

    单股票双均线择时策略

    我们拿双均线策略这个入门的策略来回测一下,M5上穿M10时达到一定幅度时买入,M5下穿M10时卖出。

    在初始化函数中设定操作的股票、基准、开启动态复权模式、设定每天调用的market_open函数。

    接下来策略的逻辑实现都在market_open函数中。

    先得到M5和M10的均线数值,attribute_history函数得到的是最近N日的收盘价数据,以close_data_5为例,每天会返回如下数值(每天都会执行一次函数,返回N日的收盘价),然后求平均即为MA5。

    剩下的就是买卖点的逻辑判断,比如出现金叉买入、出现死叉卖出之类的。最后record函数还可以选择绘制收盘价、均线的走势。

    整体代码我们会更新到掘金小册课程。

    回测界面如下所示:

    多股票双均线择时策略

    很多时候我们买股票都是买多只股票的,那么如何回测多只股票情况下的双均线择时策略呢?

    比如当某只股票M5上穿M10时达到一定幅度时买入100股,M5下穿M10时则卖出。

    其实主要更改在于建立一个股票池,如下所示:

    # 设置我们要操作的股票池 g.stocks = ['000001.XSHE','000002.XSHE','000004.XSHE','000005.XSHE']

    然后在每次调用交易执行中不断去循环判断这几个股票是否达到交易条件。

    回测界面如下所示:

    总结

    聚宽平台给量化交易者提供了一个很不错的平台,使用过程中,我的感觉是关于内置的API函数还是比较灵活的,特别是与数据相关的接口。前提是要非常熟悉这些接口的特点和使用方法。

    不过回测过程中速度确实有点慢,编写和调试代码的环境和我本地相比是有点不太灵活。

    总体来说瑕不掩瑜吧,大家使用后有什么想法吗?可以在留言区谈谈。

    代码已更新至掘金小册,请查收!

    更多量化交易内容可扫码以下课程!—————————————————海报未更新,直接扫码!  扫码加入星球! 一起搭建属于自己的交易系统 ————————————————— 微信关注:‘元宵大师带你用Python量化交易’
    Processed: 0.010, SQL: 10