想跑次高频策略?快来看看Numpy处理真格量化tick数据的技巧
使用澎博真格量化時(shí),很多用戶(hù)希望用numpy處理tick數(shù)據(jù),包括tick數(shù)據(jù)的留存和運(yùn)算。
這里有一些技巧。
因?yàn)閠ick數(shù)據(jù)量比較大,為了降低系統(tǒng)的運(yùn)算負(fù)擔(dān),我們不應(yīng)該在內(nèi)存里保存大量tick數(shù)據(jù)。
比如我們只想保存過(guò)去10個(gè)tick。
可以在OnStart部分初始化一個(gè)數(shù)組:
tickarray=np.empty(10, dtype ='int16' , order = 'C')
為了全局調(diào)用可以在變量前邊加個(gè)“g.”.
該數(shù)組的初始值全是0。
然后在OnQuote部分,我們可以把最新的tick價(jià)格逐一存儲(chǔ)到這個(gè)g.tickarray里邊。
假設(shè)在一段時(shí)間后,這個(gè)數(shù)組里都已經(jīng)存入了歷史tick價(jià)格。
比如在t時(shí)刻,
這個(gè)數(shù)組里價(jià)格是[2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509]
到了t+1時(shí)刻,有一筆新的tick價(jià)格生成,比如2510,我們用變量newprice代表這個(gè)最新價(jià)格。
由于numpy的array沒(méi)有pop的方法,我們可以用數(shù)組裁切再插入的方法更新這個(gè)tick價(jià)格數(shù)組:
g.tickarray=g.tickarray[1:10] #裁掉數(shù)組的第一個(gè)價(jià)格數(shù)據(jù),也就是2500。
g.tickarray=np.insert(g.tickarray,9,newprice) #把最新價(jià)格插入數(shù)組的最后一位。
現(xiàn)在這個(gè)數(shù)組就被更新為:
[ 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509,2510]
這樣我們就可以回答最新tick比前邊第3個(gè)tick高多少的問(wèn)題。
以及快速計(jì)算這些tick的均值:
g.tickarray.mean()
更加快捷地設(shè)計(jì)基于Tick的交易策略。
不過(guò),這是性能最高的方法么?且聽(tīng)下回分解。
轉(zhuǎn)載于:https://blog.51cto.com/14258357/2373259
總結(jié)
以上是生活随笔為你收集整理的想跑次高频策略?快来看看Numpy处理真格量化tick数据的技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 视频AI,助力体育赛事转播走进智能时代
- 下一篇: 理解 JavaScript 作用域