因為最近做的東西牽涉到自動計算這一塊,在網上搜了一下,基本上python做自動量化交易成了一個趨勢,於是花了兩天學習一下。
目標很簡單,學習,使用。
rqalpha看起來是比較成熟的,這兒看重的是自帶日線數據(省大事了),並且文檔齊全,代碼一直更新到最近幾天,說明在可預期的一年內應該會越發成熟。另外,開源,走的是apache license2.0協議,不禁止第三方修改,使用,商用。
先說代碼:https://github.com/ricequant/rqalpha, RQAlpha是一個中國市場領先的股票和期貨的回測引擎,具備日級別的歷史數據回測,並且具有很強的可拓展性。由Ricequant米筐科技開源,雖然涉嫌給他們做廣告,不過確實不錯。
文檔很齊全,雖然安裝的過程中還是挺累的。
安裝主要靠兩樣:
安裝指南: http://rqalpha.readthedocs.io/zh_CN/stable/intro/install.html,
詳細環境搭建: http://rqalpha.readthedocs.io/zh_CN/stable/intro/detail_install.html
光靠安裝指南是肯定搭不了的,還要再參考詳細環境搭建。
最后,再說一下我遇到的坑。
一開始看上面似乎對linux支持力度挺大,貌似用命令全搞定,特別是很多的東西一看就是在linux中的地址,於是就用centos7一路搭起來了,
先安裝gcc,g++什么的必備開發工具不待說。
首先一坑:.condarc這文件,一定要是截圖如下方能起作用:
否則那個清華大學的地址是加不進來的
然后是 ImportError: No module named 'requests'
需要:pip install requests
一切好了,按照要求運行
rqalpha run
這下報的錯誤更多,最后不得不放棄linux,到windows上來試驗
windows上錯誤前面是一樣的,不過在裝TA-Lib時遇到了新問題,由於需要編譯源碼,得下visual c++ 14.0這樣的命令行編譯器,周六下了一夜后宣告失敗,第二天直接下vs2015專業版安裝,然后在
http://www.cnblogs.com/Hanuman/p/5943608.html這個地方終於搞定了編譯問題
最后數據也下好了,rqalpha version也得到了版本號
結果再次運行rqalpha run還是報一堆錯誤。再去米筐科技官網學習,突然靈光一開,從里面抄了一個簡單策略,
# -*- coding: utf-8 -*-
# 在這個方法中編寫任何的初始化邏輯。context對象將會在你的算法策略的任何方法之間做傳遞。
def init(context):
logger.info("init")
context.s1 = "000001.XSHE"
update_universe(context.s1)
# 是否已發送了order
context.fired = False
context.cnt = 1
def before_trading(context, bar_dict):
logger.info("Before Trading", context.cnt)
context.cnt += 1
# 你選擇的證券的數據更新將會觸發此段邏輯,例如日或分鍾歷史數據切片或者是實時數據切片更新
def handle_bar(context, bar_dict):
context.cnt += 1
logger.info("handle_bar", context.cnt)
# 開始編寫你的主要的算法邏輯
# bar_dict[order_book_id] 可以拿到某個證券的bar信息
# context.portfolio 可以拿到現在的投資組合狀態信息
# 使用order_shares(id_or_ins, amount)方法進行落單
# TODO: 開始編寫你的算法吧!
if not context.fired:
# order_percent並且傳入1代表買入該股票並且使其占有投資組合的100%
order_percent(context.s1, 1)
context.fired = True
命名為:buy_and_hold.py放置於目錄C:\Users\Administrator\.rqalpha\examples下,注意的是文件應存成utf-8格式
然后再用命令:
(python35) C:\Users\Administrator>rqalpha run -f C:/Users/Administrator/.rqalpha/examples/buy_and_hold.py -d C:/Users/Administrator/.rqalpha/bundle/ -s 2016-06-01 -e 2016-12-01 --stock-starting-cash 100000 --benchmark 000300.XSHG
前面(python35)表示我在conda環境下的python35下(python35是我起的環境名,代表python為3.5.2)
到這一步,終於搞定,沒報錯了,出了一堆的結果,
然后再加上一個參數—plot,出了效果圖:
雖然弄出來了,不過只是拿了現成的東西來使用,下一步是看如何將源碼使用起來,通過修改源代碼達到自己的意圖。