水晶球APP 高手云集的股票社区
下载、打开
X

推荐关注更多

柴孝伟

买进就值,越来越值,时享价...


邢星

邢 星 党员,国...


石建军

笔名:石天方。中国第一代投...


揭幕者

名博


洪榕

原上海大智慧执行总裁


小黎飞刀

黎仕禹,名博


启明

私募基金经理,职业投资人


李大霄

前券商首席经济学家


桂浩明

申万证券研究所首席分析师


宋清辉

著名经济学家宋清辉官方账号...


banner

banner

金融小课堂 _ 零基础30天API量化速成_第10讲

Coinsuper官方   / 2019-12-23 11:28 发布

“除了好用的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是用于算法交易的开源回测引擎。 

图片1.png 

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

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

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

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

from zipline.api import order_target, record, symbol

def 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= 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 datetime

import backtrader as bt

class 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的大量用户相关),但是仍然有大量的实时交易引擎/工具仍在使用该库。

图片2.png 

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

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

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

图片3.png