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

“声明:作者对以下提及的任何产品都没有既得利益,也未提供投资建议”

​在量化世界,有一些不得不提一些知名broker。

 01 

InteractiveBrokers

想必InteractiveBrokers的中文名大家已经很熟悉了:盈透证券,是面向活跃交易者的在线经纪交易商。

他们自1978年以来就进入了交易市场。算法交易不是IB的重点,但是多个引擎通过与他们的Trader Workstation集成提供实时交易。

我们已经在前几篇文章中多次提到IB了-它的确非常棒。

金融小课堂 | 零基础30天API量化速成_第12讲_第1张图片

 02 

Alpaca

Alpaca成立于2015年,是一家新兴的免佣金经纪商,专为算法交易而设计。

金融小课堂 | 零基础30天API量化速成_第12讲_第2张图片

Alpaca还具有交易API以及多个开源工具,其中包括针对时间序列财务数据进行了优化的数据库,称为MarketStore。您可以将MarketStore视为可扩展的DataFrame服务,该服务可从系统中的任何位置以更高的可伸缩性进行访问。

如果您想立即开始使用,可以使用最新的docker映像来引导marketstore数据库实例。 

该映像已预加载了默认的mkts.yml文件,并声明VOLUME / data作为其根目录。要使用默认值运行容器:

dockerrun -i -p5993:5993alpacamarkets/marketstore:latest

如果要对实例运行自定义mkts.yml,则可以创建一个新容器,将mkts.yml文件加载到其中,然后运行:

dockercreate --name mktsdb -p 5993:5993 alpacamarkets/marketstore:latestdockercp mkts.yml mktsdb:/etc/mkts.ymldockerstart -i mktsdb

使用正在运行的docker实例打开会话:

marketstoreconnect--urllocalhost:5993

MarketStore是在Go(带有某些CGO)中实现的,因此您可以很轻松地从源代码构建它。您需要Go 1.11+,因为它使用go mod来管理依赖项:

goget-u github.com/alpacahq/marketstore

然后在repo目录中,使用:

makevendor

然后使用以下命令编译并安装项目二进制文件:

makeinstall

您可以通过运行列出可用命令:

$GOPATH/bin/marketstore

您可以创建一个名为mkts.yml的新配置文件,并通过运行以下命令填充默认值:

$GOPATH/bin/marketstore init

然后使用以下命令启动marketstore:

$GOPATH/bin/marketstore start

输出大概长这样:

example@alpaca:~/go/bin/src/github.com/alpacahq/marketstore$ marketstoreI061916:29:30.1021017835log.go:14] Disabling"enable_last_known"feature until it is fixed...I061916:29:30.1029807835log.go:14] Initializing MarketStore...I061916:29:30.1030927835log.go:14] WAL Setup: initCatalogtrue, initWALCachetrue, backgroundSynctrue, WALBypassfalse:I061916:29:30.1031797835log.go:14] Root Directory: /example/go/bin/src/github.com/alpacahq/marketstore/project/data/mktsdbI061916:29:30.1444617835log.go:14] My WALFILE: WALFile.1529450970104303654.walfileI061916:29:30.1444867835log.go:14] Found a WALFILE: WALFile.1529450306968096708.walfile, entering replay...I061916:29:30.2447787835log.go:14] Beginning WAL ReplayI061916:29:30.2448617835log.go:14] Partial ReadI061916:29:30.2448827835log.go:14] Entering replay of TGDataI061916:29:30.2449037835log.go:14] Replay of WAL file /example/go/bin/src/github.com/alpacahq/marketstore/project/data/mktsdb/WALFile.1529450306968096708.walfile finishedI061916:29:30.2894017835log.go:14] Finished replay of TGDataI061916:29:30.3407607835log.go:14] Launching rpc data server...I061916:29:30.3407927835log.go:14] Initializing websocket...I061916:29:30.3408147835plugins.go:14] InitializeTriggersI061916:29:30.3408247835plugins.go:42] InitializeBgWorkers

为了运行MarketStore,需要一个YAML配置文件。可以使用marketstore初始化来创建默认文件(mkts.yml)。该文件的路径通过--config标志传递给start命令,或者默认情况下,它将在运行该目录的目录中找到一个名为mkts.yml的文件,默认的mkts.yml长这样:

root_directory: datalisten_port: 5993log_level: infoqueryable: truestop_grace_period: 0wal_rotate_interval: 5stale_threshold: 5enable_add: trueenable_remove: false

在计算机上启动MarketStore实例后,就可以读取和写入报价数据了。

pymarketstore是标准的python客户端。请确保在另一个终端中,您正在运行marketstore。

数据查询:

import pymarketstore as pymktsparam = pymkts.Params('BTC', '1Min', 'OHLCV', limit=10)cli = pymkts.Client()reply = cli.query(param)reply.first().df()

数据展示:

Out[5]:OpenHighLowCloseVolumeEpoch2018-01-1717:19:00+00:0010400.0010400.2510315.0010337.257.7721542018-01-1717:20:00+00:0010328.2210359.0010328.2210337.0014.2060402018-01-1717:21:00+00:0010337.0110337.0110180.0110192.157.9064812018-01-1717:22:00+00:0010199.9910200.0010129.8810160.0828.1195622018-01-1717:23:00+00:0010140.0110161.0010115.0010115.0111.2837042018-01-1717:24:00+00:0010115.0010194.9910102.3510194.9910.6171312018-01-1717:25:00+00:0010194.9910240.0010194.9810220.008.5867662018-01-1717:26:00+00:0010210.0210210.0210101.0010138.006.6169692018-01-1717:27:00+00:0010137.9910138.0010108.7610124.949.9629782018-01-1717:28:00+00:0010124.9510142.3910124.9410142.392.262249

写入数据:

importnumpyasnpimportpandasaspddata= np.array([(pd.Timestamp('2017-01-01 00:00').value /10**9,10.0)], dtype=[('Epoch','i8'), ('Ask','f4')])cli.write(data,'TEST/1Min/Tick')# Out[10]: {'responses': None}​cli.query(pymkts.Params('TEST','1Min','Tick')).first().df()

展示:

AskEpoch2017-01-0100:00:00+00:0010.0

MarketStore是专为解决可扩展性问题而设计的,该可扩展性问题涉及处理算法交易回测,图表绘制和分析价格历史中使用的大量金融市场数据,这些数据跨越时间横截面,并且粒度降低到包含所有美国股票或爆发的加密货币领域。

如果您正在努力管理大量HDF5文件,那么这是解决您问题的完美解决方案。MarketStore使您可以通过网络查询DataFrame内容,而延迟时间与磁盘上的本地HDF5文件一样低,并且将新数据追加到末尾的速度比DataFrame快两个数量级。这是因为存储格式针对数据类型和用例以及现代文件系统/硬件特性进行了优化。

以上

作者:修恩

推荐阅读

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

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

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

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

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

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

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

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

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

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

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

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

金融小课堂 | 零基础30天API量化速成_第12讲_第3张图片

据说长得好看的人都点了

你可能感兴趣的:(金融小课堂 | 零基础30天API量化速成_第12讲)