好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

TB交易模型示例__tb内部课件__蔡云华.ppt

42页
  • 卖家[上传人]:xmg****18
  • 文档编号:114766398
  • 上传时间:2019-11-12
  • 文档格式:PPT
  • 文档大小:1.18MB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1,TB程序化交易模型示例,蔡云华 深圳开拓者科技有限公司,内容安排,介绍四套交易模型 一、单均线加通道交易模型 二、四周法则交易模型 三、双均线交叉交易模型 四、RangeBreak日内突破模型,2,例1:单均线加通道突破系统,交易规则: 以简单移动平均线判断趋势,收盘价在均线之上为多头趋势,在均线之下为空头趋势; 为过滤均线假突破,在均线基础上加减一定百分比形成围绕均线的上下两条通道; 价格盘中突破上轨,进场做多或平空反多; 价格盘中突破下轨,进场做空或平多反空; 增加跟踪止盈的功能(峰值价回落ATR倍数); 跟踪止盈后突破出场前高(低)点再进场; 交易头寸暂为1手3,策略设计(1),进出场技术指标的编写: ATRValue = AvgTrueRange(ATRLength); Commentary(“ATRValue=“+text(ATRValue)); MA = AverageFC(Close,Length); UpperBand = MA[1] * (1 + FilterPercent / 10000 ); LowerBand = MA[1] * (1 - FilterPercent / 10000 ); PlotNumeric(“MA“,MA); PlotNumeric(“UpperBand“,UpperBand); PlotNumeric(“LowerBand“,LowerBand); 其中参数:ATRLength --- 平均真实波幅的计算周期 FilterPercent --- 通道的比例(万分之几),4,策略设计(2),为了让系统的组合更灵活,把一个完整的交易模型分成做多和做空两个模型分别编写; 初次进场和再次进场,多空模型分别通过序列变量bLongStoped和bShortStoped来判断; 进场后,两个变量设为false,重新记录跟踪止损状况 跟踪止盈触发后,设置为true 趋势反转后,有仓位需要止损,但不设置标志 跟踪止损和再次进场创新高(低)的判断,都需要记录盈利峰值价( 也就是前高或前低),因此需要设置两个序列变量HigherAfterEntry和LowerAfterEntry,进场后及时记录价格的新高(低)的变化;,5,策略设计(3),跟踪止盈采用的是盈利峰值价回落ATR的一定比例后触发止损,加上本身趋势反转时的止损,两部分代码合在一起,以多头模型为例说明: 止损价的设置 StopLine = LowerBand; if (StopLine HigherAfterEntry - ATRValue[1] * TrailStopNumATR) StopLine = HigherAfterEntry - ATRValue[1] * TrailStopNumATR; 止损的触发 If(Low = StopLine) { MyPrice = StopLine; If(Open MyPrice) MyPrice = Open; Sell(0,MyPrice); bLongStoped = true; },6,策略设计(4),集合竞价数据过滤 集合竞价时,会产生一个Tick,这个Tick会驱动图表中加载的公式应用的运算,如果这时符合交易条件,则会发送委托单。

      但交易所此时并未开市,从而产生废单 为处理这种情况,我们需要在代码中过滤这些数据,我们在公式中加入以下代码: 分钟周期和Tick周期下 If (( BarType == 1 or BarType == 2 ) ,7,模型参数说明,Length:均线周期,默认值为10; ATRLength:ATR的周期,默认值为20; FilterPercent:通道幅度比例(万分之几),默认为100,即为百分之一; TrailStopNumATR:追踪止损,回测ATR的倍数,默认值为2; Lots:头寸大小,默认为交易1手8,例2:四周法则突破系统,交易规则: 价格突破最近四周(即日线20根K线)高点,做多,跌破四周低点做空; 增加更小周期作为止损,持多单跌破两周低点(即日线10根K线)止损出场,持空突破两周高点止损出局; 增加跟踪止盈的功能(峰值价回落ATR倍数); 跟踪止盈后突破出场前高(低)点再进场; 交易头寸暂为1手9,策略设计(1),进出场技术指标的编写: HiBand1 = highest(high[1],Length1); LoBand1 = lowest(low[1],Length1); HiBand2 = highest(high[1],Length2); LoBand2 = lowest(low[1],Length2); PlotNumeric(“HiBand1“,HiBand1); PlotNumeric(“LoBand1“,LoBand1); plotnumeric(“HiBand2“,HiBand2); plotnumeric(“LoBand2“,LoBand2); 其中参数:Length1 --- 四周的BAR数 Length2 --- 两周的BAR数,10,策略设计(2),突破四周高点进场做多(以多头模型为例) if ( MarketPosition == 0 && high = HiBand1 ) { …. } 多空分开设计,跟踪止盈的设计以及集合竞价数据的过滤都和例1的策略相同。

      11,模型参数说明,Length1:长周期天数,默认值为20,即四周; Length2:短周期天数,默认值为10,即两周; ATRLength:ATR的周期,默认值为20; TrailStopNumATR:追踪止损回撤ATR的倍数,默认值为2; Lots:头寸大小,默认为交易1手12,例3:双均线交叉系统,交易规则: 如果短期均线上穿长期均线,做多,如原来持有空单,则先平空单,再建多仓 如果短期均线下穿长期均线,做空,如原来持有多单,则先平多单,再建空单 短周期:10 长周期:20 交易头寸暂为1手,13,出场部分设计,我们使用三种类型的止损设置: 进场后设置初始止损; 有一定盈利后设置保本止损; 盈利增大后使用追踪止盈(峰值价回落ATR倍数); 为此,设置三个止损参数: Numeric InitialStop(20); // 初始止损(千分之N) Numeric BreakEvenStop(30); // 保本止损(千分之N) Numeric TrailingStop(50); // 追踪止损(千分之N) 三种止损的代码可以放在一起处理,取最有利的价格作为止损(赢)价。

      多头止损部分的代码,// 初始止损 StopLine = EntryPrice * (1-InitialStop/1000); // 达到保本止损条件,将止损位上移到保本的价位 If (HigherAfterEntry = EntryPrice * (1+BreakEvenStop/1000)) StopLine = EntryPrice; // 追踪止损的价位超过保本止损价,止损价随盈利峰值价的上升同步提高 If (StopLine HigherAfterEntry*(1-TrailingStop/1000)) StopLine = HigherAfterEntry*(1-TrailingStop/1000); Commentary(“止损价:“+Text(StopLine)); // 止损触发 If(Low = StopLine) { MyPrice = StopLine; If(Open MyPrice) MyPrice = Open; Sell(Lots,MyPrice); bLongStoped = True; // 止损后设置标志 Commentary(“Long Position Stoped at “+text(MyPrice)); },其他规则,其他策略和例子1相同: 采用多空模型分开设计; 再进场必须行情再创新高(低); 过滤集合竞价数据,止损处理的细节,无论初次进场还是再次进场,进场后都是把进场价作为开仓后的盈利最高价或最低价。

      两者的区别之处在于: 初次进场,因为是开盘价进场,可以在开仓Bar实现止损; 而再次入场,因为在历史K线中,无法确定入场点和最高价最低价在时间次序上的关系,从而无法实现在开仓BAR的止损因此,必须在记录开仓后最高和最低后,加上Return指令,从而忽略掉后面的止损部分公式例4:RangeBreak系统,这是个日内交易系统,收盘一定平仓; RangeBreak基于昨日振幅和今日开盘价的关系 昨日振幅=昨日最高价-昨日最低价 上轨 = 今日开盘价+N*昨日振幅 下轨 = 今日开盘价-N*昨日振幅 当价格突破上轨,买入开仓 当价格跌穿下轨,卖出开仓RangeBreak指标,Params Numeric PercentOfRange(0.3); Vars Numeric DayOpen; Numeric preDayRange; Numeric UpperBand; Numeric LowerBand; Begin DayOpen = OpenD(0); preDayRange = HighD(1) - LowD(1); UpperBand = DayOpen + preDayRange*PercentOfRange; LowerBand = DayOpen - preDayRange*PercentOfRange; PlotNumeric(“UpperBand“,UpperBand); PlotNumeric(“LowerBand“,LowerBand); PlotNumeric(“MidLine“,DayOpen); End,RangeBreak指标,,RBS_V1(1),Params Numeric PercentOfRange(0.3); Numeric ExitOnCloseMins(14.59); Vars Numeric DayOpen; Numeric preDayRange; Numeric UpperBand; Numeric LowerBand; Numeric MyPrice; Begin DayOpen = OpenD(0); preDayRange = HighD(1) - LowD(1); UpperBand = DayOpen + preDayRange*PercentOfRange; LowerBand = DayOpen - preDayRange*PercentOfRange; If(MarketPosition!=1 },RBS_V1(2),If(MarketPosition!=-1 End,必须考虑的特殊情况,如果前一日涨停或跌停,则会出现范围很小。

      解决方案: 设定一个范围的最小值,假定为当前价格的0.2%代码中的改动,Params Numeric MinRange(0.2); Vars NumericSeries DayOpen; Numeric preDayHigh; Numeric preDayLow; NumericSeries preDayRange; Begin preDayHigh = HighD(1); preDayLow = LowD(1); If(Date!=Date[1]) { DayOpen = Open; preDayRange = preDayHigh - preDayLow; If(preDayRange Open*MinRange*0.01) preDayRange = Open*MinRange*0.01; }Else { DayOpen = DayOpen[1]; preDayRange = preDayRange[1]; },增加止损,有可能通道会比较宽,难道非要等到反转才平仓? 考虑增加止损设置,有2种方案: 1、亏损固定点数 2、亏损当前价格的百分比。

      点击阅读更多内容
      相关文档
      云南省红河州河口县语文二年级下学期期末试题+2020-2021学年.pdf 八年级生物开学摸底考(人教版)(答题卡).pdf 云南省文山州砚山县数学四年级下学期期末试题 2020-2021学年 (2).pdf 八年级生物开学摸底考(辽宁专用)(答题卡).pdf 八年级生物开学摸底考(海南专用)(答题卡).pdf 云南省昆明市五华区数学四年级第二学期期末考试 2020-2021学年.pdf 八年级生物开学摸底考(南京专用)(答题卡).pdf 八年级生物开学摸底考(湖南专用)(答题卡).pdf 云南省德宏州语文五年级下学期期末试题 2020-2021学年答案zq.pdf 八年级生物开学摸底考(武汉专用)(答题卡).pdf 2022年盐城市中考化学试卷答案.pdf 云南省德宏州语文四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学五年级下学期期末试题 2020-2021学年数学答案zq.pdf 八年级生物开学摸底考(福建专用)(答题卡).pdf 八年级生物开学摸底考(全国通用)(答题卡).pdf 八年级生物开学摸底考(广西专用)(答题卡).pdf 八年级生物开学摸底考(广州专用)(答题卡).pdf 云南省昆明市盘龙区数学四年级第二学期期末考试 2020-2021学年.pdf 云南省昆明市盘龙区语文二年级第二学期期末考试 2020-2021学年(人教部编版无答案PDF).pdf
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.