可以贴一下完整报错截图
版本太老了,应该需要升级了。可以看下底层是否有广期所相关的报错信息输出
交易所是SSE
可能是收到了交易时段外的tick导致的,开源版本没有做脏数据过滤。elite版本实现了一套配置过滤时段的方案,但是底层实现比较繁琐。交易的合约少的话就自己在收到tick之后指定时段即可
不清楚你策略具体逻辑了,如果你策略有cancel_all控制每轮收到合成的K线然后撤销未成交委托的话,那么其他部分都是由策略逻辑控制的了,而不是没有及时撤单导致的。
应该是收到了非交易时段外的tick导致的,开源版本没有做脏数据过滤,交易的合约少的话就自己在收到tick之后指定时段即可
脚本策略模板的同步的,不是用来跑基于CTA策略模块/组合策略模块开发的策略的
https://www.vnpy.com/forum/topic/859-vn-pyfa-bu-v2-0-5-jiao-ben-ce-lue-he-rpcfu-wu
想要无界面跑组合策略,可以用no_ui脚本启动组合策略模块跑策略
https://gitee.com/vnpy/vnpy/blob/master/examples/no_ui/run.py
收到下一轮on_bar停止单还没被触发就被cancel_all撤掉了,这是正常的。
本地停止单介绍可参考https://www.vnpy.com/docs/cn/cta_strategy.html#id19
点击右上角【使用文档】
发布于veighna社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2023-05-10
《30天精进Python交易GUI》课程已经于2023年4月全部收尾!基于课程内容,我们制作了这张【知识要点图】:
看完对课程感兴趣的话,请戳【课程传送门】。
至此,【量化交易零基础入门系列】内容告一段落,下一阶段课程将会回归【VeighNa全实战进阶系列】的期权量化交易内容,预计将在7月下旬上线,感兴趣的同学欢迎关注!
on_trade会收到成交信息TradeData,on_tick会收到最新的TickData
一键安装veighna_station就能安装所有包,手动安装都是按需安装了
除了IB接口以外,其他接口都要连接之后看到日志组件输出合约信息查询成功的日志之后才能查到该接口所有的合约
多合约可以用portfolio_strategy模块
论坛退出登录后选择账户密码登录,点击右下角忘记密码则可找回密码
可以自己创建一个变量缓存信号,然后在收到下一分钟tick或bar的时候进行委托
公众号【vnpy-community】- 【进阶资料】- 【超越海龟策略精析】的课时22
取消加载paper_account模块即可,paper_account模块没有资金计算功能
发布于veighna社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2023-04-28
本周发布了VeighNa的3.7.0版本,本次更新的主要内容是增加了量化交易容器解决方案VeighNa Docker,为Linux和Mac系统用户提供类似VeighNa Studio的快速安装部署功能。
在此首先要对社区用户【eis】表示感谢!正是他在社区论坛中分享的xhost图形界面输出方案,帮助我们找到了如何基于Docker容器运行GUI程序的技术方向。
对于已经安装了VeighNa Studio的用户,可以使用快速更新功能完成自动升级。对于没有安装的用户,请下载VeighNa Studio-3.7.0,体验一键安装的量化交易Python发行版,下载链接:
https://download.vnpy.com/veighna_studio-3.7.0.exe
开始正文内容之前想要说明下:对比VeighNa Studio,使用VeighNa Docker需要掌握更高水平的开发技术知识,并不一定适合所有用户。
这里梳理一些VeighNa Docker适合的应用场景:
如果你有上述需求,那么强烈推荐继续往下看。
从互联网上普遍能搜索到的描述定义来看,Docker是一套开源的应用容器引擎,采用操作系统级别的虚拟化技术来对【软件应用】及其【依赖的运行时环境】进行打包,并将打包完成的轻量级容器快速部署到各种不同环境中高效运行。
看完这段有点绕口的文字,不知道大家的感觉如何?反正当我第一次接触Docker的时候挺晕的,所以这里试着通过类比的方式来帮大家更加容易地理解。
不管是投研回测还是实盘交易,想要成功运行起来一个VeighNa量化平台的程序,必须确保当前的系统上已经安装好了:
上述三块内容中,3就是前文中的【软件应用】,而1和2加在一起则是【依赖的运行时环境】。那么为了实现这三块内容的快速安装部署,在Windows系统上的解决方案就是VeighNa Studio,运行exe安装包后几次点击就能自动完成整个安装流程。
由于Linux系统上软件安装方式的区别:例如系统自带Python(影响1)、底层依赖库的全局影响(影响2)等,导致无法直接照搬VeighNa Studio的方案,更好的选择是采用类似虚拟机的形式将1-3整体打包后进行分发部署(直接不用安装了)。
在还没有VeighNa Studio的1.0版本时代,我们就曾经推出过基于VirtualBox的虚拟机镜像,但大家用下来普遍反馈虚拟机对比实体机的性能损耗还是挺明显。背后的原因可以参考上图的右侧部分,虚拟机中的应用程序和底层硬件中间,隔着有Hypervisor(虚拟硬件层)和Guest OS(虚拟机内系统)两层组件,带来了显著的开销(分钟级的启动耗时)。
2013年发布的Docker带来了更加轻量级的方案。参考上图的左侧部分,在宿主机的操作系统上仅需运行Docker守护进程来负责对Docker容器进行运维管理,省去了臃肿的虚拟机内系统,从而实现更高的运行效率:节省大量系统资源、毫秒级的启动耗时、接近原生运行的性能水平。
本次3.7.0版本中新增的VeighNa Docker,就是打包了Python解释器、底层依赖库和VeighNa量化平台的完整量化容器镜像,仅需几行命令就能实现自动下载和运行启动。
运行Docker容器之前需要先安装Docker引擎,这里重点介绍在Linux(Ubuntu 22.04)服务器上的安装流程,不清楚的地方推荐参考官方文档中的安装教程。
1. 卸载移除老版本程序:
sudo apt-get remove docker docker-engine docker.io containerd runc
2. 更新apt源并安装HTTPS访问所需的库:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg
3. 添加Docker官方的GPG Key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
4. 设置添加apt仓库:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 再次更新apt源:
sudo apt-get update
6. 安装Docker引擎等组件:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
7. 运行hello-world镜像验证安装成功:
sudo docker run hello-world
8. 安装xhost的运行依赖程序:
apt-get install x11-xserver-utils
9. 启动xhost(注意该命令每次重启系统后都要运行):
xhost +
对于Windows和Mac系统用户直接从Docker官网下载安装Docker Desktop即可,Windows上推荐启用WSL2环境。
完成Docker引擎的安装配置后,运行VeighNa Docker就相当简单了。
在用户目录下创建一个空文件夹(这里假设为/home/user/trader),在其中放置run.py启动脚本文件,内容为:
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp
def main():
"""Start VeighNa Trader"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_engine.add_app(CtaBacktesterApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
然后在终端Terminal中运行下述命令:
docker run \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /home/user/trader:/home \
veighna/veighna:3.7 python3 run.py
如果是第一次运行,Docker引擎会自动从Docker Hub网站上下载拉取veighna/veighna:3.7镜像(大约几分钟的时间,取决于网络带宽),并在下载完成后直接启动容器,此时就可以看到熟悉的VeighNa Trader界面了:
尽管容器和虚拟机在底层实现上有着挺大区别,但是对于其中运行的程序来说整体环境相当类似,在容器中同样存在运行程序时的默认用户目录/home。
运行docker run命令时,我们通过参数【-v /home/user/trader:/home】,将之前在操作系统中新建的/home/user/trader(包括其中的文件)挂载到了容器内的/home目录下,从而保证在容器内运行【python3 run.py】命令时能够成功找到run.py文件。
在VeighNa Trader的运行过程中,临时文件(JSON配置文件、SQLite数据库文件等)会被写入到容器内的/home/.vntrader文件夹中,由于前面的挂载机制等同于外部系统中的/home/user/trader/.vntrader文件夹。该文件夹中的内容即使关闭Docker容器后也依旧存在,从而满足程序运行过程中的数据持久化需求。
目前VeighNa Docker中已经打包的模块包括:
交易接口
策略应用
数据库适配器
数据服务接口
投研环境
除了上文中展示的VeighNa Trader外,VeighNa Docker还支持更多其他的运行方式,例如Jupyter Lab交互式投研环境、VS Code容器内代码开发、no_ui交易服务运行等,我们将会在后续的文章中详细讲解,欢迎关注。
可以自己先在on_bar和on_15min_bar下打印看看有没有收到bar。如果收到了话然后再在on_15min_bar打印排查一下是不是被策略逻辑过滤了,比如是否满足self.am.inited条件