首页 > 资讯 > 热点|支点投资:金融小课堂 _ 零基础30天API量化速成_第12讲
币圈观察  

热点|支点投资:金融小课堂 _ 零基础30天API量化速成_第12讲

摘要:摘要:Coinsuper带你盘点在量化世界中,那些不得不提的知名broker。在量化世界,有一些不得不提一些知名broker。01:InteractiveBro

摘要:Coinsuper带你盘点在量化世界中,那些不得不提的知名broker。在量化世界,有一些不得不提一些知名broker。01:InteractiveBrokers想必InteractiveBroker

Coinsuper带你盘点在量化世界中,那些不得不提的知名broker。

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

 

 01 :InteractiveBrokers

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

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

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

支点投资:金融小课堂 _ 零基础30天API量化速成_第12讲-区块链315

 02 :Alpaca

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

支点投资:金融小课堂 _ 零基础30天API量化速成_第12讲-区块链315

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快两个数量级。这是因为存储格式针对数据类型和用例以及现代文件系统/硬件特性进行了优化。

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

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。