@Channelchan
2018-10-03T10:54:29.000000Z
字数 5384
阅读 2031
数据
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 # OHLC
self.high = EMPTY_FLOAT
self.low = EMPTY_FLOAT
self.close = EMPTY_FLOAT
self.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.5
self.date = EMPTY_STRING # 日期 20151009
self.datetime = None # python的datetime时间对象
self.type = EMPTY_STRING # 主动买或主动卖
self.volumeChange = EMPTY_INT
self.localTime = EMPTY_STRING
# 常规行情
self.openPrice = EMPTY_FLOAT # 今日开盘价
self.highPrice = EMPTY_FLOAT # 今日最高价
self.lowPrice = EMPTY_FLOAT # 今日最低价
self.preClosePrice = EMPTY_FLOAT
self.upperLimit = EMPTY_FLOAT # 涨停价
self.lowerLimit = EMPTY_FLOAT # 跌停价
# 五档行情
self.bidPrice1 = EMPTY_FLOAT
self.bidPrice2 = EMPTY_FLOAT
self.bidPrice3 = EMPTY_FLOAT
self.bidPrice4 = EMPTY_FLOAT
self.bidPrice5 = EMPTY_FLOAT
self.askPrice1 = EMPTY_FLOAT
self.askPrice2 = EMPTY_FLOAT
self.askPrice3 = EMPTY_FLOAT
self.askPrice4 = EMPTY_FLOAT
self.askPrice5 = EMPTY_FLOAT
self.bidVolume1 = EMPTY_FLOAT
self.bidVolume2 = EMPTY_FLOAT
self.bidVolume3 = EMPTY_FLOAT
self.bidVolume4 = EMPTY_FLOAT
self.bidVolume5 = EMPTY_FLOAT
self.askVolume1 = EMPTY_FLOAT
self.askVolume2 = EMPTY_FLOAT
self.askVolume3 = EMPTY_FLOAT
self.askVolume4 = EMPTY_FLOAT
self.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_Db
latest: VnTrader_1Min_Db_latest
# 下载历史数据
history:
# 开始时间
start: 20180901
# 要下载的数据的品种,可通过 jaqs.data.DataApi.query("jz.instrumentInfo") 接口查询。
symbols:
- AP.CZC
- j.DCE
- cu.SHF
latest:
length: 2000
symbols:
- cu1811.SHF
oanda:
# oanda登录配置
oanda:
# oanda账户token,需要到oanda官网申请
token: "aca515d198721260bc281073afbff674-843ea241ce00dc7d301fc32f31bff2d7"
# 交易类型,与账户有关,分为PRACTICE和TRADE
trade_type: PRACTICE
# 数据库配置
mongodb:
# 数据库连接地址
host: "localhost:27017"
# 要存储的数据库名
db: "VnTrader_1Min_Db"
# 记录地址
log: "log.oanda"
# 下载历史数据
target:
# 失败重试次数
redo: 3
# 开始时间
start: 20180901
# 品种名:货币/商品_货币,如:EUR_USD,XAU_USD
instruments:
- HK33_HKD
binance:
# 数据库配置
mongodb:
host: localhost:27017
log: log.binance
db: 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 off
REM conda 虚拟环境
REM call activate vnpy
set PYTHONPATH=%cd%
REM 创建biance数据索引
echo create binance index
python binance/binance.py create
REM 更新biance数据
echo update binance data
python binance/binance.py update publish
REM 创建jaqs一分钟数据索引
echo create jaqs m1 index
python jqdata/jqdata.py create
REM 更新jaqs一分钟数据
echo update jaqs m1 data
python jqdata/jqdata.py update publish
REM 创建oanda数据索引
echo create oanda index
python oanda/m1.py create
REM 更新oanda数据
echo update oanda data
python oanda/m1.py update publish
pause
启动脚本:run.sh
可以用 # 注释掉相应的命令
在terminal中进入项目更目录,输入
bash run.sh
即可开始下载数据
#! /bin/bash
# 切换到目标目录
cd $PWD
# conda 虚拟环境
source activate vnpy
export PYTHONPATH=$PWD
# 创建biance数据索引
echo create binance index
python binance/binance.py create
# 更新biance数据
echo update binance data
python binance/binance.py update publish
# 创建jaqs一分钟数据索引
echo create jaqs m1 index
python jqdata/jqdata.py create
# 更新jaqs一分钟数据
echo update jaqs m1 data
python jqdata/jqdata.py update publish
# 创建oanda数据索引
echo create oanda index
python oanda/m1.py create
# 更新oanda数据
echo update oanda data
python oanda/m1.py update publish