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
另外这种回测的话,能回测么?还是只能靠实盘去检验挂单有没有问题呢?
平今天或者昨天的空头,代码都是 self.cover 么?
平今天或者昨天的多头,代码都是 self.sell 么?
在初始化策略的时候,日志打印出很多东西,如何能设置在策略初始化的时候,不打印东西呢?
但是我跑这个代码的时候,该下单的时候 没下单。并且
cta_strategy_data.json 这个策略状态的文件也没有更新。正常么?
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
日志区没有报错。
但是在委托区,一直显示提交中。没有时间(空)。期货公司也没有收到这笔委托
charlesttt wrote:
使用CTP 正式交易接口
利用下面代码挂单
self.cover(bar.close_price, 3)结果委托界面显示提交单是小数。并且无法提交。也就无法成交。
不知道是为啥呢?
开仓没问题。就是平仓就会出现小数点