VeighNa量化社区
你的开源社区量化交易平台
longgerchen's Avatar
Member
离线
23 帖子
声望: 0

感谢大佬分享!
mark!

event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
这个重复了。

trader/engine.py 的 MainEngine 类在初始化的时候,
就 self.add_engine(LogEngine) 注册过一次 日志引擎。

所以,直接把 no_ui run.py 中的那句代码删掉就好。

论坛里的大佬,你们好!
菜鸡我在研究阅读 vnpy_ctastrategy/engine.py 的 CtaEngine 类的 query_bar_from_datafeed() 函数时,
看到有这样的代码:
data = self.datafeed.query_history(req)

因为我有买 RQData,并且配置好了。
并且 CtpGateway 无法获得历史行情数据。
我的 trader/setting.py 的 "datafeed.name": "" 。

所以,这个 self.datafeed = vnpy_rqdata 。

但是为什么 vnpy_rqdata/rqdata_datafeed.py 里没有
def query_history(self, req: HistoryRequest) 函数呢?

这就会造成,我在 no_ui 的 run.py 中 运行 CatEngine.init_strategy(self, strategy_name: str) 函数
进一步调用 CatEngine.load_bar() 函数时,如下代码过不去。
data = self.datafeed.query_history(req)

我手动在 vnpy_rqdata/rqdata_datafeed.py 里添加如下函数后,用户策略正常在 simnow 跑了起来。
def query_history(self, req: HistoryRequest):
if req.interval == None:
return self.query_tick_history(req)
else:
return self.query_bar_history(req)

问题总结下:
我在尝试 VNPY 官方的 no_ui 的 run.py 时,
碰到 CtaEngine 类的 data = self.datafeed.query_history(req) ,找不到对应函数的问题。
我手动在 vnpy_rqdata/rqdata_datafeed.py 添加该函数后,用户策略正常运行。

想问,是不是,我调用的方式不对?

感谢大佬,这个正是我需要的。

感谢分享

各位大佬,请喝冰可乐。
本人手上有自己从CTP柜台导出的成交记录,是Excel表格格式的,希望通过vnpy将成交记录反应在K线图上。请问如何实现呢?

我看到vnpy有k线图模块,并且可以在回测界面,将自己回测后的成交记录显示在k线图上。(通过点按钮实现(:τ」∠)

病情我找到有在examples中有candle_chart例子。但是,如何把自己的Excel表格成交记录导入呢?

我看了三天vnpy/chart目录下的代码,水平太差,看不懂。

感谢大佬

hxxjava wrote:

longgerchen wrote:

description

description

我在复制如上代码之后,会碰到这两个问题,不知如何解决。

答复:
第一个是需要修改为OrderData,
原来的是错误的,不过好在这只是个注解,不会引擎出错。
第二个是需要在该文件的前面:

from vnpy.trader.constant import Exchange

感谢大佬的及时回复,第一个问题解决了。但是第二个问题,加了 在kx_chart.py文件头部加了 from vnpy.trader.constant import Exchange 该代码后,问题依旧。
self.setWindowTitle(f"K线图表——{symbol}.{exchange.value},{interval},{start}-{end}") 会提示 该代码里的 symbol、exchange.value、interval、start、end 未定义。

本人语言排插能力堪忧,望大佬帮忙看看。

我安装的是VN station 2.5.6 版本。

膜拜大神。

description

description

我在复制如上代码之后,会碰到这两个问题,不知如何解决。

您好,买的课程,有提供$吗?我司准备买你们的《深入定价模型策略》。

好文,支持!

啊?我是第一个回复这帖子的人吗?这帖子,挺好的呀!

个人经历,我司的客户,实际交易过程中会出现 :
一次性开仓(例开多100手RB2105) →
多次平仓(陆续平了60手RB2105多头)→
平仓还未完成,就继续同合约开多(开多50手RB2105)→
再陆续平仓(陆续或一次性平掉90手RB2105)

虽然不清楚客户为什么会在为完全平仓的情况下,再次同合约同方向开仓,情况确实有。
这样的情况,统计起来就复杂。

啊?举个例子。

感谢大佬,我一直在找这样的参考代码,谢谢分享。

完整代码如下:
from vnpy.trader.rqdata import rqdata_client
from vnpy.trader.database import database_manager
from vnpy.trader.constant import Exchange, Interval
from vnpy.trader.object import HistoryRequest
from datetime import datetime

start_date = datetime(2018,1,1)
end_date = datetime(2021,1,19)

rqdata_client.init('18650816356','long5204559')
print("init结束")

symbols={
"SHFE": ["AG","AL","AU","BU","CU","FU","HC","LU","NI","NR","PB","RB","RU","SC","SN","SP","SS","WR","ZN"],
"DCE": ["A","B","BB","C","CS","EG","EB","FB","I","J","JD","JM","L","LH","M","P","PG","PP","RR","V","Y"],
"CZCE": ["AP","CF","CJ","CY","FG","JR","LR","MA","OI","PF","PM","RI","RM","RS","SA","SF","SM","SR","TA","UR","WH","ZC"],
"CFFEX": ["IC","IF","IH","T","TF","TS"]
}
symbol_type = "99"
print("symbols字典创建成功")

def load_data(req):

#3、调用数据下载模块rqdata_client.query_history,得到数据data。
data = rqdata_client.query_history(req)
#4、调用数据保存模块database_manager.save_bar_data,把下载好的数据data写入数据库。
database_manager.save_bar_data(data)
print(f"{req.symbol}历史数据下载完成")

for exchange, symbols_list in symbols.items():
for s in symbols_list:
req = HistoryRequest(
symbol=s+symbol_type,
exchange=Exchange(exchange),
start=start_date,
interval=Interval.MINUTE,
end=end_date
)
load_data(req=req)

print("运行结束!")

但是,因为我用的是RQData 的 15天试用账号,所以下载一点点数据后,就提示 rqdatac.share.errors.QuotaExceeded: Quota exceeded ,超出配额。

但是下载的数据,放在哪个文件夹里呀?有哪位大神回复下?

@会飞的土笋冻 能否再详细说下这个情况呢?

另外,我现在把代码复制到了 py 文件里,用vs code来运行回测,再把默认浏览器设置为火狐,发现也可以运行。
【之前用cmd 然后 jupyter notebook ,的方式,会经常出现回测净值折线图无法显示的问题。】

谢谢这么快回复。刚刚尝试了在环境变量 Path 中添加 ”C:\vnstudio\Lib\site-packages" 后,并且把位置上移到第二位后,可以用了。但是还是觉得有些奇怪。 另外,如果位置放在 "C:\vnstudio\“ 之后,一样会 not defined。
description

刚刚尝试了,如果是直接在.py文件上直接from vnpy.app.cta_strategy.backtesting import BacktestingEngine 然后 实例化BacktestingEngine() ,是成功的。
description

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】