Day14 - Shioaji X Backtesting -回测框架搭配API历史资料

Hi,介绍了api的各种函数後,相信读者一定很好奇,有了这些资料之後要怎麽回测啊?
毕竟在开始实单做程序交易之前,交易策略到底会赚钱还是赔钱,没有回测真的不敢用啊!

目前主流的量化交易方式分成两类:

  • 使用专业软件
  • 自行开发

专业软件以MultiCharts市占率最高,而外汇保证金的部分则有很多人使用MT5。
不过今天要介绍的是自行开发的部分,目前已有很多回测框架,让大家不用从0开始,像是:

  • Backtrader
  • vn.py
  • QuantConnect
  • Zipline
  • PyAlgoTrade**

今天要介绍的是一款图画起来很漂亮的回测框架 - Backtesting。

首先用 pip install backtesting安装,
安装完後历史数据的部分可以从我们的Shioaji抓,
标的我们就先以2330台积电为例,输入完起讫日期後,把分K资料转为日K并放到df里。

import shioaji as sj
import pandas as pd

api = sj.Shioaji(backend='https', simulation=False)
#抓取2330台积电2020年到2021年9月的K线资料
kbars =api.kbars(contract=api.Contracts.Stocks['2330'], start = '2020-01-01', end = '2021-09-22' )
#转成dataframe
df = pd.DataFrame({**kbars})
df.ts = pd.to_datetime(df.ts)

#分K转成日K
df.set_index(df.ts,inplace=True)
df = df.resample('D').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume':'sum'})
df.dropna(inplace=True)
df.head(5)

Out:

| ts                  |   Open |   High |   Low |   Close |   Volume |
|:--------------------|-------:|-------:|------:|--------:|---------:|
| 2020-01-02 00:00:00 |  332.5 |  339   | 332.5 |   339   |    31656 |
| 2020-01-03 00:00:00 |  344   |  345   | 335.5 |   339.5 |    41711 |
| 2020-01-06 00:00:00 |  333   |  334.5 | 332   |   332   |    44900 |
| 2020-01-07 00:00:00 |  332.5 |  333   | 326.5 |   329.5 |    50762 |
| 2020-01-08 00:00:00 |  325   |  333   | 325   |   329.5 |    37426 |

处理完资料後就可以来介绍backtesting拉,大家准备好了吗?
下面先放一张图给大家闻香一下,
图的上方可以显示出的净值曲线变化、区间内每笔交易赚赔及进出场、
接下来几篇会和大家介绍怎麽用backtesting来实做交易策略!


<<:  DAY15支持向量机演算法(续四)

>>:  DAY27-JAVA的集合物件

LeetCode 896. Monotonic Array

题目 An array is monotonic if it is either monotone ...

[如何关掉TP-Link WR841N的Beacon]

目前在做学校实验,用analyzer收集wifi讯号时都会出现beacon的干扰,请问该如何关掉他或...

CLOUDWAYS 服务器方案评比 - linode / VULTR-HF / Digital Ocean-DP

在 CLOUDWAYS❐ 中,提供了5大云端主机供应商的方案☞ linode 、 VULTR 、 D...

Day04 透过实作一个web 页面介绍 component 的概念

React是由component所组成,Component可以将 UI 拆分成独立且可重复使用的程序...

行政调查(administrative investigation)

-证据大图 行政调查是内部调查。 调查(Investigation) 调查:调查或研究,检查与某事...