Vortex Indicator 构建交易策略

文章介绍了VortexIndicator,一种用于量化投资的趋势判断指标,它通过计算价格波动来识别多空趋势。VortexIndicator的计算涉及最高价、最低价的差值以及真实波动区间的分析。文章提供了MC版的指标代码和交易策略,并展示了在台湾指数期货和NYMEX轻原油的回测绩效。
摘要由CSDN通过智能技术生成

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


今天的文章,我们将为大家介绍一个与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线的回测绩效:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数量技术宅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值