LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 金融小课堂 _ 零基础30天API量化速成_第12讲

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

2020-01-06 Coinsuper 来源:区块链网络

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

01InteractiveBrokers

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

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

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

02Alpaca

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

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

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

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

docker?run?-i?-p?5993:5993?alpacamarkets/marketstore:latest

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

docker create --name mktsdb -p 5993:5993 alpacamarkets/marketstore:latest

docker cp mkts.yml mktsdb:/etc/mkts.yml

docker start -i mktsdb

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

marketstore?connect?--url?localhost:5993

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

go?get?-u?github.com/alpacahq/marketstore

然后在repo目录中,使用:

make?vendor

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

make?install

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

$GOPATH/bin/marketstore

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

$GOPATH/bin/marketstore?init

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

$GOPATH/bin/marketstore?start

输出大概长这样:

example@alpaca:~/go/bin/src/github.com/alpacahq/marketstore$ marketstore

I0619 16:29:30.102101????7835?log.go:14] Disabling "enable_last_known"?feature until it is fixed...

I0619 16:29:30.102980????7835?log.go:14] Initializing MarketStore...

I0619 16:29:30.103092????7835?log.go:14] WAL Setup: initCatalog true, initWALCache true, backgroundSync true, WALBypass false:

I0619 16:29:30.103179????7835?log.go:14] Root Directory: /example/go/bin/src/github.com/alpacahq/marketstore/project/data/mktsdb

I0619 16:29:30.144461????7835?log.go:14] My WALFILE: WALFile.1529450970104303654.walfile

I0619 16:29:30.144486????7835?log.go:14] Found a WALFILE: WALFile.1529450306968096708.walfile, entering replay...

I0619 16:29:30.244778????7835?log.go:14] Beginning WAL Replay

I0619 16:29:30.244861????7835?log.go:14] Partial Read

I0619 16:29:30.244882????7835?log.go:14] Entering replay of TGData

I0619 16:29:30.244903????7835?log.go:14] Replay of WAL file /example/go/bin/src/github.com/alpacahq/marketstore/project/data/mktsdb/WALFile.1529450306968096708.walfile finished

I0619 16:29:30.289401????7835?log.go:14] Finished replay of TGData

I0619 16:29:30.340760????7835?log.go:14] Launching rpc data server...

I0619 16:29:30.340792????7835?log.go:14] Initializing websocket...

I0619 16:29:30.340814????7835?plugins.go:14] InitializeTriggers

I0619?16:29:30.340824????7835?plugins.go:42]?InitializeBgWorkers

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

root_directory: data

listen_port: 5993

log_level: info

queryable: true

stop_grace_period: 0

wal_rotate_interval: 5

stale_threshold: 5

enable_add: true

enable_remove: false

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

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

数据查询:

import pymarketstore as pymkts

param = pymkts.Params('BTC', '1Min', 'OHLCV', limit=10)

cli = pymkts.Client()

reply = cli.query(param)

reply.first().df()

数据展示:

Out[5]:

Open??????High???????Low?????Close?????Volume

Epoch

2018-01-17?17:19:00+00:00 ?10400.00 ?10400.25 ?10315.00 ?10337.25 ??7.772154

2018-01-17?17:20:00+00:00 ?10328.22 ?10359.00 ?10328.22 ?10337.00 ?14.206040

2018-01-17?17:21:00+00:00 ?10337.01 ?10337.01 ?10180.01 ?10192.15 ??7.906481

2018-01-17?17:22:00+00:00 ?10199.99 ?10200.00 ?10129.88 ?10160.08 ?28.119562

2018-01-17?17:23:00+00:00 ?10140.01 ?10161.00 ?10115.00 ?10115.01 ?11.283704

2018-01-17?17:24:00+00:00 ?10115.00 ?10194.99 ?10102.35 ?10194.99 ?10.617131

2018-01-17?17:25:00+00:00 ?10194.99 ?10240.00 ?10194.98 ?10220.00 ??8.586766

2018-01-17?17:26:00+00:00 ?10210.02 ?10210.02 ?10101.00 ?10138.00 ??6.616969

2018-01-17?17:27:00+00:00 ?10137.99 ?10138.00 ?10108.76 ?10124.94 ??9.962978

2018-01-17?17:28:00+00:00 ?10124.95 ?10142.39 ?10124.94 ?10142.39 ??2.262249

写入数据:

import?numpy as?np

import?pandas as?pd

data?= 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()

展示:

Ask

Epoch

2017-01-01?00:00:00+00:00 ?10.0

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

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

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

—-

编译者/作者:Coinsuper

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

LOADING...
LOADING...