数据库的配置
下载数据
对于写好的策略,使用历史数据回测何其重要。记录下怎么导入回测用的数据
数据库的配置
至于MongoDB的安装,这里不多介绍,网上资料比较多。
1
| db.createUser({ user: "vnpy", pwd: "123456", roles: [{ role: "readWrite", db: "vnpy" }] })
|
Mac系统的配置文件路径 ~/.vntrader/vt_setting.json, 和window系统不一样,注意一下。(账号,密码自己指定)
1 2 3 4 5 6 7 8 9
| { "database.driver": "mongodb", "database.database": "vnpy", "database.host": "127.0.0.1", "database.port": 27017, "database.user": "root", "database.password": "123456", "database.authentication_source":"" }
|
下载数据
方式1:程序下载
当然也可以通过图像界面的方式下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 初始化事件引擎 event_engine = EventEngine() # 初始化主引擎 main_engine = MainEngine(event_engine)
# 加载币安现货的网关, 现货代码(小写):btcusdt main_engine.add_gateway(BinanceGateway) main_engine.connect(binance_settings, "BINANCE")
# 加载币安合约的网关 main_engine.add_gateway(BinancesGateway) main_engine.connect(binances_settings, "BINANCES")
main_engine.init_engines() sleep(15) engine = ManagerEngine(main_engine, event_engine)
# 合约代码(大写):BTCUSDT, 周期(Interval.MINUTE,Interval.HOUR,Interval.DAILY) # engine.download_bar_data("BTCUSDT", Exchange.BINANCE, Interval.MINUTE, datetime(2016, 1, 1))
# 现货代码(小写):btcusdt, 周期(Interval.MINUTE,Interval.HOUR,Interval.DAILY) engine.download_bar_data("bnbusdt", Exchange.BINANCE, Interval.HOUR, datetime(2016, 1, 1)) main_engine.close()
|
方式2:直接导入
我把自己下载的数据,总数8022246条数据已经导出,通过mongorestore直接导入到MongoDB,省时省力。
数据如下,还是比较全的,小写的是现货,大写的是合约
| Symbol |
Interval |
time区间 |
数据量 |
| btcusdt |
1m |
2017-08-17 ~2021-07-13 |
2044721 |
| btcusdt |
1h |
2017-08-17 ~ 2021-07-15 |
34154 |
| btcusdt |
d |
2017-08-17 ~ 2021-07-15 |
1429 |
| ethusdt |
1m |
2017-08-17 ~ 2021-07-15 |
2047718 |
| ethusdt |
1h |
2017-08-17 ~ 2021-07-15 |
34154 |
| bnbusdt |
1m |
2017-11-06~2021-07-15 |
1931504 |
| bnbusdt |
1h |
2017-11-06~2021-07-15 |
32218 |
| bnbusdt |
d |
2017-11-06~2021-07-15 |
1348 |
| ltcusdt |
1h |
2017-12-13~2021-07-15 |
31330 |
| ltcusdt |
d |
2017-12-13~2021-07-15 |
1311 |
| ETHUSDT |
1m |
2019-11-27 ~ 2021-07-15 |
857942 |
| ETHUSDT |
1h |
2019-11-27 ~ 2021-07-15 |
14300 |
| ETHUSDT |
d |
2019-11-27 ~ 2021-07-15 |
597 |
| BTCUSDT |
d |
2019-09-08 ~ 2021-07-15 |
677 |
| BTCUSDT |
1h |
2019-09-09 ~ 2021-07-15 |
16212 |
| BTCUSDT |
1m |
2019-09-09 ~ 2021-07-15 |
972631 |
这里特别注意:如果自己原有的库db_bar_data,db_bar_overview中有重要数据,下面导入的方式就要注意,用的是--drop模式,有删库的风险
1
| mongorestore -h 127.0.0.1 --port 27017 -uvnpy -p 123456 -d vnpy --drop ./vnpy
|
-h 地址
-u 数据库账号名(没有可省略)
-p 数据库账号密码(没有可省略)
-d 数据库名
--drop: 在导入之前删除每个集合
1 2 3 4 5 6 7 8
| 2021-07-15T16:39:06.524+0800 [*#######################.] vnpy.db_bar_data 1.59GB/1.63GB (97.7%)* 2021-07-15T16:39:09.525+0800 [*#######################.] vnpy.db_bar_data 1.60GB/1.63GB (98.4%)* 2021-07-15T16:39:12.524+0800 [*#######################.] vnpy.db_bar_data 1.61GB/1.63GB (99.1%)* 2021-07-15T16:39:15.525+0800 [*#######################.] vnpy.db_bar_data 1.63GB/1.63GB (99.9%)* 2021-07-15T16:39:16.020+0800 [*########################] vnpy.db_bar_data 1.63GB/1.63GB (100.0%)* 2021-07-15T16:39:16.020+0800 restoring indexes for collection vnpy.db_bar_data from metadata 2021-07-15T16:39:43.859+0800 finished restoring vnpy.db_bar_data (8022246 documents, 0 failures) 2021-07-15T16:39:43.860+0800 8022262 document(s) restored successfully. 0 document(s) failed to restore.
|
系统已经有了,数据也有了,后面的文章主要介绍一些经典的量化策略。

图像界面方式回测
启动run_window.py文件,即可启动图像界面回测。启动成功后,整个界面如下所示。

图像界面回测结果如下 