大数跨境
0
0

波动率通道交易系统(The Volatility Band Strategy,TVBS)

波动率通道交易系统(The Volatility Band Strategy,TVBS) 我爱程序化
2025-09-17
4
导读:The Volatility Band Strategy,波动率通道策略。通道策略也是很多人接触程式交易会先碰到的交易策略。

The Volatility Band Strategy,波动率通道策略。通道策略也是很多人接触程式交易会先碰到的交易策略。大家都知道,通道策略有他的弹性,可顺可逆。把通道缩窄一点,就可以做顺势;或是把通道拉宽一点,就可以做逆势,或是再搭配其他指标写成其他的交易策略等。

可以发现其实通道无所不在,只是通道的取法各有不同罢了。换个角度来看,我们都只是在寻找两条线,支撑跟压力线来决定进场作多或作空,通道的上限与下限何尝不是这种概念呢!

衡量价格波动的方式

有非常多的方法来衡量价格走势的波动率,其中最普遍被使用的方式就是-平均真实区间(Average True Range),其公式为下列三者取最大值:

(1) 今日最高价与最低价的距离

(2) 昨日收盘价与今日最高价的距离

(3) 昨日收盘价与今日最低价的距离

简单来说就是昨日收盘价落在今日K棒高点之上,真实区间就是昨日收盘价减去今日收盘价。如果昨日收盘价落在今日K棒低点之下,真实区间就是今日最高价减去昨日收盘价。如果昨日收盘价落在今日K棒高低点中间,真实区间就是今日最高价减去今日最低价,如下面附图所示:

为了使平均真实区间的变化能更平滑一些,这边选择了用TypicalPrice,也就是

(high+low+close)/ 3取代原本公式所直接採用的high、low和close。因此,修改过后的真实区间公式为:

(1) 如果TypicalPrice > TypicalPrice [1] → TypicalPrice – Low[1]

(2) 如果TypicalPrice < TypicalPrice [1] → TypicalPrice [1] – Low

其中,TypicalPrice是MC内建可以直接使用的函数。

通道组成方式

通道的组成大致上由两个因子决定,第一个就是中心线,另一个就是通道宽度。大家都知道布林带通道(BollingerBand)是由一条均线当中心线,而通道宽度是由标准差所决定。当然,这里要介绍的也是一样,中心线是用TypicalPrice所计算出的均线,而通道宽度则是使用上面改善过后的平均真实区间(TypicalPx)来决定。

首先先算出Deviation = (Summation(TypicalPx,Period) / Period) * DevFact;

再来就算出中心线与上下通道宽度如下所示:

MedianAvg = XAverage(TypicalPrice, BandAverage);

DevHigh = XAverage(Deviation, BandAverage);

DevLow = XAverage(Deviation, BandAverage) * LowBandAdjust;

最后可以得到我们的通道的上下限。

上限: XAverage(MedianAvg, BandAverage) DevHigh

下限: XAverage(MedianAvg, BandAverage) - DevLow

中限: XAverage(MedianAvg, BandAverage)

大家一定觉得奇怪为什么通道下限的计算中要乘上LowBandAdjust来调整呢?那是因为经由观察过后发现价格比较常接触到上限,比较不容易接触到下限,所以这边乘上一个因子来做调整,所以看你要怎么去设定都可以。基本上这里介绍的通道宽度是由DevFact来决定的,想让通道窄一点就设定小一点,想让通道宽一点就设定大一点。所以画出来的通道图就像下图一样。

程式码部分

inputs:Period(30),DevFact(1),BandAverage(30);
variables:TypicalPx(0),Deviation(0),MedianAvg(0),bd(0),top(0),bot(0),time1(False),time2(False),time3(False);
time1 = Time > 0900 and Time < 1500;time2 = Time > 2100 and Time < 2300;time3 = time1 or time2;
if TypicalPrice > TypicalPrice[1] then TypicalPx = TypicalPrice-low[1]else if TypicalPrice < TypicalPrice[1] then TypicalPx = TypicalPrice[1]-Low;
Deviation = (Summation(TypicalPx,Period)/Period)*DevFact;
MedianAvg = XAverage(typicalprice,bandaverage);
bd = XAverage(deviation,bandaverage);
top = MedianAvg + bd;bot = MedianAvg - bd;
if time3 then beginif  Close[1] < top[1] and marketposition<>1 then buy("b") next bar at top + 3*MinMove point stop;if  Close[1] > bot[1] and marketposition<>-1 then sellshort("s") next bar at bot - 3*MinMove point stop;end;
if marketposition > 0 then beginsell("SL1") next bar at entryprice - 75*minMove point stop;sell("LX") next bar at entryprice + 150*MinMove point limit;end;
if marketposition < 0 then beginbuytocover("SL2") next bar at entryprice + 75*MinMove point stop;buytocover("SX") next bar at entryprice - 150*MinMove point limit;end;
回测绩效:
关注我们微信及群,第一时间获取最新策略解析及程式码

关注微信:

图片

加入群:每天接收新策略新思路

图片


关注公众号:每天经典策略不错过!

通过下面方式支持我们:

1、关注管理员微信、我们公众号及入群。

2、想用multicharts平台做程序化可以联系我们购买它们年度会员或绑定实盘进行程序化,我们有最具性价比的手续费政策和年度会员购买优惠折扣政策。

3、使用我们自研平台“鼎元C++全自动化”平台进行期货量化交易,执行期货公司特惠佣金费率,享受免平台费服务,【执行无平台费,不加手续费政策】,众多策略模板范例可供参考、优化与升级。我们还提供更多的教程服务与视频培训,欢迎咨询。

4、通过我们开立证券股票账户,执行人性化佣金政策,欢迎咨询。

5、我们的工作与研究离不开大家的支持。感谢大家!

图片
图片
图片


【声明】内容源于网络
0
0
我爱程序化
期货程序化介绍、平台、策略及源码研究与编程。20年策略研究,15年实战经验。
内容 292
粉丝 0
我爱程序化 期货程序化介绍、平台、策略及源码研究与编程。20年策略研究,15年实战经验。
总阅读568
粉丝0
内容292