在量化世界,有一些不得不提一些知名broker。 01:InteractiveBrokers 想必InteractiveBrokers的中文名大家已经很熟悉了:盈透证券,是面向活跃交易者的在线经纪交易商。 他们自1978年以来就进入了交易市场。算法交易不是IB的重点,但是多个引擎通过与他们的Trader Workstation集成提供实时交易。 我们已经在前几篇文章中多次提到IB了-它的确非常棒。 02:Alpaca 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 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
金融小课堂 _ 零基础30天API量化速成_第12讲
2020-01-06 Coinsuper 来源:区块链网络
LOADING...
相关阅读:
- 比特币价格维持在11150美元附近,会发生什么?2020-08-03
- 解密复杂的OK高层双边架构职业经理人管理趋于稳定2020-08-03
- 如何选择加密货币基金的一般策略,第1部分2020-08-03
- 以太坊价格比BTC具有更好的未来回报?风险资本家预测ETH将进一步增加2020-08-03
- 霍德勒文摘,7月27日至8月。 22020-08-03