已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,TB程序化交易模型示例,内容安排,介绍四套交易模型一、单均线加通道交易模型二、四周法则交易模型三、双均线交叉交易模型四、RangeBreak日内突破模型,2,例1:单均线加通道突破系统,交易规则:以简单移动平均线判断趋势,收盘价在均线之上为多头趋势,在均线之下为空头趋势;为过滤均线假突破,在均线基础上加减一定百分比形成围绕均线的上下两条通道;价格盘中突破上轨,进场做多或平空反多;价格盘中突破下轨,进场做空或平多反空;增加跟踪止盈的功能(峰值价回落ATR倍数);跟踪止盈后突破出场前高(低)点再进场;交易头寸暂为1手。,3,策略设计(1),进出场技术指标的编写:ATRValue = AvgTrueRange(ATRLength);Commentary(ATRValue=+text(ATRValue);MA = AverageFC(Close,Length);UpperBand = MA1 * (1 + FilterPercent / 10000 );LowerBand = MA1 * (1 - FilterPercent / 10000 );PlotNumeric(MA,MA);PlotNumeric(UpperBand,UpperBand);PlotNumeric(LowerBand,LowerBand);其中参数:ATRLength - 平均真实波幅的计算周期 FilterPercent - 通道的比例(万分之几),4,策略设计(2),为了让系统的组合更灵活,把一个完整的交易模型分成做多和做空两个模型分别编写;初次进场和再次进场,多空模型分别通过序列变量bLongStoped和bShortStoped来判断;进场后,两个变量设为false,重新记录跟踪止损状况跟踪止盈触发后,设置为true趋势反转后,有仓位需要止损,但不设置标志跟踪止损和再次进场创新高(低)的判断,都需要记录盈利峰值价( 也就是前高或前低),因此需要设置两个序列变量HigherAfterEntry和LowerAfterEntry,进场后及时记录价格的新高(低)的变化;,5,策略设计(3),跟踪止盈采用的是盈利峰值价回落的一定比例后触发止损,加上本身趋势反转时的止损,两部分代码合在一起,以多头模型为例说明:止损价的设置StopLine = LowerBand;if (StopLine HigherAfterEntry - ATRValue1 * TrailStopNumATR)StopLine = HigherAfterEntry - ATRValue1 * TrailStopNumATR;止损的触发If(Low = StopLine)MyPrice = StopLine;If(Open = 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指标,ParamsNumeric PercentOfRange(0.3);VarsNumeric DayOpen;Numeric preDayRange;Numeric UpperBand;Numeric LowerBand;BeginDayOpen = 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),ParamsNumeric PercentOfRange(0.3);Numeric ExitOnCloseMins(14.59);VarsNumeric DayOpen;Numeric preDayRange;Numeric UpperBand;Numeric LowerBand;Numeric MyPrice;BeginDayOpen = 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!=Date1) DayOpen = Open; preDayRange = preDayHigh - preDayLow; If(preDayRange Open*MinRange*0.01) preDayRange = Open*MinRange*0.01; Else DayOpen = DayOpen1; preDayRange = preDayRange1; ,增加止损,有可能通道会比较宽,难道非要等到反转才平仓?考虑增加止损设置,有2种方案:1、亏损固定点数。2、亏损当前价格的百分比。考虑到商品价格变化的差异,我们采取第二种方式。,止损部分代码,先增加一个变量StopLine,用来保存止损位置。下面是做多时的止损代码:If(MarketPosition=1)StopLine = AvgEntryPrice-DayOpen*StopLossSet*0.01;If(Low = StopLine)MyPrice = StopLine;If(Open = StopLine)MyPrice = StopLine;If(Open MyPrice) MyPrice = Open;BuyToCover(Lots,MyPrice);,入场时间的考虑,突破的时效性,发生在上午和下午意义是不同的。不同的商品时效属性不尽相同为此我们增加最后交易时间参数,可供优化测试来确定最佳值。,实现代码,增加参数:Numeric LastTradeMins(14.00);开仓条件处增加一个时间条件。If(MarketPosition!=1 & High=UpperBand & Time LastTradeMins/100)/ 多头开仓If(MarketPosition!=-1 & Low=LowerBand & Time =AvgEntryPrice+DayOpen*TrailingStart*0.01)StopLine = HigherAfterEntry - DayOpen*TrailingStop*0.01;Else / 止损StopLine = AvgEntryPrice-DayOpen*StopLossSet*0.01;If(Low = StopLine)MyPrice = StopLine;If(Open MyPrice) MyPrice = Open;Sell(1,MyPrice);做空的代码类似。,再进场原则,当我们止损或跟踪止损之后,有两种情况我们需要加以控制:止损后,再次突破上轨或下轨;追踪止赢后,价格仍符合最初的开仓条件,出场后,马上又会开仓入场。同时,为了不错失大的波段,我们也需要再次入场,只是进场需要更高的条件。我们增加一条:再次进场必须在突破前期的高点低点。,代码的修改,我们需要标记止损动作,并要记录高低位。新建两个布尔型序列变量:BoolSeries bLongStoped;BoolSeries bShortStoped;在脚本开始位置增加处理,保证其值向后传递。增加HigherAfterEntry和LowerAfterEntry在平仓后的值传递。,初次进场和再次进场,在原始开仓位置增加条件,开多仓时bLongStoped不能为True,开空仓时bShortStoped不能为True。发出交易指令处理这两个序列变量。增加再次入场的代码:If(bLongStoped ,/ 做空再次入场代码:If(bShortStoped ,涨跌停的控制,接近涨跌停板不应开仓。若有持仓,价格到达涨跌停板马上平仓。,判断是否接近涨跌停,我们新建一个布尔变量bInBoardRange,默认值设置为False。bInBoardRange = (Open Q_UpperLimit - DayOpen*StopLossSet*0.02);在开仓条件中加入(bInBoardRange=false),涨跌停板平仓,为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码:做多时:If(Open = Q_UpperLimit) Sell(1,Open);做空时:If(Open = Q_LowerLimit) BuyToCover(Lots,Open);,交易次数控制,增加失败次数限制,防止单日亏损无限制扩大。增加二个变量记录失败的次数。NumericSeries LongFailureCnts;NumericSeries ShortFailureCnts;增加一个参数设置最大次数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年资溪县辅警招聘考试真题汇编附答案
- 2025年电力系统维护与故障排除规范
- 2024年焦作工贸职业学院马克思主义基本原理概论期末考试题附答案
- 2025安徽淮南市总工会社会化工会工作者招聘17人备考题库附答案
- 2025国考行测A卷数量关系真题参考答案
- 2025年亳州市直属机关遴选公务员笔试真题汇编附答案
- 2024年海南热带海洋学院辅导员招聘备考题库附答案
- 2024年清远职业技术学院辅导员考试笔试题库附答案
- 信息化系统项目管理规范(标准版)
- 2024年湛江科技学院辅导员考试笔试真题汇编附答案
- 2025年敖汉旗就业服务中心招聘第一批公益性岗位人员的112人模拟试卷含答案详解
- 婚姻家庭继承实务讲座
- 湖南省长沙市中学雅培粹中学2026届中考一模语文试题含解析
- 新内瘘穿刺护理
- 钳工个人实习总结
- 大健康养肝护肝针专题课件
- 道路高程测量成果记录表-自动计算
- 关于医院“十五五”发展规划(2026-2030)
- DB31-T 1587-2025 城市轨道交通智能化运营技术规范
- 医疗护理操作评分细则
- 自考-经济思想史知识点大全
评论
0/150
提交评论