金融小课堂 | 零基础30天API量化速成_第10讲
修恩笔记
2019-12-23
热度17000

除了好用的web量化交易工具之外,量化世界还有一些超级好用的API进阶工具。

“除了好用的web量化交易工具之外,量化世界还有一些超级好用的API进阶工具作者对以下提及的任何产品都没有既得利益,也未提供投资建议


上一篇课堂中,我介绍了三款好用的web量化交易工具:QuantConnect,Quantopian,QuantRocket :金融小课堂 | 零基础30天API量化速成_第9讲

当你掌握了Quantopian等web工具之后,你会发现,web工具只是入门级工具,而对高级交易员来说,更方便的使用方法是直接使用IDE。

在当今的量化世界,如果您在以上web工具之外想要进一步学习,您将拥有更多的自由。 

话不多说,今天就来为纯技术宅们,介绍3款更好用的API量化工具。

 01 

Zipline

Github地址:https://github.com/quantopian/Zipline

Quantopian的IDE基于Zipline建立。Zipline是用于算法交易的开源回测引擎。 

Zipline在本地运行,并且可以配置为在虚拟环境和Docker容器中运行。 

Zipline具有Quantopian的所有功能,用户可以编写自定义数据进行回测。Zipline还提供来自回测的原始数据,从而允许用于各种用途的可视化。

Zipline在2017年停止了实时交易,但是有一个与Interactive Brokers合作的开源项目Zipline-live。它具有Zipline的许多相同功能,并提供实时交易。

以下一段简单的代码即可实现一个双重移动平均算法:

from zipline.api import order_target, record, symboldef initialize(context):    context.i = 0    context.asset = symbol('AAPL')def handle_data(context, data):    # Skip first 300 days to get full windows    context.i += 1    if context.i < 300:        return    # Compute averages    # data.history() has to be called with the same params    # from above and returns a pandas dataframe.    short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()    long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()    # Trading logic    if short_mavg > long_mavg:        # order_target orders as many shares as needed to        # achieve the desired number of shares.        order_target(context.asset, 100)    elif short_mavg < long_mavg:        order_target(context.asset, 0)    # Save values for later inspection    record(AAPL=data.current(context.asset, 'price'),           short_mavg=short_mavg,           long_mavg=long_mavg)

以上代码写好后,您可以直接使用Zipline CLI运行此算法。

从命令行运行以下命令:

$ QUANDL_API_KEY=<yourkey> zipline ingest -b quandl$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle

执行后,它将会从quandl下载资产定价数据,并在指定的时间范围内通过算法将其流式传输后,将产生的DataFrame保存在dma.pickle中,您可以在Python中对其进行加载和分析。

 02 

backtrader

Github地址:https://github.com/backtrader/backtrader

backtrader是一个功能丰富的Python框架,用于回测和交易。Backtrader应该是目前最流行的回测引擎之一。它是使用纯python构建的并具有在本地运行的简单高效的界面(无Web界面)。

要记住的一件事是,backtrader没有任何数据,但是您可以很容易地将自己的市场数据以csv和其他格式导入。

backtrader允许您专注于编写可重用的交易策略,指标和分析器,而不必花费时间来构建基础结构。

使用backtrader来实现SMA的代码如下:

from datetime import datetimeimport backtrader as btclass SmaCross(bt.SignalStrategy):    def __init__(self):        sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)        crossover = bt.ind.CrossOver(sma1, sma2)        self.signal_add(bt.SIGNAL_LONG, crossover)cerebro = bt.Cerebro()cerebro.addstrategy(SmaCross)data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1),                                  todate=datetime(2012, 12, 31))cerebro.adddata(data0)cerebro.run()cerebro.plot()

BackTrader从1.5.0版本之后就具有了实时交易功能。这在算法交易者中是一个受欢迎的选择,尤其是在Zipline停止实时交易之后。

 03 

IBPy

Github地址:https://github.com/blampe/IbPy

IBPy是InteractiveBroker的Trade Workstation API中独立的第三方Python Wrapper。 

在IB开始为python提供官方API库之前,这是以python编写的算法中连接到TWS的的唯一方式。

目前IB已发布了官方的python SDK,虽然该库正在朝着过时的方向发展(这与python2的大量用户相关),但是仍然有大量的实时交易引擎/工具仍在使用该库。

由于它无处不在,所以最好还是学习一下该库。

如果您是新手,建议您使用IB的官方python SDK。

对于任何想学习实现API的人来说,它都是很好的学习材料。

以上,Enjoy your coding~


作者:修恩

推荐阅读

——End——

『声明:修恩笔记公众号所有文章仅供参考,不构成任何投资建议策略。

据说长得好看的人都点了👇

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96