框架選擇
本系列教程會講四個策略:基於ccxt開發的動態平衡策略,基於vnpy開發的趨勢跟蹤策略,基於vnpy開發的價差套利策略,基於thenextquant開發的做市策略。
工具和開源框架選取包括:pycharm + vnpy + ccxt + thenextquant
安裝vnstudio
vnpy、ccxt、thenextquant都需要python開發環境,而vnstudio包含了Python解釋器以及一系列量化交易常用的第三方庫,只需要簡單幾步安裝就可以輕鬆搭建量化交易的python開發環境,簡單而有效!
打開vnpy.com首頁,點擊安裝2.1.2,然後等待下載完成。
下載下來之後,雙擊運行該文件,按照提示安裝就行。vnstudio的安裝很簡單,只需要選擇安裝目錄,建議這裡不要修改就用默認的路徑c:\vnstudio。
值得一提的是vnstudio裡面已經集成了vnpy的源碼,所以我們也不需要單獨去git上面再去下載vnpy的源碼了
設置工作目錄
安裝完成之後我們會發現桌面上多了一個快捷方式VN Station,我們不需要這個,直接刪掉。接下來打開文件夾C:\vnstudio,然後新建一個文件夾Project,以後我們的項目都放這個目錄。再在Project文件夾內新建一個文件夾vnpy2.1.2,準備把vnpy項目剪切過來。
接下來打開文件夾C:\vnstudio\Lib\site-packages,把vnpy的代碼剪切到C:\vnstudio\Project\vnpy2.1.2目錄裡面。下圖中包括vnpy和vnstation的源碼,有興趣的可以自己看看vnstation的源碼,我們只需要把vnpy文件夾整個剪切到C:\vnstudio\Project\vnpy2.1.2目錄裡面,然後再刪除 vnpy的.egg-info的文件夾就OK了。
安裝Pycharm
PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。
PyCharm的安裝也很簡單,我用的版本是pycharm-community-2019.1.1,安裝過程如下:
點擊Install之後,耐心等待安裝完成即可。
啟動項目
啟動pycharm,打開Project裡面的vnpy項目:
確保你的目錄結構和我一樣:
到這裡vnpy項目項目已經導入到我們的IDE裡面了,接下來我們就可以針對源碼進行開發了。首先我們寫一個trader界面,用來連接指定的交易所。
1)鼠標右鍵項目-》點擊新建-》點擊目錄-》輸入目錄名稱。這裡我創建了一個名稱為run的目錄。
2)鼠標右鍵run-》點擊新建-》點擊python文件。這裡我創建了一個名稱為run的py文件。
3)複製下面代碼到run.py-》右鍵運行該代碼。
<code># flake8: noqa from vnpy.event import EventEngine from vnpy.trader.engine import MainEngine from vnpy.trader.ui import MainWindow, create_qapp from vnpy.gateway.binance import BinanceGateway from vnpy.app.cta_strategy import CtaStrategyApp from vnpy.app.csv_loader import CsvLoaderApp from vnpy.app.algo_trading import AlgoTradingApp from vnpy.app.cta_backtester import CtaBacktesterApp from vnpy.app.data_recorder import DataRecorderApp from vnpy.app.risk_manager import RiskManagerApp from vnpy.app.script_trader import ScriptTraderApp from vnpy.app.rpc_service import RpcServiceApp from vnpy.app.spread_trading import SpreadTradingApp from vnpy.app.portfolio_manager import PortfolioManagerApp from vnpy.app.option_master import OptionMasterApp from vnpy.app.chart_wizard import ChartWizardApp from vnpy.app.excel_rtd import ExcelRtdApp from logging import INFO from vnpy.trader.setting import SETTINGS SETTINGS["log.active"] = True SETTINGS["log.level"] = INFO SETTINGS["log.console"] = True def main(): """""" qapp = create_qapp() event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(BinanceGateway) main_engine.add_app(CtaStrategyApp) main_engine.add_app(CtaBacktesterApp) main_engine.add_app(CsvLoaderApp) main_engine.add_app(AlgoTradingApp) main_engine.add_app(DataRecorderApp) main_engine.add_app(RiskManagerApp) main_engine.add_app(ScriptTraderApp) main_engine.add_app(RpcServiceApp) main_engine.add_app(SpreadTradingApp) main_engine.add_app(PortfolioManagerApp) main_engine.add_app(OptionMasterApp) main_engine.add_app(ChartWizardApp) main_engine.add_app(ExcelRtdApp) main_window = MainWindow(main_engine, event_engine) main_window.showMaximized() qapp.exec() if __name__ == "__main__": main() /<code>