vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 51
声望: 1

刚刚开始学VNPY,请教一下 下面的步骤中当点击“下载数据”按钮后,我怎么跟踪程序让我看到实际在执行哪个函数?

在vn.py快速入门7 - 历史数据回测优化 中用手动方法下载数据是这么写的:
窗口左上方的一系列编辑框和下拉框,用来控制和管理我们的回测功能。在本地代码编辑框中输入IF88.CFFEX,K线周期选择1m(即1分钟K线),然后选择要下载数据的开始日期和结束日期,

点击“下载数据”按钮


**此时CtaBacktester模块就会自动从RQData服务器下载历史数据,并完成数据结构转化后插入到VN Trader的数据库中(默认使用SQLite,数据文件位于.vntrader目录下的database.db),下载完成后同样会在日志输出框中看到相应信息:

Member
avatar
加入于:
帖子: 176
声望: 18

下载数据实际调用的是vnpy/app/cta_backtester/engine.py里的run_downloading,

Member
avatar
加入于:
帖子: 51
声望: 1

谢谢啦!😀

方里明 wrote:

下载数据实际调用的是vnpy/app/cta_backtester/engine.py里的run_downloading,

Member
avatar
加入于:
帖子: 51
声望: 1

另外请问一下2.0以上版本的文件结构以及说明是否在哪里有?

方里明 wrote:

下载数据实际调用的是vnpy/app/cta_backtester/engine.py里的run_downloading,

Member
avatar
加入于:
帖子: 51
声望: 1

方里明 wrote:

下载数据实际调用的是vnpy/app/cta_backtester/engine.py里的run_downloading,
谢谢了!
您知道在下载数据后,对数据库的读写函数是在哪里?

Member
avatar
加入于:
帖子: 51
声望: 1

方里明 wrote:

下载数据实际调用的是vnpy/app/cta_backtester/engine.py里的run_downloading,

我通过RQdata读取了当前所有的期货品种,并且合成了Symbol88 这个需要批量下载的列。 请问VNPY中将RQdata下载下来的dataframe写入到数据库的代码在哪里?

underlying_symbol exchange Symbol Symbol88
0 TF CFFEX CFFEX.TF TF88.CFFEX
1 IF CFFEX CFFEX.IF IF88.CFFEX
2 IC CFFEX CFFEX.IC IC88.CFFEX
6 IH CFFEX CFFEX.IH IH88.CFFEX
10 V DCE DCE.V V88.DCE

Member
avatar
加入于:
帖子: 176
声望: 18

我不是说了吗,run_downloading

Administrator
avatar
加入于:
帖子: 2125
声望: 96

将数据写入数据库的操作,在vnpy/trader/database这个模块中,整体上使用的是peewee和mongoengine的ORM技术来实现的数据库读写

Member
avatar
加入于:
帖子: 51
声望: 1

方里明 wrote:

我不是说了吗,run_downloading

如果我想下载'IF88.CFFEX',的话,像下面这么写?
from vnpy.app.cta_strategy.backtesting import BacktestingEngine
engine = BacktestingEngine()
engine.run_downloading(
'IF88','CFFEX',
datetime(2018,1,1),
datetime(2019,1,1),
)

出错显示:AttributeError: 'BacktestingEngine' object has no attribute 'run_downloading'

但我在cta_backtester\engine.py中看到了run_downloading函数。
def run_downloading(
self,
vt_symbol: str,
interval: str,
start: datetime,
end: datetime
):

Administrator
avatar
加入于:
帖子: 2125
声望: 96

from vnpy.app.cta_backtester.engine import BacktesterEngine

cta_strategy是CTA策略的核心模块,cta_backtester是CTA策略的图形化回测模块

Member
avatar
加入于:
帖子: 51
声望: 1

用Python的交易员 wrote:

from vnpy.app.cta_backtester.engine import BacktesterEngine

cta_strategy是CTA策略的核心模块,cta_backtester是CTA策略的图形化回测模块

您好!
请问from vnpy.app.cta_backtester.engine import BacktesterEngine导入后写
engine = BacktesterEngine()
说我缺少参数
'main_engine' and 'event_engine'
应该怎么解决?

Member
avatar
加入于:
帖子: 176
声望: 18

wrote:

用Python的交易员 wrote:

from vnpy.app.cta_backtester.engine import BacktesterEngine

cta_strategy是CTA策略的核心模块,cta_backtester是CTA策略的图形化回测模块

您好!
请问from vnpy.app.cta_backtester.engine import BacktesterEngine导入后写
engine = BacktesterEngine()
说我缺少参数
'main_engine' and 'event_engine'
应该怎么解决?

那你就实例化这两个引擎传入

Member
avatar
加入于:
帖子: 51
声望: 1

