zipline股票、bitcoin回測軟體介紹(python)--(中)
Zipline提供一種code的架構,讓使用者可以新增函式來完善自己的演算法。下面是zipline的基本結構:
一開始我們必須先引進一些必須的函式。每一個zipline演算法都有兩個必要的函式,且你必須要定義這兩個函式:
* initialize(context)
* handle_data(context, data)
在開始跑寫演算法之前,zipline會先呼叫initialize()這個函式且傳遞一個全域context變數。Context是一個全域變數讓你可以儲存變數,且當你需要的時候可以呼叫它。
在演算法起始化之後,zipline會呼叫handle_data()這個函式(每次事件(event)呼叫一次)。每次呼叫函式後,它會傳遞一樣的context變數和一個事件的框架,這個框架會包含現在要交易的日期的開盤價、最高價、最低價、收盤價(OHLC)、成交量(每支股票)。
大部分的函式通常可以在Zipline.api這模組可以找到。這裡我們使用order(arg1, arg2),這裡有兩個參數:一個是股票名稱,另一個是要下單的數量(假如這個值是負的,代表要放空股票)。在下面的範例,我們想要在每次事件購買10股的Apple(蘋果股票)。
第二個函式record()讓你可以儲存一些變數在每個事件後。你可以給每個變數一個名子。在跑完演算法後你可以呼叫你儲存的變數。
要跑演算法,你必須呼叫TradingAlgorithm()。它有兩個參數,initialize()和handle_data()。然後呼叫run方法(資料是pandas dataframe,且儲存每個股票資料)run()函式會先呼叫initialize()函式,且跑過歷史股票每一天透過handle_data()。透過每次呼叫handle_data(),我們指示zipline買進10股appl股票。