使用澎博真格量化時,很多用戶希望用numpy處理tick數據,包括tick數據的留存和運算。
這裏有一些技巧。
因爲tick數據量比較大,爲了降低系統的運算負擔,我們不應該在內存裏保存大量tick數據。
比如我們只想保存過去10個tick。
可以在OnStart部分初始化一個數組:
tickarray=np.empty(10, dtype ='int16' , order = 'C')
爲了全局調用可以在變量前邊加個“g.”.
該數組的初始值全是0。
然後在OnQuote部分,我們可以把最新的tick價格逐一存儲到這個g.tickarray裏邊。
假設在一段時間後,這個數組裏都已經存入了歷史tick價格。
比如在t時刻,
這個數組裏價格是[2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509]
到了t+1時刻,有一筆新的tick價格生成,比如2510,我們用變量newprice代表這個最新價格。
由於numpy的array沒有pop的方法,我們可以用數組裁切再插入的方法更新這個tick價格數組:
g.tickarray=g.tickarray[1:10] #裁掉數組的第一個價格數據,也就是2500。
g.tickarray=np.insert(g.tickarray,9,newprice) #把最新價格插入數組的最後一位。
現在這個數組就被更新爲:
[ 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509,2510]
這樣我們就可以回答最新tick比前邊第3個tick高多少的問題。
以及快速計算這些tick的均值:
g.tickarray.mean()
更加快捷地設計基於Tick的交易策略。
不過,這是性能最高的方法麼?且聽下回分解。