“聲明:作者對以下提及的任何產品都沒有既得利益宛徊,也未提供投資建議”
?在量化世界捺萌,有一些不得不提一些知名broker。
?01?
InteractiveBrokers
想必InteractiveBrokers的中文名大家已經很熟悉了:盈透證券焚鹊,是面向活躍交易者的在線經紀交易商央串。
他們自1978年以來就進入了交易市場粘茄。算法交易不是IB的重點先朦,但是多個引擎通過與他們的Trader Workstation集成提供實時交易次洼。
我們已經在前幾篇文章中多次提到IB了-它的確非常棒似炎。
?02?
Alpaca
Alpaca成立于2015年辛萍,是一家新興的免傭金經紀商,專為算法交易而設計羡藐。
Alpaca還具有交易API以及多個開源工具贩毕,其中包括針對時間序列財務數據進行了優(yōu)化的數據庫,稱為MarketStore仆嗦。您可以將MarketStore視為可擴展的DataFrame服務辉阶,該服務可從系統(tǒng)中的任何位置以更高的可伸縮性進行訪問。
如果您想立即開始使用瘩扼,可以使用最新的docker映像來引導marketstore數據庫實例。?
該映像已預加載了默認的mkts.yml文件集绰,并聲明VOLUME / data作為其根目錄规辱。要使用默認值運行容器:
dockerrun?-i?-p5993:5993alpacamarkets/marketstore:latest
如果要對實例運行自定義mkts.yml罕袋,則可以創(chuàng)建一個新容器,將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)中實現(xiàn)的,因此您可以很輕松地從源代碼構建它蔼啦。您需要Go 1.11+,因為它使用go mod來管理依賴項:
goget-u?github.com/alpacahq/marketstore
然后在repo目錄中,使用:
makevendor
然后使用以下命令編譯并安裝項目二進制文件:
makeinstall
您可以通過運行列出可用命令:
$GOPATH/bin/marketstore
您可以創(chuàng)建一個名為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初始化來創(chuàng)建默認文件(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是專為解決可擴展性問題而設計的批销,該可擴展性問題涉及處理算法交易回測洒闸,圖表繪制和分析價格歷史中使用的大量金融市場數據,這些數據跨越時間橫截面均芽,并且粒度降低到包含所有美國股票或爆發(fā)的加密貨幣領域丘逸。
如果您正在努力管理大量HDF5文件,那么這是解決您問題的完美解決方案掀宋。MarketStore使您可以通過網絡查詢DataFrame內容深纲,而延遲時間與磁盤上的本地HDF5文件一樣低,并且將新數據追加到末尾的速度比DataFrame快兩個數量級劲妙。這是因為存儲格式針對數據類型和用例以及現(xiàn)代文件系統(tǒng)/硬件特性進行了優(yōu)化湃鹊。
以上
作者:修恩
▎推薦閱讀
『聲明:修恩筆記公眾號所有文章僅供參考,不構成任何投資建議策略镣奋。』
據說長得好看的人都點了??