方里明 wrote:

wrote:

用Python的交易员 wrote:

from vnpy.app.cta_backtester.engine import BacktesterEngine

cta_strategy是CTA策略的核心模块,cta_backtester是CTA策略的图形化回测模块

您好!
请问from vnpy.app.cta_backtester.engine import BacktesterEngine导入后写
engine = BacktesterEngine()
说我缺少参数
'main_engine' and 'event_engine'
应该怎么解决?

那你就实例化这两个引擎传入

谢谢啦!
我写了下面的代码,
from vnpy.app.cta_backtester.engine import BacktesterEngine
from vnpy.trader.engine import BaseEngine, MainEngine
from vnpy.event import Event, EventEngine

event_engine = EventEngine()
main_engine = MainEngine(event_engine)

engine = BacktesterEngine(main_engine,event_engine)
最后一行显示下面的错误
engine = BacktesterEngine(main_engine, event_engine)
^
SyntaxError: invalid character in identifier

我在 查找

Member
avatar
加入于:
帖子: 51
声望: 1

方里明 wrote:

wrote:

用Python的交易员 wrote:

from vnpy.app.cta_backtester.engine import BacktesterEngine

cta_strategy是CTA策略的核心模块,cta_backtester是CTA策略的图形化回测模块

您好!
请问from vnpy.app.cta_backtester.engine import BacktesterEngine导入后写
engine = BacktesterEngine()
说我缺少参数
'main_engine' and 'event_engine'
应该怎么解决?

那你就实例化这两个引擎传入

谢谢啦!
我写了下面的代码,
from vnpy.app.cta_backtester.engine import BacktesterEngine
from vnpy.trader.engine import BaseEngine, MainEngine
from vnpy.event import Event, EventEngine

event_engine = EventEngine()
main_engine = MainEngine(event_engine)

engine = BacktesterEngine(main_engine,event_engine)
最后一行显示下面的错误
engine = BacktesterEngine(main_engine, event_engine)
^
SyntaxError: invalid character in identifier

我在 查找

Administrator
avatar
加入于:
帖子: 2125
声望: 96

engine = BacktesterEngine(main_engine, event_engine)

查下这里的那个逗号,代码里的都应该是英文标点

Member
avatar
加入于:
帖子: 51
声望: 1

用Python的交易员 wrote:

engine = BacktesterEngine(main_engine, event_engine)

查下这里的那个逗号,代码里的都应该是英文标点

谢谢!
我打开vnstation,选择jupyter,选择.vntrader所在文件夹,这里已经有database.db。 写了下面的代码。
执行后,没有出现错误报告,但database.db里面没有新增的数据,请问问题出在哪里?

++++++++++++++++++++++++++++++++++++++++++++++++++++++
运行下面的代码,在C:\vnstudio\Lib\site-packages\vnpy\app\cta_backtester\engine.py下的run_downloading 函数中的下面语句答应出来是None。 我估计问题出在这里,但怎么解决?
contract = self.main_engine.get_contract(vt_symbol)
print(contract)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
from vnpy.app.cta_backtester.engine import BacktesterEngine
from vnpy.trader.engine import BaseEngine, MainEngine
from vnpy.event import Event, EventEngine
from datetime import datetime
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
engine = BacktesterEngine(main_engine,event_engine)
engine.run_downloading(
vt_symbol="AL99.SHFE",
interval="1h",
start=datetime(2019, 1, 1),
end=datetime(2019, 9, 6),
)

下面是.vntrader中vt_setting.json的设置
"database.driver": "sqlite",
"database.database": "database.db",
"database.host": "localhost",
"database.port": 3306,
"database.user": "root",
"database.password": "",
"database.authentication_source": "admin"

Member
avatar
加入于:
帖子: 51
声望: 1

等了两天,不知道有哪位高人能指点一下吗?

Administrator
avatar
加入于:
帖子: 2125
声望: 96

你是否在VN Trader中配置了RQData的账号?

Member
avatar
加入于:
帖子: 51
声望: 1

用Python的交易员 wrote:

你是否在VN Trader中配置了RQData的账号?

谢谢! 我打开VN TRADER PRO 中的回测,是能够正常下载数据的。说明我的rqdata数据应该已经配置成功了。

我选择同样的.vntrader 目录
在jupyter中重新运行了上面的代码,发现已经能运行了。不知道之前不能运行的原因出在哪里。

但是显示“数据下载失败,无法获取RB88.SHFE的历史数据”

这下我搞不懂问题出在哪里了?

另外,在CTA回测界面中有“RQData数据接口初始化成功”的提示,但是在jupyter中没有这个提示,不知是否这个原因? 我在哪个文件上找到 “RQData数据接口初始化成功”这个内容?

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3