更多精彩內容,歡迎關注公眾號:數量技術宅。想要獲取本期分享的完整策略程式碼,請加技術宅微信:sljsz01
交易開拓者(後文以TB簡稱)是一個支援國內期貨市場K線資料回測、交易的第三方交易平臺。TB自帶回測框架,投資者在開發量化策略時,只需關注實現策略主邏輯,它的自帶程式語言相比較C++、Python也更簡單,適合程式設計零基礎的投資者快速上手。TB自帶的基於K線的回測框架,在期貨市場已經經過許多交易員多年實盤的檢驗,結果穩定可靠。
儘管TB回測框架完善、語法簡單。但其內建的資料侷限於期貨市場的歷史資料,如果我們需要測試其他類別的資產,比如數字貨幣,就需要通過外部匯入資料的方式。
本次分享,我們將帶著大家學習從數字貨幣歷史K線資料的獲取、轉換為TB支援的資料格式匯入、在TB中利用匯入的歷史資料測試數字貨幣的交易策略、最終得到策略回測結果的這一全過程。
數字貨幣K線資料的獲取
本次測試,我們將採用數字貨幣的大週期K線資料。我們曾經在前文的分享中提到過數字貨幣免費資料的獲取途徑,對於大週期K線資料,可以從CryptoData網站下載資料。這次我們將下載幣安交易所的歷史資料,該網站幣安交易所能獲取到的數字貨幣品種更為豐富。
我們選擇幣安交易所 BTC/USD 1小時K線資料下載,下載得到的原始資料,開啟欄位如下。
資料轉換格式、匯入TB
請大家注意,下載資料雖然包含了K線所需的全部欄位:日期時間、開、高、低、收、成交量、成交額,但這個資料是無法直接匯入TB的。匯入TB的資料,我們需要和TB本身支援的資料欄位格式,完全一致。我們先從TB下載其內建的期貨資料,看一下內建資料的欄位格式,我們以滬銀期貨,同樣是1小時週期的K線為例。
通過對比TB內建的資料格式,與我們現有數字貨幣的資料格式,有以下幾個地方需要預處理:一是,日期時間的格式需要轉換;二是,Symbol列不需要,將其去除;三是,成交量(VolumeBTC、VolumeUSDT)保留一列即可。
我們使用Python,按照上述三點規則,對資料進行預處理,並存為新的CSV檔案。以上是部分程式碼,完整程式碼請聯絡小編。開啟儲存的csv檔案,檢視資料欄位格式是否成功轉換。需要特別注意,儲存的檔案不能有列名,否則TB會產生匯入錯誤。
緊接著,我們就將處理好的資料匯入TB。選擇資料管理,由於沒有數字貨幣對應的交易所,此處隨機選擇一個交易所即可,點選自定義商品。
填寫該品種的基本屬性資料。其中的重要欄位:(1)報價精度,根據原始資料精度填寫;(2)最小變動,1即為1個報價精度單位;(3)交易時間段:數字貨幣24小時不間斷交易。
再選擇資料維護欄,商品選擇剛才新建的品種名稱,由於我們匯入的是1小時K線,週期選擇1小時。
點選匯入資料,選項按預設設定即可,選擇我們剛才用Python預處理好並儲存的csv檔案。此時TB提示匯入成功,下方資料欄顯示正確的K線資料,就說明我們自定義的資料,已經成功匯入。
數字貨幣交易策略的開發、回測
成功匯入數字貨幣BTC/USD的1小時K線資料後,接下來就進入最激動人心的一步:量化策略的回測。我們首先新建一個超級圖表,該圖表正常顯示btcusdt這個新定義品種的K線資料,於是我們可以基於這個超級圖表,來做接下來的回測。
我們將在期貨市場開發的一個交易策略,移植到數字貨幣市場,不需要修改任何程式碼,直接進行測試。
TB輕鬆完成了我們匯入品種的回測,可以看到,測試的效果讓人驚喜,以btc為代表的數字貨幣市場,策略表現不錯。
如果你想要本次的完整程式碼,歡迎加小編微信,與我交流。
往期乾貨分享推薦閱讀
【數量技術宅|量化投資策略系列分享】基於指數移動平均的股指期貨交易策略
AMA指標原作者Perry Kaufman 100+套交易策略原始碼分享
【數量技術宅|金融資料系列分享】套利策略的價差序列計算,恐怕沒有你想的那麼簡單
【數量技術宅|量化投資策略系列分享】成熟交易者期貨持倉跟隨策略
【數量技術宅|金融資料分析系列分享】為什麼中證500(IC)是最適合長期做多的指數
商品現貨資料不好拿?商品季節性難跟蹤?一鍵解決沒煩惱的Python爬蟲分享
【數量技術宅|金融資料分析系列分享】如何正確抄底商品期貨、大宗商品