由於最近本身在研究怎麼樣作期貨和股票的交易,其中涉及到對交易系統的測試。能夠直接作手工測試,可是爲了提升效率仍是想要研究一下怎麼作到自動來作歷史數據的回測。經過網上搜索找到了Backtrader 這個工具。下面和你們簡單介紹一下這個工具。html
Backtrader 是一個基於Python語言的進行自動化回溯測試的平臺。能夠添加自定義的指標和交易策略,提升對交易系統回測的效率。工具
這個工具能夠導入本身的行情數據文件,也能夠添加自定義的指標。 測試結束後能顯示指標和行情圖表,並且能夠對指標的不一樣參數設置進行批量測試。測試
MA均線應該是最經常使用的指標之一了。那麼下面就使用兩條簡單MA均線的交叉來做爲交易策略。 具體代碼以下:.net
from datetime import datetime import backtrader as bt #新建均線交叉的交易策略,快線是10週期,慢線是30週期 class SmaCross(bt.SignalStrategy): params = (('pfast', 10), ('pslow', 30),) def __init__(self): sma1, sma2 = bt.ind.SMA(period=self.p.pfast), bt.ind.SMA(period=self.p.pslow) self.signal_add(bt.SIGNAL_LONG, bt.ind.CrossOver(sma1, sma2)) # 新建回測平臺實例 cerebro = bt.Cerebro() # 在線下載雅虎的特定時間段的股票行情信息 data = bt.feeds.YahooFinanceData(dataname='YHOO', fromdate=datetime(2011, 1, 1), todate=datetime(2012, 12, 31)) # 添加剛剛獲取的股票行情信息 cerebro.adddata(data) # 添加交易策略(交易系統或交易方法) cerebro.addstrategy(SmaCross) # 運行交易回測 cerebro.run() # 顯示測試運行後的圖表 cerebro.plot()
上面的代碼中,首先是創建均線交叉的交易策略,而後獲取股票的行情數據,最後加載數據和交易策略並運行,最後顯示圖表。code
其中獲取期貨行情數據的方法能夠參考這篇文章: 《 利用Python腳原本獲取期貨行情數據》htm
本身以前閱讀過的交易相關書籍《走進個人交易室》,本書做者埃爾德博士的觀點是,最好經過手工測試的方法來對本身的交易系統進行檢測。而不是經過使用自動化工具來作檢測,若是對本身的交易系統不是特別熟悉和了解的狀況下,只是使用自動化工具來測試,這樣的意義不大。畢竟真實的交易環境是很是複雜的,特別是止盈和止損單的設置等。若是隻是經過自動化工具來測試了交易系統,那麼有一些細節問題可能只會到實盤的操做時才發現。相比來講經過手工每次展現一根K線的模擬方式來測試,才更加接近實盤操做,這樣也培養了交易的感受和加強了對交易系統的信心。blog
那麼Backtrader這樣的回測工具備什麼用處呢?我理解主要是能夠對指標的不一樣參數設置作測試。例如MA均線能夠設置不一樣的時間長度,那麼什麼樣的參數設置的效果更好呢?若是經過人工手動將每一個參數都測試的話,那麼就會很繁瑣。因此能夠經過工具來尋找交易系統中使用到的每一個指標更好的參數數值。get
參考文獻:it
https://www.backtrader.com/自動化
https://www.backtrader.com/docu/index.html
《走進個人交易室》 著 亞歷山大 埃爾德