LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 金融小课堂 _ 零基础30天API量化速成_第10讲

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

2019-12-23 Coinsuper 来源:区块链网络

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

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

IBALWVhNQdpGV5WhAsrytdAxtsatOPu14QNfQOT7.png

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

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

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

?gGUp2W7xnMN1rgoVYl6pli35R0JBA9e0H1MTL2Rb.png

—-

编译者/作者:Coinsuper

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...