十分鐘學會寫量化策略本文通過講述 [單股票均線策略] 在 Ricequant 量化平臺的實現,熟悉平臺并快速入門、創建自己的量化策略代碼。 難易度:入門級 那么以下我們就先從 [單股票均線策略] 的代碼實現及進行日級別回測講起吧。 1 確定框架:[單股票均線策略] 的主要策略框架: 5 日均線高于 30 天均線,則全倉買入股票 5 日均線低于 30 天均線,則賣出所持股票 從我們日常交易的角度,一般交易者的行為可以拆分以下兩部分: 1 選擇標的(初始化): 在交易之前,我們通常會先選定要交易的股票池或者單個股票 2 交易(每天盯盤): 我們會觀察該股票的五日均線和 30 日均線,并進行比較 如果該股票的五日均線在 30 天均線以上,則全倉買入股票 如果該股票的五日均線在 30 天均線以下,則全倉賣出(空倉) 那么程序中,我們是怎么做的呢? 先看看 Ricequant 平臺中對應的代碼框架會是怎么樣的吧: ![]() 對照策略思路 及 Ricequant 代碼框架,你會發現我們可以很輕松地把 兩者結合起來 以上框架也是 Ricequant 平臺的最基本也最主要的框架,也就是 1.初始化2.循環 - 根據選擇的頻率(日、分鐘)循環運行 2 初始化:選擇標的:本策略的交易股票設定為 300059 ”東方財富“。 ![]() 延伸閱讀: 1 在 init 中實現程序的初始化,例如存入目標股票池,設置滑點、基準等參數以及設置其它變量。 context 是一個全局的容器,你可以通過它設置任何全局變量并初始化:如 context.stock 將會在后面代碼所被調用到。 2 代碼中 # 代表注釋,作為代碼說明,執行時會被跳過而不為程序所運行。 3 如何填寫股票代碼:你會發現策略代碼中 股票代碼后帶有后綴,那么它們分別代表什么呢? 后綴為 (1)XSHE 代表在深交所上市交易的股票XSHG 在上交所上市交易的股票例子: (2)300059.XSHE 為深交所上市的東方財富600000.XSHG 為上交所上市的浦發銀行我們的代碼編輯器還提供了非常便利的股票代碼自動尋找和補全功能,在 Windows 中你可以用 ctrl+i, Mac 系統你可以用 cmd+i 激活證券代碼自動補全功能。如下圖: ![]() 3 獲取均價:我們分別獲取該股票 5 日和 30 日的均價 ![]() 4 判斷買賣條件:獲得均價數據之后,我們就可以進行一個判斷決定是否買賣了: ![]() 在判斷之前,我們還漏了一步,那是什么呢?就是要知道我們有多少現金,那么在程序中是如何獲得現金的呢?我們使用以下代碼 ![]() 延伸閱讀: portfolio 中 包含所有的投資組合的信息,請參考文檔 - Portfolio 對象 5 買入 /賣出:在判定買賣的條件成立之后,我們會對股票進行買入或者賣出的操作: ![]() 6 策略回測 以上,我們用幾行代碼就把策略的框架完整地搭建起來了,最終的完整代碼為: ![]() 寫完了策略,那么我們接下去做什么呢? 先對我們的策略進行一次歷史回測,看看它的歷史表現是如何吧。 在策略編輯頁面右上方,選擇從2015年1月4日至2016年10月4日,用資金10萬元進行日回測吧,請點擊 運行回測 ![]() 如代碼沒有問題,在數秒之后,我們就會拿到該策略的歷史表現結果: ![]() 我們可以看到回測詳情中有精致的圖表,詳細的各項風險收益指標、以及持倉、落單等詳情輔助你進一步了解你的策略的表現。 到這里,一個完整的從 [構建策略思路] 到 [策略代碼編寫] 到 [回測結果檢驗] 的流程就結束了。 7 從日回測到分鐘回測:在循環部分, handle 函數根據選擇的頻率(日、分鐘)循環運行,在以上的日回測中, handle 內的代碼會每日被觸發一次 如果是進行分鐘回測或模擬實盤,那么這個 handle 里的代碼就會被每分鐘觸發一次; 因此,我們的代碼邏輯也勢必要進行一定的改進,使得策略按照我們的邏輯正常地運行。 我們先把修改好的代碼貼上來: ![]() 可以看到這里改動并不多, 這里需要介紹到框架中常用到的函數 before_trading : ![]() 我們在 before_trading 中設置一個變量命名為 fired ,賦值為0 ![]() 由于 before_trading 是每天開盤前運行一次,所以 context.fired 會被每天重置為 0 在 handle 函數中,我們加入了判斷,如 context.fired 為 0 ,則繼續執行下面的代碼,否則本次循環結束。 ![]() 并在執行完判斷和買賣操作之后,設定 context.fired 的值等于 1 ,使得當日余下的分鐘循環操作均被跳過。 ![]() 在完成以上代碼后,我們開始進行分鐘回測吧: 在策略編輯頁面右上方,選擇從2015年1月4日至2016年10月4日 ,用資金10萬元進行分鐘回測吧,請點擊 運行回測 ![]() 8 模擬交易:模擬交易通過實時的分鐘切片數據進行撮合,也就是 handle 函數會每分鐘被觸發一次循環。在開啟你的策略的模擬交易之前, 你必須要對它進行一次分鐘回測,才可以開啟模擬交易。在上面分鐘回測之后,你可以在策略回測詳情頁面點擊 開啟模擬交易。 然后你將在模擬交易列表中看到進行中的策略。 ![]() 9 開啟微信通知,接收交易信號:點擊導航欄中的 [我的策略] ,可以在 [模擬交易] 一欄看到創建的模擬交易,如下圖: ![]() 點擊右邊的微信通知開關,將 OFF 調至 ON ,并按照指示掃描二維碼,綁定微信,就能通過微信接收交易信號了。 當該策略進行買賣操作,你的微信會收到類似下圖的信號提醒。微信推送的延遲非常小,使得你能根據信號進行及時的下單操作。 ![]() 是不是很輕松,數行代碼就可以把你的投資策略變成代碼,大家都來試試吧! @今日話題 @一只特立獨行的豬 @量化鋼鐵俠 @ETF拯救世界 @市值風云 @DAVID自由之路 @沒干貨不廢話 @stockmarker @弱弱的投資者 |
|
來自: 昵稱36538943 > 《待分類》