From 10bd69297c59369482613f6c8d8e701ae539db70 Mon Sep 17 00:00:00 2001 From: LimingFang Date: Tue, 2 Jul 2019 16:35:42 +0800 Subject: [PATCH 1/3] Update cta_strategy.md --- docs/cta_strategy.md | 84 +++++++++----------------------------------- 1 file changed, 16 insertions(+), 68 deletions(-) diff --git a/docs/cta_strategy.md b/docs/cta_strategy.md index a114f8ed..09349e36 100644 --- a/docs/cta_strategy.md +++ b/docs/cta_strategy.md @@ -21,80 +21,28 @@ CTA策略模块主要由7部分构成,如下图: ## 历史数据 ### 回测历史数据 -回测所需要的历史数据可通过运行getdata.py文件进行下载。该文件处于根目录下tests\backtesting文件夹内。 -下载历史数据的原理是调用RQData的get_price()函数把数据下载到内存里面;再通过generate_bar_from_row()函数,以固定格式把数据从内存载入到硬盘数据库中。 - -下面介绍具体流程: - -- 填写RQData的账号密码,初始化RQData +在开始策略回测之前,必须保证数据库内有充足的历史数据。故vnpy提供了历史数据一键下载的功能。 +下载数据功能主要是基于RQData的get_price()函数实现的。 ``` -import rqdatac as rq - - -USERNAME = "" -PASSWORD = "" -FIELDS = ["open", "high", "low", "close", "volume"] - -rq.init(USERNAME, PASSWORD, ("rqdatad-pro.ricequant.com", 16011)) -``` - -  - -- 定义数据插入格式。需要插入的数据包括:合约代码、交易所、K线周期、开盘价、最高价、最低价、收盘价、成交量、数据库名称、vt_symbol(注意:K线周期可以是"1m"、"1h"、"d"、"w"。to_pydatetime()用于时间转换成datetime格式) -``` -def generate_bar_from_row(row, symbol, exchange): - """""" - bar = DbBarData() - - bar.symbol = symbol - bar.exchange = exchange - bar.interval = "1m" - bar.open_price = row["open"] - bar.high_price = row["high"] - bar.low_price = row["low"] - bar.close_price = row["close"] - bar.volume = row["volume"] - bar.datetime = row.name.to_pydatetime() - bar.gateway_name = "DB" - bar.vt_symbol = f"{symbol}.{exchange}" - - return bar -``` - -  - -- 定义数据下载函数。主要调用RQData的get_price()获取指定合约或合约列表的历史数据(包含起止日期,日线或分钟线)。目前仅支持中国市场的股票、期货、ETF和上金所现货的行情数据,如黄金、铂金和白银产品。(注意:起始日期默认是2013-01-04,结束日期默认是2014-01-04) - -``` -def download_minute_bar(vt_symbol): - """下载某一合约的分钟线数据""" - print(f"开始下载合约数据{vt_symbol}") - symbol, exchange = vt_symbol.split(".") - - start = time() - - df = rq.get_price(symbol, start_date="2018-01-01", end_date="2019-01-01", frequency="1m", fields=FIELDS) - - with DB.atomic(): - for ix, row in df.iterrows(): - print(row.name) - bar = generate_bar_from_row(row, symbol, exchange) - DbBarData.replace(bar.__data__).execute() - - end = time() - cost = (end - start) * 1000 - - print( - "合约%s的分钟K线数据下载完成%s - %s,耗时%s毫秒" - % (symbol, df.index[0], df.index[-1], cost) - ) - +get_price( + order_book_ids, start_date='2013-01-04', end_date='2014-01-04', + frequency='1d', fields=None, adjust_type='pre', skip_suspended =False, + market='cn' +) ``` -  +在使用前要保证RQData初始化完毕,然后填写以下4个字段信息: +- 本地代码:格式为合约品种+交易所,如IF88.CFFEX、rb88.SHFE;然后在底层通过RqdataClient的to_rq_symbol()函数转换成符合RQData格式,对应RQData中get_price()函数的order_book_ids字段。 +- K线周期:可以填1m、60m、1d,对应get_price()函数的frequency字段。 +- 开始日期:格式为yy/mm/dd,如2017/4/21,对应get_price()函数的start_date字段。(点击窗口右侧箭头按钮可改变日期大小) +- 结束日期:格式为yy/mm/dd,如2019/4/22,对应get_price()函数的end_date字段。(点击窗口右侧箭头按钮可改变日期大小) + +填写完字段信息后,点击下方“下载数据”按钮启动下载程序,下载成功如图所示。 +![](https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/data_loader.png) + ### 实盘历史数据 在实盘中,RQData通过实时载入数据进行策略的初始化。该功能主要在CTA实盘引擎engine.py内实现。 下面介绍具体流程: From 72b88935928d2c5d854211c1f91363eb02bda778 Mon Sep 17 00:00:00 2001 From: LimingFang Date: Tue, 2 Jul 2019 16:49:41 +0800 Subject: [PATCH 2/3] Update quickstart.md --- docs/quickstart.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/quickstart.md b/docs/quickstart.md index c69c3e43..f8b23adf 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -21,6 +21,7 @@ python run.py   ## 连接接口 +### simnow 以SinNow仿真交易账号登陆CTP接口为例:点击菜单栏的“系统”->“连接CTP”后,弹出如上图所示CTP接口的配置对话框,输入以下内容后即可登录: - 用户名username:111111 (6位纯数字账号) - 密码password:1111111 (需要修改一次密码用于盘后测试) @@ -33,6 +34,17 @@ python run.py 连接成功以后,日志组件会立刻输出陆成功相关信息,同时用户也可以看到账号信息,持仓信息,合约查询等相关信息。 +### 中信期货(穿透式最新教程) +####仿真 +以中信为例,如果完全是以仿真为目的,则不用向期货公司提交任何穿透式申请表,直接在期货公司官网注册一个仿真账号,使用期货公司提供的仿真环境即可,在连接时,必须import的是ctp(6.3.15版本),不可以是ctptest(6.3.13版本) +- 用户名username:[你的账户] +- 密码password:[你的密码] (最好修改一下密码) +- 经纪商编号brokerid:66666 (中信的) +- 交易服务器地址td_address:tcp://ctpfz1-front1.citicsf.com:51305 +- 行情服务器地址md_address:tcp://ctpfz1-front1.citicsf.com:51313 +- auth_code(授权码):0D6V7N1CIBWUT1CT +- appid:client_xxx_1.0.1(注意,必须写xxx,仿真不允许自定义) +   ## 订阅行情 From c4d1273ab2d5217039443f7ce795e8b50d74ed03 Mon Sep 17 00:00:00 2001 From: LimingFang Date: Tue, 2 Jul 2019 16:50:36 +0800 Subject: [PATCH 3/3] Update quickstart.md --- docs/quickstart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index f8b23adf..9a4db6e7 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -42,8 +42,8 @@ python run.py - 经纪商编号brokerid:66666 (中信的) - 交易服务器地址td_address:tcp://ctpfz1-front1.citicsf.com:51305 - 行情服务器地址md_address:tcp://ctpfz1-front1.citicsf.com:51313 -- auth_code(授权码):0D6V7N1CIBWUT1CT -- appid:client_xxx_1.0.1(注意,必须写xxx,仿真不允许自定义) +- auth_code(授权码): 0D6V7N1CIBWUT1CT +- appid: client_xxx_1.0.1(注意,必须写xxx,仿真不允许自定义)