开拓者程序化交易TB公式高级应用_第1页
开拓者程序化交易TB公式高级应用_第2页
开拓者程序化交易TB公式高级应用_第3页
开拓者程序化交易TB公式高级应用_第4页
开拓者程序化交易TB公式高级应用_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TB公式高级应用公式高级应用黄柳黄柳深圳市拓瑞邦泽科技有限公司第一部分第一部分持仓交易系统的分析和实现持仓交易系统的设计要素持仓交易系统的设计要素u设计思路:趋势跟踪;u设计原则:不能错过主要趋势;u设计细节:减少盘整时的连续亏损和最大资金回撤。u总结:uCut loss short, let profit runu截短亏损,让利润奔跑截短亏损,让利润奔跑!常见的持仓交易系统常见的持仓交易系统u高低点突破系统(四周法则)u双均线系统(DualMA)u波动性突破系统(ATR)u布林通道突破系统(BOLL)u抛物线转向系统(SAR)u顾比倒数线系统(CBL)Keltner Channel Syst

2、emu基于Keltner Channel(肯特纳通道)的持仓交易系统。u由价格均线和ATR形成通道,当价格突破通道产生入场讯号。Keltner Channel原理原理u肯特纳通道肯特纳通道(KC)是一个移动平均通道,由三条线组合而成(上轨、中线及下轨),若价格突破边界,即表示出现开仓机会。u肯特纳通道是基于平均真实波幅原理而形成的指标,对价格波动反应灵敏,基于KC的系统可以实时开仓,不需要等待下一个Bar。Keltner Channel算法算法u中线 = Typical Price 的 N 周期平均值;uTypical Price =(High+Low+Close)/3;u上轨 = 中线 +

3、通道;u通道 = NumATRs * 平均真实波幅。Keltner Channel指标指标vParamsvNumeric Length(20);vNumeric NumATRs(1);vVarsvNumericSeries TPrice;vNumeric AvgValue;vNumeric ShiftValue;vNumeric UpperBand;vNumeric LowerBand;vBeginvTPrice = (High+Low+Close)/3;vAvgValue = AverageFC(TPrice,Length);vShiftValue = NumATRs*AvgTrueRang

4、e(Length);vUpperBand = AvgValue + ShiftValue;vLowerBand = AvgValue - ShiftValue;vPlotNumeric(UpperBand,UpperBand);vPlotNumeric(LowerBand,LowerBand);vPlotNumeric(MidLine,AvgValue);vEndKCS 版本版本1(1)vParamsvNumeric Length(20);vNumeric NumATRs(1);vVarsvNumericSeries TPrice;vNumeric AvgValue;vNumericSerie

