Vortex Indicator 构建交易策略

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
今天的文章,我们将为大家介绍一个与DMI(Directional Movement Index)类似,判断多空趋势的指标Vortex Indicator。DMI原本的概念为,计算一段周期内走势向上与向下的力度消长,判断多空强弱。而向上的力度在概念上使用今天高点与昨天高点的差值,若今天高点比昨天高点高越多,则表示向上力度比较强。向下的力度则相反。
Vortex Indicator的概念与DMI略有不同,向上力度的计算为使用今天的高点与昨天的低点差值的绝对值,向下力度的计算为使用今天的低点与昨天的低点差值的绝对值。
Vortex Indicator计算方式
1.用当日最高价减去前一日最低价取绝对值:VM+= AbsValue(High - Low[1])
2.用当日最低价减去前一日最高价取绝对值:VM- = AbsValue(Low - High[1])
3.将周期内的VM+加总:VMPlusSum = Summation(VM+,Length)
4.将周期内的VM-加总:VMMinusSum = Summation(VM-,Length)
5.将周期内每日的真实波动区间加总:TRSum = Summation(TrueRange,Length)
6.最后将VMPlusSum除以TRSum则可得+VM7.最后将VMMinusSum除以TRSum则可得-VM
Vortex Indicator多空判断
若+VM从下向上穿越-VM则目前市场趋势为多头
若-VM从下向上穿越-VM则目前市场趋势为空头
Vortex Indicator效果展示
计算方式在K线图上图标化的话很像涡旋(Vortex)的图案,因此取名为Vortex Indicator。

Vortex Indicator指标代码(MC版)
//Indicator: Vortex inputs:Length( 14 ) ;
variables:VMPlus( 0 ),VMMinus( 0 ),VMPlusSum( 0 ),VMMinusSum( 0 ),TR( 0 ),TRSum( 0 ),VIPlusSumRge( 0 ),VIMinusSumRge( 0 ),DX(0),ADXX(0); VMPlus = AbsValue( High - Low[1] ) ;
VMMinus = AbsValue( Low - High[1] ) ;
VMPlusSum = Summation( VMPlus, Length ) ;
VMMinusSum = Summation( VMMinus, Length ) ;
TR = TrueRange ;
TRSum = Summation( TR, Length ) ; if TRSum <> 0 then
begin
VIPlusSumRge = VMPlusSum / TRSum ;
VIMinusSumRge = VMMinusSum / TRSum ;
end ; Plot1( VIPlusSumRge, "VI+Sum/Rge", Green ) ;
Plot2( VIMinusSumRge, "VI-Sum/Rge", Red ) ;
Vortex Indicator交易策略(MC版)
接下来使用Vortex指标回测一个顺势交易策略
1.+VM穿越-VM时判断为多头,突破穿越时的价格高点做多
2.-VM穿越+VM时判断为空头,突破穿越时的价格低点做空
3.多空反手,没有其它出场条件,一直在市
inputs:Length( 14 );
variables:VMPlus( 0 ),VMMinus( 0 ),VMPlusSum( 0 ),VMMinusSum( 0 ),TR( 0 ),TRSum( 0 ),
VIPlusSumRge( 0 ),VIMinusSumRge( 0 ),SignalTradeNum( 0 ),BuySignal( false ),
ShortSignal( false ),StopPrice( 0 ) ; VMPlus = AbsValue( High - Low[1] ) ;
VMMinus = AbsValue( Low - High[1] ) ;
VMPlusSum = Summation( VMPlus, Length ) ;
VMMinusSum = Summation( VMMinus, Length ) ;
TR = TrueRange ;
TRSum = Summation( TR, Length ) ; if TRSum <> 0 then
begin
VIPlusSumRge = VMPlusSum / TRSum ;
VIMinusSumRge = VMMinusSum / TRSum ;
end ; if VIPlusSumRge crosses over VIMinusSumRge then
begin
SignalTradeNum = TotalTrades ;
BuySignal = true ;
ShortSignal = false ;
StopPrice = High ;
end
else if VIPlusSumRge crosses under VIMinusSumRge then
begin
SignalTradeNum = TotalTrades ;
BuySignal = false ;
ShortSignal = true ;
StopPrice = Low ;
end ; if BuySignal and TotalTrades = SignalTradeNum and MarketPosition <> 1 then
Buy next bar StopPrice stop ; if ShortSignal and TotalTrades = SignalTradeNum and MarketPosition <> -1 then
SellShort next bar at StopPrice stop ;
以下是Vortex策略在K线上的交易信号示例

策略回测绩效(MC版)
策略在台湾指数期货60分钟K线的回测绩效:

策略在NYMEX轻原油120分钟K线的回测绩效:



