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

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

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

 01 

InteractiveBrokers

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

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

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

 02 

Alpaca

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

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讲

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

据说长得好看的人都点了👇

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容