5、s ShiftValue;vNumeric UpperBand;vNumeric LowerBand;vNumeric MyPrice;vBeginvTPrice = (High1+Low1+Close1)/3;vAvgValue = AverageFC(TPrice,Length);vShiftValue = NumATRs*AvgTrueRange(Length);vUpperBand = AvgValue + ShiftValue1;vLowerBand = AvgValue - ShiftValue1;KCS版本版本1(2)v If(MarketPosition!=1 & High =

6、 UpperBand)vvMyPrice = UpperBand;vIf(Open MyPrice) MyPrice = Open;vBuy(1,MyPrice);Return;vvIf(MarketPosition!=-1 & Low = LowerBand)vvMyPrice = LowerBand;vIf(Open 1)vvHigherAfterEntry = Max(HigherAfterEntry1,High1);vLowerAfterEntry = Min(LowerAfterEntry1,Low1);vvCommentary(HigherAfterEntry=+Text(High

7、erAfterEntry);vCommentary(LowerAfterEntry=+Text(LowerAfterEntry);KCS_V3(5)vIf(MarketPosition=1)vvIf(Low = HigherAfterEntry - TrailingStop*MinPoint)vvMyPrice = HigherAfterEntry - TrailingStop*MinPoint;vIf(Open = LowerAfterEntry + TrailingStop*MinPoint)vvMyPrice = LowerAfterEntry + TrailingStop*MinPoi

8、nt;vIf(Open MyPrice) MyPrice = Open;vBuyToCover(1,MyPrice);vvKCS_V3(6)u我们将编译后的系统重新运行,会看到净利润上升了13295,最大资金回撤下降了14575,改进的效果是非常明显的。u我们再回顾2006年7月的图表,KCSV3的讯号如下图:u如图中红圈位置,在跟踪止损之后,价位还在KC上轨之上,系统再次入场。u我们应该思考一种新的入场规则,在跟踪止损或止损后再次入场。KCS_V3(7)KCS_V4(1)u重新入场规则:做多时突破前期高点再次入场;做空时突破前期低点再次入场。u为了实现重新入场,我们需要记录跟踪止损的状态。u

9、还需要记录最近的最高、最低点。KCS_V4(2)v新增序列变量:vBoolSeries bLongTrailingStoped;vBoolSeries bShortTrailingStoped;u初始化:vIf(BarStatus 0)vvbLongTrailingStoped = bLongTrailingStoped1;vbShortTrailingStoped = bShortTrailingStoped1;vvCommentary(bLongTrailingStoped=+IIFString(bLongTrailingStoped,True,False);vCommentary(bSh

10、ortTrailingStoped=+IIFString(bShortTrailingStoped,True,False);KCS_V4(3)u增加一个条件分支,记录HigherAfterEntry和LowerAfterEntry的值。u再次入场的代码:vIf(bLongTrailingStoped & MarketPosition=0 & High HigherAfterEntry)vvMyPrice = HigherAfterEntry + MinPoint;vIf(Open MyPrice) MyPrice = Open;vBuy(1,MyPrice);vbLongTrailingSto

11、ped = False;vReturn;vvIf(bShortTrailingStoped & MarketPosition=0 & Low LowerAfterEntry)vvMyPrice = LowerAfterEntry - MinPoint;vIf(Open =UpperBand) vMyPrice = UpperBand;vIf(Open MyPrice) MyPrice = Open;vBuy(1,MyPrice);vReturn;vRBS_V1(2)vIf(MarketPosition!=-1 & Low=LowerBand)vvMyPrice = LowerBand;vIf(

12、Open =ExitOnCloseMins/100)vvSell(1,Open);vBuyToCover(1,Open);vvSetExitOnClose;vEndRBS_V1(3)u我们将最初级版本的系统应用于所有品种的指数中(可行性测试,选取了指数的30分钟周期,数据范围为2008.1.1-现在)。除了玉米,小麦等少数价低品种外,绝大部分都是盈利,有些品种还有不错的资金曲线。u证明该系统的有不错的胚子,值得继续深入研究。RBS_V2(1)v如果前一日涨停或跌停,则会出现范围很小。v两种解决方案:v1、设定一个范围的最小值,假定为当前价格的0.2%。v2、考虑上当前的开盘价,加上跳空的范围。

13、我们选择第一种方法。RBS_V2(2)vParamsv Numeric MinRange(0.2);vVarsv NumericSeries DayOpen;v Numeric preDayHigh;v Numeric preDayLow; v NumericSeries preDayRange;vBeginv preDayHigh = HighD(1);v preDayLow = LowD(1);v If(Date!=Date1)v v DayOpen = Open;v preDayRange = preDayHigh - preDayLow;v If(preDayRange Open*Mi

14、nRange*0.01) v preDayRange = Open*MinRange*0.01;v Elsev v DayOpen = DayOpen1;v preDayRange = preDayRange1;v RBS_V3(1)v有可能通道会比较宽,难道非要等到反转才平仓?v考虑增加止损设置,也有2种方案:v1、亏损固定点数。v2、亏损当前价格的百分比。v考虑到商品价格变化的差异,我们采取第二种方式。RBS_V3(2)v 先增加一个变量StopLine,用来保存止损位置。v下面是做多时的止损代码:vIf(MarketPosition=1)vvStopLine = UpperBand-Da

15、yOpen*StopLossSet*0.01;vIf(Low = StopLine)vvMyPrice = StopLine;vIf(Open = StopLine)vvMyPrice = StopLine;vIf(Open MyPrice) MyPrice = Open;vBuyToCover(Lots,MyPrice);vvRBS_V4(1)v突破的时效性,发生在上午和下午意义是不同的。v不同的商品时效属性不尽相同v为此我们增加最后交易时间参数,可供优化测试来确定最佳值。RBS_V4(2)v增加参数:vNumeric LastTradeMins(14.00);v开仓条件处增加一个时间条件。

16、vIf(MarketPosition!=1 & High=UpperBand & Time LastTradeMins/100)vv/ 多头开仓vvIf(MarketPosition!=-1 & Low=LowerBand & Time 1)vvHigherAfterEntry = max(HigherAfterEntry1,High1);vLowerAfterEntry = min(LowerAfterEntry1,Low1);vRBS_V5(4)v跟踪止损的编码可配合前面的止损编码一起控制。vIf(HigherAfterEntry=AvgEntryPrice+DayOpen*Trailin

17、gStart*0.01)vvStopLine = HigherAfterEntry - DayOpen*TrailingStop*0.01;vElse / 止损vvStopLine = UpperBand-DayOpen*StopLossSet*0.01;vvvIf(Low = StopLine)vvMyPrice = StopLine;vIf(Open HigherAfterEntry)vvMyPrice = HigherAfterEntry + MinPoint;vIf(Open MyPrice) MyPrice = Open;vBuy(1,MyPrice);vbLongStoped =

18、False;vReturn;vvRBS_V6(4)v/ 做空再次入场代码:vIf(bShortStoped & MarketPosition=0 & Low LowerAfterEntry)vvMyPrice = LowerAfterEntry - MinPoint;vIf(Open MyPrice) MyPrice = Open;vSellShort(1,MyPrice);vbShortStoped = False;vReturn;vRBS_V7(1)v增加涨跌停板控制,接近涨跌停板不会开仓。v价格到达涨跌停板马上平仓。RBS_V7(2)v我们新建一个布尔变量bInBoardRange,默认值设置为False。vInBoardRange = v(Open Q_UpperLimit - DayOpen*StopLos

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论