1.vn.py社区精选4 - 双均线策略深度解析
2.专享策略13 | 基于抄底摸顶思路的策策略震荡策略
3.详解最常用的策略——CTA策略运行
4.Elite量化策略实验室大类资产ETF轮动策略 - 1
5.vn.py快速入门8 - 策略实盘自动交易
6.vn.py快速入门6 - 开发第一个量化策略
vn.py社区精选4 - 双均线策略深度解析
策略原理
双均线策略作为基础的CTA策略,通过短周期与长周期均线的略实金叉或死叉信号进行交易决策,捕捉市场趋势。盘源策略包含两个关键周期的代码移动平均线,短周期反映近期市场走势,策策略长周期代表较长时段的略实图片修补源码趋势。
源码分析
以vn.py项目中的盘源双均线策略源码为例,解析策略实现逻辑和内部代码。代码
创建策略实例
所有vn.py框架中的策策略CTA策略类(包括内置和自定义)皆基于CTA策略模板类(CtaTemplate)实现子类。模板类为策略设计提供了通用结构,略实如同汽车设计图指导汽车制造。盘源CtaTemplate定义了交易函数和策略逻辑框架,代码使得快速实现策略成为可能。策策略
策略初始化
在策略实例创建时,略实设置参数和变量。盘源参数由外部指定,变量随策略状态变化动态更新。参数列表中包括策略名称、设置信息等,系统自动从配置文件中加载。变量列表用于界面显示,并在策略停止、收到回报或同步数据时保存状态。
构造函数__init__
构造函数接收CTA引擎、策略名称、标的代码和设置信息作为参数,其中引擎对象自动传入。创建BarGenerator实例用于生成分钟级别K线数据,ArrayManager用于缓存K线数据,支持指标计算。
状态变量初始化
状态变量初始化并非在构造函数中完成,而是在创建策略实例后通过图形界面的初始化按钮触发on_init函数,加载历史数据回放给策略初始化变量。
启动自动交易
点击启动策略按钮,产品搬家源码自动调用on_start函数,将交易状态变量设置为True,启动交易流程。确保在界面刷新策略状态相关显示时调用put_event函数。
接收Tick推送
CTP接口每0.5秒推送Tick数据,由事件引擎分发到策略中。Tick数据通过BarGenerator的update_tick函数处理,合成1分钟K线数据,供策略使用。
核心交易逻辑
接收到K线数据后,将数据放入ArrayManager容器中,确保至少个数据后初始化完毕。调用talib库计算技术指标,判断金叉或死叉触发交易逻辑。交易指令由策略模板封装,在on_bar函数中直接调用。
委托回报处理
on_order函数处理委托状态变化,on_trader和on_stop_order函数处理成交回报和停止单回报。双均线策略在这些函数中通常无操作。
停止自动交易
每日交易结束后,通过停止按钮关闭自动交易,策略引擎调整交易状态变量,撤销所有活动委托,并保存变量状态。
CTA交易流程梳理
使用思维导图整理vn.py中策略实现与执行流程,包括从创建策略实例到停止自动交易的完整步骤。
《vn.py全实战进阶》课程介绍
该课程提供节内容,涵盖策略设计、参数回测和实盘自动交易的CTA量化业务流程,适合深入学习vn.py应用。
更多vn.py精华内容
关注公众号以获取更多深入分析和实践技巧。
专享策略 | 基于抄底摸顶思路的震荡策略
本月新策略,针对震荡行情,easy登录源码开发抄底摸顶震荡策略。
排除追涨杀跌的突破追高逻辑,CTA策略多以此为基准。
布林通道策略,价格突破上轨标记-1,突破下轨标记1。
结合布林通道指标,设置条件,绿点标记满足开空条件的点,但在趋势中信号价值极低。
摆动指标在趋势中有钝化现象,过滤趋势,设置区间描述,确认绿点的真突破。
策略过滤趋势,增强对震荡行情的适应性,抄底摸顶,减少趋势中的反手操作。
交易次数有限,逻辑基于抄底摸顶,避免频繁交易。
资金曲线显示,期间有大量0持仓,对应趋势行情。
策略作为现有趋势策略的补充,对代码结构进行调整,模块化指标计算、核心逻辑和进出场规则。
策略覆盖螺纹、豆一、白银、沪铝、AO、round源码分析苹果、黄金、豆二、国际铜、棉花、欧线、玻璃等品种。
Vn.py版本,源码包含螺纹钢默认配置,无参数优化,可自行调优。
加入松鼠俱乐部,获取策略源码、培训视频、行情数据。包含原创策略、专属数据库、个性化工具和分享会资源。
策略仅供学习交流,实盘交易盈亏自负。内容受原创保护,禁止未经授权的转发和倒卖。
详解最常用的策略——CTA策略运行
CTAStrategy,即用于CTA策略实盘的功能模块,通过图形界面操作,实现策略的初始化、启动、停止、参数编辑与移除等功能。启动模块时,需确保已连接火象交易接口,并在日志栏确认“合约信息查询成功”。随后,夺宝码源码通过点击“功能”-> “CTA策略”或左侧按钮进入CTA策略模块的UI界面。添加策略步骤为:在左上角下拉框选择策略名称,点击“添加策略”以弹出对话框,配置策略参数,如实例名称、合约品种和参数设置,并点击“添加”创建实例。创建成功后,策略实例配置信息保存至.vntrader目录下的cta_strategy_setting.json文件中。管理策略包括初始化、启动、停止和编辑等操作。初始化时,获取历史数据,载入缓存变量,并订阅合约实时行情,确保策略实例的正确运行。启动策略实例后,其状态变为可交易,通过点击“启动”按钮实现。若需停止、编辑或移除策略,点击对应按钮执行相应操作。编辑策略实例参数前,需先停止策略。移除策略实例时,图形界面与cta_strategy_setting.json文件同步更新。进行清空操作时,点击“清空日志”按钮即可清空日志输出。对于批量操作,利用界面右上角的“全部初始化”、“全部启动”和“全部停止”功能,简化策略实例的管理过程,适用于策略测试稳定且无需频繁调整的场景。
Elite量化策略实验室大类资产ETF轮动策略 - 1
聊聊PortfolioStrategy
VeighNa社区的同学,CtaStrategy和PortfolioStrategy的区别常感困惑。本对比表格帮助理解:
过去数篇Elite量化策略实验室聚焦CTA策略模块,旨在提升期货中高频策略实盘能力。本篇则分享基于PortfolioStrategy模块的大类资产ETF轮动策略,采用中低频日线数据生成交易信号。
策略绩效一览:
该策略灵感源自量化君也公众号文章,详细原理请查阅。策略核心在于ETF基金追踪大类资产价格波动,选择四只典型ETF构建轮动组合。
每日持仓决定基于时序动量指标:计算每只ETF收盘价线性回归斜率与决定系数R平方乘积得出趋势强弱评分score。score高代表动量强,选择当前评分靠前的ETF进行轮动。
策略代码精要:
EtfRotationStrategy基于PortfolioStrategy模块,构造策略模板,考虑足够历史数据计算score。信号指标通过线性回归计算,on_bars回调计算得分并缓存。目标交易执行利用StrategyTemplate功能,简化买卖操作。
回测细节:
回测需四只ETF日线数据,下载并导入数据库。配置回测参数,观察资金曲线和绩效统计。
EtfRotationStrategy策略采用固定市值持仓,单利模式回测,强调策略逻辑稳健性。实际交易应动态调整市值持仓。
完整代码和回测数据获取方式:
关注VeighNa进阶用户交流群获取。
免责声明:
信息仅供参考,不保证准确性或完整性。独立判断做投资决策,作者不对损失负责。
vn.py快速入门8 - 策略实盘自动交易
本文源自vn.py社区微信公众号(vnpy -community)。
完成历史数据回测和优化后,得到良好的资金曲线,便可以准备实盘交易。在教程2-5中,我们已了解真实账户和仿真账户的概念,强调一点:
所有量化策略在实盘交易前,应充分在仿真账户测试,毕竟本金不易,需负责任。
本教程以股指期货为例,其他产品的量化策略实盘类似。启动VN Trader Pro,加载CTP接口及CTA策略模块(CtaStrategy)或直接运行VN Trader Lite。
进入VN Trader主界面,连接登录CTP接口,等待看到“合约信息查询成功”信息。
加载实例后,点击菜单“功能”->“CTA策略”或左侧导航栏图标,进入CTA策略实盘交易窗口。
在日志监控组件中看到“RQData数据接口初始化成功”信息,如无,请按教程配置RQData数据服务。
基于策略模板(类)添加策略实例,点击策略下拉框,找到DemoStrategy。
点击添加策略按钮,出现策略实盘参数配置对话框,注意填写数据类型,并指定策略实例名称和交易合约。
点击添加后,在左侧策略监控组件中看到策略实例,顶部按钮用于控制管理策略实例。
点击初始化按钮,CTA策略引擎调用策略的on_init函数,完成以下三步任务:
获取历史数据,载入最新合约历史数据,通过RQData获取,若不支持则使用交易接口或本地数据库。
载入缓存变量,量化策略运行过程中,部分变量与行情数据相关,另一类与交易状态相关,需要缓存在硬盘上。
订阅行情推送,获取策略交易合约信息,并订阅实时行情推送。
完成以上步骤,点击启动按钮启动策略自动交易功能。
点击停止按钮停止策略自动交易,CTA策略引擎自动撤销活动委托并执行变量缓存操作。
在实盘交易过程中,正常情况下让策略自动运行,避免额外暂停重启操作。
点击编辑按钮修改策略参数,点击移除按钮删除策略实例。
通过“全部初始化”、“全部启动”和“全部停止”按钮一次性管理所有策略实例。
点击清空日志按钮清空日志监控组件信息。
跟踪总结策略运行交易结果,修正回测研究中参数假设,实现策略研究水平迭代进步。
vn.py快速入门6 - 开发第一个量化策略
欢迎来到vn.py社区的快速入门教程系列的第6篇,我们将开始实践编程部分。假设你对Python有一定基础,如果没有,推荐《笨方法学Python3》作为入门书籍。在此教程中,我们将使用Visual Studio Code (VS Code),一个由微软开发的开源编程编辑器,配合其丰富的插件,成为我们的编程工具。
首先,下载并安装VS Code,点击官网链接,安装完成后,找到左侧导航栏底部的Python插件并安装。虽然我们推荐VS Code,但PyCharm、WingIDE、Vim或Visual Studio等其他IDE也适用,遇到问题时,可以切换回VS Code,因为教程中的所有操作都是通用的。
接下来,理解用户目录的概念,通常位于C:\Users\你的用户名,这是vn Trader默认的运行时目录。vn Trader会在该目录下创建.vntrader文件夹存放配置和临时文件。同时,CTA策略会在strategies文件夹中寻找用户自定义策略,Windows用户需在C:\Users\你的用户名\strategies创建这个文件夹。
在strategies文件夹下创建名为demo_strategy.py的策略文件,然后用VS Code打开。策略类开发从定义CtaTemplate基类开始,它是所有CTA策略的基础,提供事件处理和操作函数的框架。
策略类中,需要定义参数和变量,参数是策略逻辑中的固定数值,变量则用于存储策略执行过程中的中间状态。定义完成后,需添加到对应的参数和变量列表中,以便策略引擎管理。
在vn.py中,交易逻辑由事件驱动,比如K线推送。对于双均线策略的DemoStrategy,我们只需在on_bar函数中处理K线数据,如使用ArrayManager计算均线指标并进行金叉或死叉判断。策略的执行涉及开仓、平仓操作,以适应双均线策略的交易逻辑。
实盘交易时,需要自己合成K线,vn.py的BarGenerator工具可以帮助完成这个任务。在策略的__init__函数中初始化BarGenerator,并提供on_bar回调。每当收到Tick更新,更新BarGenerator,BarGenerator会在K线走完时触发on_bar函数,执行交易逻辑。
以上就是vn.py快速入门的实践部分,如需了解更多内容,欢迎关注vn.py社区的微信公众号获取更多资讯。