VeighNa量化社区
你的开源社区量化交易平台
Member
离线
81 帖子
声望: 0

https://github.com/vnpy/vnpy/blob/master/examples/no_ui/run.py

请问用上面链接中的 .py 文件直接跑的脚本策略会自动随跑随储存行情数据么?是在cta_engine.start_all_strategies() 时候就开始自动储存实盘行情么?还是有专门一段代码是储存实盘行情的呀?

在客户端 有 行情记录模块。 我就想知道脚本策略里面的行情记录模块是哪条语句呀?

xiaohe wrote:

是的,在配置了数据服务的情况下可以参考2楼的建议load更多天的数据初始化。如果没有数据服务,怎么调大load_bar的天数am也没有inited,可能是数据库里历史数据不够导致的

如果数据库里面数据是全的。还有可能是其他原因导致inited 是False么?

谢谢! strategy_orderid_map 的具体路径能告诉我一下么?

另外如何在CtaTemplate Class 里面调用呀?

xiaohe wrote:

不是,on_order是每次策略的委托状态变化才会推送。engine的strategy_orderid_map字典保存了不同策略的active_orders。
请基于自己需求自行实现了

肯定和假期没有数据有关系。传了大一点的数值也没用。还是am.inited 输出结果为False。 所以VNPY 默认LoadBar()没法跳过节假日是吧?

def init(self, cta_engine, strategy_name, vt_symbol, setting):
""""""
super().init(cta_engine, strategy_name, vt_symbol, setting)
self.am = ArrayManager(100)

def on_init(self):
self.load_bar(10)

之前load bar 一直没问题。但是今天跑的时候 am.inited 输出结果为False。
是不是因为昨天是假期没数据的原因呀?如何能load_bar的时候跳过节假日呢?

xiaohe wrote:

不能,tick回测撮合不看盘口数量的;
目前官方版本不支持cta策略模块调用算法交易模块;
都会通过策略on_order函数推送。

非常感谢! 您是说 系统可以通过 on_order 的函数推送所有当前active_orders 的信息么?
能给我一个实例代码么?让我在on_order 函数里面取到 有关order 信息的Dictionary

在脚本实现过程中,
现在我知道了如何初始化和开始运行全部策略。
cta_engine.init_all_strategies()
sleep(60)
main_engine.write_log("CTA策略全部初始化")
cta_engine.start_all_strategies()
main_engine.write_log("CTA策略全部启动")

但是如果我只想初始化和运行strategy 文件夹里面的某一个策略,应该怎么写呢?

另外 我所有挂出去的单的信息,是不是在 PositionHolding Class 里的 self.active_orders: Dict[str, OrderData] = {} 里面呀? 这个在CTA Strategy代码里面如何取到呀?

或者有没有可能 我在CTA 模块中 调用Algo Trading 模块的 某个算法来达到追单或者类似的效果呢?比如TWAP 如果能调用的话,是不是能保证比如20秒内分5次执行完成这样?感觉也是类似效果了。主要就是怕大单一次搞不定,就需要追单。

请教一下,使用CTP 接口,如果想设计一个简单的追单逻辑。

我想买10手 @ tick.ask_price_1 价格,然后每隔10秒钟 看一下 我还差 几手没Fill,然后挂更新后的tick.ask_price_1

这种情况有简单的代码么?就是不用改VNPY 源代码的。我怕我改错了。
之前看到这篇,但实在是太复杂了。
https://www.vnpy.com/forum/topic/3133-vn-pyshe-qu-jing-xuan-21-tickji-de-wei-tuo-jing-xi-hua-guan-li?page=1

另外这种回测的话,能回测么?还是只能靠实盘去检验挂单有没有问题呢?

xiaohe wrote:

可以自己把相关代码注释掉

在策略初始化的时候不想输出消息
但是策略在运行的时候,又想输出消息

应该改哪段代码呀?

平今天或者昨天的空头,代码都是 self.cover 么?

平今天或者昨天的多头,代码都是 self.sell 么?

在初始化策略的时候,日志打印出很多东西,如何能设置在策略初始化的时候,不打印东西呢?

但是我跑这个代码的时候,该下单的时候 没下单。并且
cta_strategy_data.json 这个策略状态的文件也没有更新。正常么?

xiaohe wrote:

这个理论上可以一直跑,因为只有在你设定的交易时间段才会启动子进程

所以就是windows 设置好,早上 下午 各启动一次是吧? 就不用再用用户界面登录了?

xiaohe wrote:

这个是无界面运行的脚本,可以定时启动关闭

没看懂。所以我需要用比如VS Code 单独跑连接里面的程序么?我现在用的是Vnstation用户界面来进行的连接。

xiaohe wrote:

可参考https://github.com/vnpy/vnpy/blob/master/examples/no_ui/run.py

现在连接期货公司,上午开盘前需要重启一次VNPY,下午开盘前还得重启一次VNPY。能不能做到自动重启不用人工重启就能连上CTP 呢? 或者有没有办法上午重启一次,下午就不用重启了,能自动去连接CTP?

xiaohe wrote:

请问你交易的品种是?主界面日志区域有报错吗?如果没有请用run.py或在cmd用命令行python -m vnstation 打开VN Trader复现你的操作,看看卡在提交中的时候,底层是否有报错信息输出

交易品种 rb2201.SHFE

日志区没有报错。

但是在委托区,一直显示提交中。没有时间(空)。期货公司也没有收到这笔委托
description

用Python的交易员 wrote:

请查看日志区域是否有具体的报错内容?

如何查看日志区域?

策略日志区域没有报错

charlesttt wrote:

使用CTP 正式交易接口

利用下面代码挂单
self.cover(bar.close_price, 3)

结果委托界面显示提交单是小数。并且无法提交。也就无法成交。

不知道是为啥呢?

description

开仓没问题。就是平仓就会出现小数点

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

沪公网安备 31011502017034号

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