资源描述
TB公式高级应用,黄柳,深圳市拓瑞邦泽科技有限公司,Part I:,Bollinger Bandit System,Bollinger Bandit System,系统名字的字面翻译为【布林强盗】,我们这里简称为BBS; 基于Bollinger Bands(布林通道)的趋势跟踪系统; 根据持仓周期调整跟踪止损。,Bollinger Bandit System,该系统包含以下四个要素: 布林带 均线 ROC 计数器,Bollinger Bandit System,入场条件: 价格突破布林带上轨即做多; 价格跌破布林带下轨即做空; ROC为正的情况下才能做多; ROC为负的情况下才能做空。,Bollinger Bandit System,出场条件: 持多仓的情况下,N周期的收盘价小于布林带上轨,即在下个Bar平仓。 持空仓的情况下,N周期的收盘价大于布林带下轨,即在下个Bar平仓。 N的值根据持仓周期变化。刚开仓为50,每持仓Bar,即将N值减1,最小到10。,Bollinger Bandit System,参数定义: 布林带的周期数50; 布林带标准差的倍数1.25; ROC的周期数30; 跟踪止损算法的周期数50;,Bollinger Bandit System,参数定义代码: Params Numeric BBLength(50); Numeric NumsStdDev(1.25); Numeric ROCLength(30); Numeric ExitLength(50);,Bollinger Bandit System,布林带算法: 定义上轨为UpBand,下轨为DnBand; UpBand = AverageFC(Close, BBLength) + StandardDev(Close, BBLength,2)* NumsStdDev; DnBand = AverageFC(Close, BBLength) - StandardDev(Close, BBLength,2)* NumsStdDev; 这里使用的样本标准差。,Bollinger Bandit System,实际交易讯号的产生是根据上一周期的布林带,因为我们将算法中的Close修改为Close1; 也可以将UpBand和DnBand设为序列变量,判断UpBand1的值讯号条件; UpBand = AverageFC(Close1, BBLength) + StandardDev(Close1, BBLength,2)* NumsStdDev; DnBand = AverageFC(Close1, BBLength) - StandardDev(Close1, BBLength,2)* NumsStdDev;,Bollinger Bandit System,计算Roc值 定义变量RocValue Numeric RocValue; RocValue = Close-CloseRocLength;,Bollinger Bandit System,开多仓条件写法: If(MarketPosition1 ,Bollinger Bandit System,开空仓条件的写法类似: If(MarketPosition-1 ,Bollinger Bandit System,动态计算跟踪止损的周期数: 先定义一个变量: NumericSeries exBars; 在公式开始部分添加如下代码: If(MarketPosition=0) exBars = ExitLength; else exBars = exBars1 - 1; ,Bollinger Bandit System,根据动态计算的周期数,求出前一周期的均线: StopAvgClose = Average(Close1,exBars); 持有多仓的情况下,当前价格如果跌破StopAvgClose 即止损。 If(MarketPosition=1 ,Bollinger Bandit System,持有空仓的情况下,当前价格如果突破StopAvgClose 即止损。 If(MarketPosition=-1 ,Bollinger Bandit System,对于BBS系统的完善: 我们可以替换Close为其他算法,比如: Typical Price = (high + low + close)/3 Weighted Price = (high + low + close + close)/4 增加固定比例止损额,限制单笔交易的最大亏损; 增加连续亏损的控制,由此我们引申出下一部分内容。,Part II:,Thermostat System,Thermostat System,系统名字的字面翻译为【调温器系统】,我们这里简称为TS; 通过一个指标来界定市场形态,根据分类进行不同模式的交易:趋势跟踪和波段交易。 趋势跟踪采取前面所讲的BBS类似方法。 波段交易采取开盘价+ATR突破方式。,Thermostat System,ChoppyMarketIndex,简称CMI,是0-100之间的值,用来量度市场的变动情况。ChoppyMarketIndex = Abs(Close Close29)/ (Highest(High,30) Lowest(Low,30)*100); 本系统设置CMI20时为波段模式。,Thermostat System,波段模式下,通过一个简单的条件来判别多空强弱。 If(Close (High+Low+Close)/3) LongShortFlag = 1; else LongShortFlag = -1; ,Thermostat System,LongShortFlag=1的情况下,第二天做多的突破范围我们会设置较小,做空的突破范围设置较大。 LongShortFlag=-1的情况下,第二天做多的突破范围我们会设置较大,做空的突破范围设置较小。,Thermostat System,atr10 = AverageTrueRange(10); avg3Hi = Average(High,3); avg3Lo = Average(Low,3); If(LongShortFlag=1) longEntryPoint = Open + atr10 * 0.5; ShortEntryPoint = Open - atr10 * 0.75; else longEntryPoint = Open + atr10 * 0.75; ShortEntryPoint = Open - atr10 * 0.5; longEntryPoint = Max(longEntryPoint,avg3Lo); shortEntryPoint = Min(shortEntryPoint,avg3Hi);,Thermostat System,波段交易的出场条件: longExitPoint = entryPrice - 3 * atr10; ShortExitPoint = entryPrice + 3 * atr10,Part III:,收盘自动平仓程序,收盘自动平仓程序,该程序实现收盘前平掉指定商品所有的持仓; 可以支持多个商品的同时平仓; 可作为手工交易的辅助,防止日内交易因为失误导致持仓过夜。,收盘自动平仓程序,该程序使用到商品叠加的扩展数据调用; 该程序使用到A函数,Q函数,以及全局变量的控制。 该商品使用了撤单指令,并增加Tick延迟,防止刚撤单后即平仓,出现持仓尚未解锁的问题。,谢谢!,
展开阅读全文