Vortex Indicator 构建交易策略的更多相关文章
- 3. 量化交易策略 - https://github.com/3123958139/blog-3123958139/README.md
3. 量化交易策略 * 输入数据 - 只取最原始可靠的,如 * date * open * high * low * close * volume * 输出数据 - 根据数理统计取权重,把 o, h, ...
- 高频交易策略[z]
Market Order以最高速下市价单(market order)是买方最基本的策略 Looking for Price Discrepancies 这个就是高频统计套利(high frequenc ...
- 高频交易策略之Penny Jump[z]
高频交易策略之Penny Jump 今天假设有一个笨笨的大型机构投资人(共同基金,银行,退休基金....),他想要买进一只股票,但又不想挂市价买进,所以就在市场里面挂了一张要买进的大单.这时候所有市场 ...
- 系统交易策略 hylt
最令我尴尬的事情,莫过于很多朋友来到网站,不知道我说的是什么.大多数人以为鬼仆是推销软件的.其实这里理解是错的,特别是一些软件制作与经销商,更出 于推销的目的,故意夸大产品性能,模糊交易系统与一般行情 ...
- WeQuant交易策略—网格交易
网格交易策略(Grid Trading) 策略介绍 网格策略本质上是一种低吸高抛的策略.标的物价格越低,吸纳的头寸越多:标的物价格越高,卖出的头寸越多.网格策略巧妙地借鉴了日常生活中渔翁撒网扑鱼的思路 ...
- BotVS趋势交易策略-RSI
BotVS趋势交易策略-RSI, 基于Python实现. RSI简单买卖测试, 默认 70-100卖出,0-30买入 参数 代码 import math def adjustFloat(v): ret ...
- 金融量化分析【day112】:量化交易策略基本框架
摘要 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习做量化交易.毕竟就像学游泳,有些东西讲是 ...
- 【海龟汤策略】反趋势交易策略源代码分享(基于BOTVS)
策略介绍: 海龟之汤,简称“龟汤”,是个与海龟交易法则相反的交易策略,它利用了跟势交易(特别是海龟方式)在很多假突破方面的缺陷来获利(把海龟做成汤吃掉).上世纪八十年代早期,有个非常著名的交易员团体— ...
- 商品期货高频交易策略Tick框架
原帖地址:https://www.fmz.com/bbs-topic/1184在商品期货高频交易策略中, Tick行情的接收速度对策略的盈利结果有着决定性的影响,但市面上大多数交易框架,都是采用回调模 ...
- 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)
在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...
随机推荐
- json解析异常显示
解决方案 1.取消FastJson的循环引用的检查:JSONObject.toJSONString(guardVoList,SerializerFeature.DisableCircularRefer ...
- Python学习——Juptyer Notebook快捷键的使用
1. 运行当前Cell:Ctrl + Enter 2. 运行当前Cell并在其下方插入一个新的Cell:Alt + Enter 3. 运行当前Cell并选中其下方的Cell:Shift + Enter ...
- 深度学习-09(目标检测:Object Detection)
文章目录 目标检测(Object Detection) 一 .基本概念 1. 什么是目标检测 2. 目标检测的核心问题 3. 目标检测算法分类 4. 目标检测应用 目标检测原理 1.候选区域产生 1 ...
- [OpenCV-Python] 24 模板匹配
文章目录 OpenCV-Python:IV OpenCV中的图像处理 24 模板匹配 24.1 OpenCV 中的模板匹配 24.2 多对象的模板匹配 OpenCV-Python:IV OpenCV中 ...
- csp-s2022游记
## 10.29### 民间数据:洛谷 $95+85+60+44=284$ infoj $90+40+40+44=214$ **输麻了**### 赛时经历开考前发现前面坐着 Qiuly,好可怕.开 ...
- 一种KV存储的GC优化实践
作者:vivo 互联网服务器团队- Yuan Jian Wei 从内部需求出发,我们基于TiKV设计了一款兼容Redis的KV存储.基于TiKV的数据存储机制,对于窗口数据的处理以及过期数据的GC问题 ...
- Django 与 Vue 语法冲突问题完美解决方法
Django 与 Vue 语法冲突问题完美解决方法 当我们在 django web 框架中,使用 vue 的时候,会遇到语法冲突. 因为 vue 使用 {{}}, 而 django 也使用 {{}}, ...
- vue cli3 整合Cesium,处理build 时内存溢出问题
一直使用cesium,但是都是使用script直接引入的,但是在将其放置在增加路由的子页面中中时会出现一个问题,刷新后提示cesium is undefined 看直接引入cesium.js < ...
- CIO视角|平台工程带来的优势与机遇
在当今高速发展的技术环境中,企业越来越依赖技术作为创新和竞争优势的战略驱动力.首席信息官(CIO)在企业中负责监督信息和计算机技术的管理和实施,以交付预期的业务成果.在技术是业务核心的公司中,CIO ...
- odoo开发教程十六:定时任务
一:定义定时器数据模型 模型中定义需要用到的字段.定时方法 from odoo import models, fields, api, exceptions import logging from d ...