框架选择
本系列教程会讲四个策略:基于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>