@Channelchan
2018-10-03T02:54:29.000000Z
字数 5384
阅读 2411
数据 vnpy
下载最新版安装包直接安装后启动:
https://www.mongodb.com/download-center?utm_source=manual&utm_campaign=download-mongodb-navbar-cta&utm_medium=docs#community
官方文档:https://docs.mongodb.com/manual/
pymongo是MongoDB的python接口,在python程序中可以用该接口操作MongoDB。
使用文档:http://api.mongodb.com/python/current/
JAQS是一个开源量化策略研究平台,由交易专家和金融技术专家共同设计,实现了自动化信号研究、高效策略开发和多维度回测分析,支持Alpha、CTA、套利等策略的实现。JAQS从实战而来,经实盘检验,本地化开发部署,保障策略安全。
可以通过jaqs获取数据并写入mongodb用于vnpy的回测。
jaqs需要注册账号,通过官方给的token登陆后才能获取数据。
在官网中点击右上角的登陆,注册账户登陆后,点击右上角的账户头像选择查看api令牌即可获取token。
jaqs文档: https://www.quantos.org/jaqs/doc.html
VNPY对数据格式有一定的要求,只有满足该要求的数据才能用于回测,下面是VNPY定义的数据结构体。
########################################################################class VtBarData(VtBaseData):"""K线数据"""#----------------------------------------------------------------------def __init__(self):"""Constructor"""super(VtBarData, self).__init__()self.vtSymbol = EMPTY_STRING # vt系统代码self.symbol = EMPTY_STRING # 代码self.exchange = EMPTY_STRING # 交易所self.open = EMPTY_FLOAT # OHLCself.high = EMPTY_FLOATself.low = EMPTY_FLOATself.close = EMPTY_FLOATself.date = EMPTY_STRING # bar开始的时间,日期self.time = EMPTY_STRING # 时间self.datetime = None # python的datetime时间对象self.volume = EMPTY_FLOAT # 成交量self.openInterest = EMPTY_INT # 持仓量
TICK数据
class VtTickData(VtBaseData):"""Tick行情数据类"""#----------------------------------------------------------------------def __init__(self):"""Constructor"""super(VtTickData, self).__init__()# 代码相关self.symbol = EMPTY_STRING # 合约代码self.exchange = EMPTY_STRING # 交易所代码self.vtSymbol = EMPTY_STRING # 合约在vt系统中的唯一代码,通常是 合约代码:交易所代码# 成交数据self.lastPrice = EMPTY_FLOAT # 最新成交价self.lastVolume = EMPTY_FLOAT # 最新成交量self.volume = EMPTY_FLOAT # 今天总成交量self.openInterest = EMPTY_INT # 持仓量self.time = EMPTY_STRING # 时间 11:20:56.5self.date = EMPTY_STRING # 日期 20151009self.datetime = None # python的datetime时间对象self.type = EMPTY_STRING # 主动买或主动卖self.volumeChange = EMPTY_INTself.localTime = EMPTY_STRING# 常规行情self.openPrice = EMPTY_FLOAT # 今日开盘价self.highPrice = EMPTY_FLOAT # 今日最高价self.lowPrice = EMPTY_FLOAT # 今日最低价self.preClosePrice = EMPTY_FLOATself.upperLimit = EMPTY_FLOAT # 涨停价self.lowerLimit = EMPTY_FLOAT # 跌停价# 五档行情self.bidPrice1 = EMPTY_FLOATself.bidPrice2 = EMPTY_FLOATself.bidPrice3 = EMPTY_FLOATself.bidPrice4 = EMPTY_FLOATself.bidPrice5 = EMPTY_FLOATself.askPrice1 = EMPTY_FLOATself.askPrice2 = EMPTY_FLOATself.askPrice3 = EMPTY_FLOATself.askPrice4 = EMPTY_FLOATself.askPrice5 = EMPTY_FLOATself.bidVolume1 = EMPTY_FLOATself.bidVolume2 = EMPTY_FLOATself.bidVolume3 = EMPTY_FLOATself.bidVolume4 = EMPTY_FLOATself.bidVolume5 = EMPTY_FLOATself.askVolume1 = EMPTY_FLOATself.askVolume2 = EMPTY_FLOATself.askVolume3 = EMPTY_FLOATself.askVolume4 = EMPTY_FLOATself.askVolume5 = EMPTY_FLOAT
在课件中包含了本次课程需要用来回测的数据,需要将这些数据录入数据库。
进入课件的October/vnpydatacourseCam/data目录:
双击restore.bat文件即可运行
结束后会在窗口中输出 输入任意命令继续的字样
打开terminal,进入该目录,输入
python restore.py
结束后会进入等待命令的状态。
数据入库需要一段时间,请等待程序运行完。
使用 git clone 该项目:https://github.com/xingetouzi/vnpy_fxdayu_data
git clone https://github.com/xingetouzi/vnpy_fxdayu_data.git
windows git 下载地址:https://git-scm.com/download/win
如何打开?:点击windows -> 搜索 git -> 打开 git bash
macos自带git,直接在terminal中输入即可。
该项目目前接入了jaqs,oanda,和binance的数据。项目代码分别放在jqdata,oanda,binance目录中,其中的conf.yml文件配置了需要下载数据的范围。
jqdata:
# jaqs登录配置login:# 服务器地址addr: tcp://data.quantos.org:8910# 登录用户名username: "18566262672"# 登录密码password: "eyJhbGciOiJIUzI1NiJ9.eyJjcmVhdGVfdGltZSI6IjE1MTI3MDI3NTAyMTIiLCJpc3MiOiJhdXRoMCIsImlkIjoiMTg1NjYyNjI2NzIifQ.O_-yR0zYagrLRvPbggnru1Rapk4kiyAzcwYt2a3vlpM"# 数据库配置mongodb:# 连接地址host: localhost:27017# 存储数据的database名db: VnTrader_1Min_Dblatest: VnTrader_1Min_Db_latest# 下载历史数据history:# 开始时间start: 20180901# 要下载的数据的品种,可通过 jaqs.data.DataApi.query("jz.instrumentInfo") 接口查询。symbols:- AP.CZC- j.DCE- cu.SHFlatest:length: 2000symbols:- cu1811.SHF
oanda:
# oanda登录配置oanda:# oanda账户token,需要到oanda官网申请token: "aca515d198721260bc281073afbff674-843ea241ce00dc7d301fc32f31bff2d7"# 交易类型,与账户有关,分为PRACTICE和TRADEtrade_type: PRACTICE# 数据库配置mongodb:# 数据库连接地址host: "localhost:27017"# 要存储的数据库名db: "VnTrader_1Min_Db"# 记录地址log: "log.oanda"# 下载历史数据target:# 失败重试次数redo: 3# 开始时间start: 20180901# 品种名:货币/商品_货币,如:EUR_USD,XAU_USDinstruments:- HK33_HKD
binance:
# 数据库配置mongodb:host: localhost:27017log: log.binancedb: VnTrader_1Min_Db# 历史数据配置target:# 品种名symbol: ["ETHUSDT", "BTCUSDT", "EOSUSDT"]# 开始时间start: 20180901# 失败重试次数retry: 3# 代理设置 (下载binance数据需要vpn,如果vpn使用全局代理可以不用设置代理)# proxies:# http: socks5://127.0.0.1:1080# https: socks5://127.0.0.1:1080
通过修改配置中历史数据的选项可以选择要下载数据的范围。
启动脚本:run.bat,
默认从3个数据源下载数据到数据库,可以通过注释掉相关的代码屏蔽对应的命令。在一行前加 REM 即可注释该行。
修改完启动脚本和配置文件后,双击启动脚本即可运行下载数据。
@echo offREM conda 虚拟环境REM call activate vnpyset PYTHONPATH=%cd%REM 创建biance数据索引echo create binance indexpython binance/binance.py createREM 更新biance数据echo update binance datapython binance/binance.py update publishREM 创建jaqs一分钟数据索引echo create jaqs m1 indexpython jqdata/jqdata.py createREM 更新jaqs一分钟数据echo update jaqs m1 datapython jqdata/jqdata.py update publishREM 创建oanda数据索引echo create oanda indexpython oanda/m1.py createREM 更新oanda数据echo update oanda datapython oanda/m1.py update publishpause
启动脚本:run.sh
可以用 # 注释掉相应的命令
在terminal中进入项目更目录,输入
bash run.sh
即可开始下载数据
#! /bin/bash# 切换到目标目录cd $PWD# conda 虚拟环境source activate vnpyexport PYTHONPATH=$PWD# 创建biance数据索引echo create binance indexpython binance/binance.py create# 更新biance数据echo update binance datapython binance/binance.py update publish# 创建jaqs一分钟数据索引echo create jaqs m1 indexpython jqdata/jqdata.py create# 更新jaqs一分钟数据echo update jaqs m1 datapython jqdata/jqdata.py update publish# 创建oanda数据索引echo create oanda indexpython oanda/m1.py create# 更新oanda数据echo update oanda datapython oanda/m1.py update publish