版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、持仓交易系统的设计要素u设计思路:趋势跟踪;u设计原则:不能错过主要趋势;u设计细节:减少盘整时的连续亏损和最大资金回撤。u总结:uCut loss short, Let profit runu截短亏损,让利润奔跑!第1页/共63页常见的持仓交易系统u高低点突破系统(四周法则)u双均线系统(DualMA)u波动性突破系统(ATR)u布林通道突破系统(BOLL)u抛物线转向系统(SAR)u顾比倒数线系统(CBL)第2页/共63页Keltner Channel Systemu基于Keltner Channel(肯特纳通道)的持仓交易系统。u由价格均线和ATR形成通道,当价格突破通道产生入场讯号。第
2、3页/共63页Keltner Channel原理u肯特纳通道(KC)是一个移动平均通道,由三条线组合而成(上轨、中线及下轨),若价格突破边界,即表示出现开仓机会。u肯特纳通道是基于平均真实波幅原理而形成的指标,对价格波动反应灵敏,基于KC的系统可以实时开仓,不需要等待下一个Bar。第4页/共63页Keltner Channel算法u中线 = Typical Price 的 N 周期平均值;uTypical Price =(High+Low+Close)/3;u上轨 = 中线 + 通道;u通道 = NumATRs * 平均真实波幅。第5页/共63页Keltner Channel指标ParamsN
3、umeric Length(20);Numeric NumATRs(1);VarsNumericSeries TPrice;Numeric AvgValue;Numeric ShiftValue;Numeric UpperBand;Numeric LowerBand;BeginTPrice = (High+Low+Close)/3;AvgValue = AverageFC(TPrice,Length);ShiftValue = NumATRs*AvgTrueRange(Length);UpperBand = AvgValue + ShiftValue;LowerBand = AvgValue
4、- ShiftValue;PlotNumeric(UpperBand,UpperBand);PlotNumeric(LowerBand,LowerBand);PlotNumeric(MidLine,AvgValue);End第6页/共63页KCS 版本1(1) ParamsNumeric Length(20);Numeric NumATRs(1); VarsNumericSeries TPrice;Numeric AvgValue;NumericSeries ShiftValue;Numeric UpperBand;Numeric LowerBand;Numeric MyPrice; Begi
5、nTPrice = (High1+Low1+Close1)/3;AvgValue = AverageFC(TPrice,Length);ShiftValue = NumATRs*AvgTrueRange(Length);UpperBand = AvgValue + ShiftValue1;LowerBand = AvgValue - ShiftValue1;第7页/共63页KCS版本1(2) If(MarketPosition!=1 & High = UpperBand)MyPrice = UpperBand;If(Open MyPrice) MyPrice = Open;Buy(1,MyPr
6、ice);Return;If(MarketPosition!=-1 & Low = LowerBand)MyPrice = LowerBand;If(Open 1) HigherAfterEntry = Max(HigherAfterEntry1,High1);LowerAfterEntry = Min(LowerAfterEntry1,Low1); Commentary(HigherAfterEntry=+Text(HigherAfterEntry); Commentary(LowerAfterEntry=+Text(LowerAfterEntry);第15页/共63页KCS_V3(5) I
7、f(MarketPosition=1) If(Low = HigherAfterEntry - TrailingStop*MinPoint)MyPrice = HigherAfterEntry - TrailingStop*MinPoint;If(Open = LowerAfterEntry + TrailingStop*MinPoint)MyPrice = LowerAfterEntry + TrailingStop*MinPoint;If(Open MyPrice) MyPrice = Open;BuyToCover(1,MyPrice); 第16页/共63页KCS_V3(6)u我们将编译
8、后的系统重新运行,会看到净利润上升了13295,最大资金回撤下降了14575,改进的效果是非常明显的。u我们再回顾2006年7月的图表,KCSV3的讯号如下图:u如图中红圈位置,在跟踪止损之后,价位还在KC上轨之上,系统再次入场。u我们应该思考一种新的入场规则,在跟踪止损或止损后再次入场。第17页/共63页KCS_V3(7)第18页/共63页KCS_V4(1)u重新入场规则:做多时突破前期高点再次入场;做空时突破前期低点再次入场。u为了实现重新入场,我们需要记录跟踪止损的状态。u还需要记录最近的最高、最低点。第19页/共63页KCS_V4(2) 新增序列变量: BoolSeries bLong
9、TrailingStoped; BoolSeries bShortTrailingStoped;u初始化: If(BarStatus 0) bLongTrailingStoped = bLongTrailingStoped1;bShortTrailingStoped = bShortTrailingStoped1; Commentary(bLongTrailingStoped=+IIFString(bLongTrailingStoped,True,False); Commentary(bShortTrailingStoped=+IIFString(bShortTrailingStoped,Tr
10、ue,False);第20页/共63页KCS_V4(3)u增加一个条件分支,记录HigherAfterEntry和LowerAfterEntry的值。u再次入场的代码: If(bLongTrailingStoped & MarketPosition=0 & High HigherAfterEntry) MyPrice = HigherAfterEntry + MinPoint;If(Open MyPrice) MyPrice = Open;Buy(1,MyPrice);bLongTrailingStoped = False;Return; If(bShortTrailingStoped & M
11、arketPosition=0 & Low LowerAfterEntry) MyPrice = LowerAfterEntry - MinPoint;If(Open =UpperBand) MyPrice = UpperBand;If(Open MyPrice) MyPrice = Open;Buy(1,MyPrice);Return;第30页/共63页RBS_V1(2)If(MarketPosition!=-1 & Low=LowerBand)MyPrice = LowerBand;If(Open =ExitOnCloseMins/100)Sell(1,Open);BuyToCover(1
12、,Open);SetExitOnClose; End第31页/共63页RBS_V1(3)u我们将最初级版本的系统应用于所有品种的指数中(可行性测试,选取了指数的30分钟周期,数据范围为2008.1.1-现在)。除了玉米,小麦等少数价低品种外,绝大部分都是盈利,有些品种还有不错的资金曲线。u证明该系统的有不错的胚子,值得继续深入研究。第32页/共63页RBS_V2(1) 如果前一日涨停或跌停,则会出现范围很小。 两种解决方案: 1、设定一个范围的最小值,假定为当前价格的0.2%。 2、考虑上当前的开盘价,加上跳空的范围。我们选择第一种方法。第33页/共63页RBS_V2(2)Params Num
13、eric 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;
14、 Else DayOpen = DayOpen1; preDayRange = preDayRange1; 第34页/共63页RBS_V3(1) 有可能通道会比较宽,难道非要等到反转才平仓? 考虑增加止损设置,也有2种方案: 1、亏损固定点数。 2、亏损当前价格的百分比。 考虑到商品价格变化的差异,我们采取第二种方式。第35页/共63页RBS_V3(2) 先增加一个变量StopLine,用来保存止损位置。 下面是做多时的止损代码: If(MarketPosition=1) StopLine = AvgEntryPrice-DayOpen*StopLossSet*0.01;If(Low = St
15、opLine)MyPrice = StopLine;If(Open = StopLine)MyPrice = StopLine;If(Open MyPrice) MyPrice = Open;BuyToCover(Lots,MyPrice); 第37页/共63页RBS_V4(1) 突破的时效性,发生在上午和下午意义是不同的。 不同的商品时效属性不尽相同 为此我们增加最后交易时间参数,可供优化测试来确定最佳值。第38页/共63页RBS_V4(2) 增加参数: Numeric LastTradeMins(14.00); 开仓条件处增加一个时间条件。 If(MarketPosition!=1 & H
16、igh=UpperBand & Time LastTradeMins/100) / 多头开仓 If(MarketPosition!=-1 & Low=LowerBand & Time 1) HigherAfterEntry = max(HigherAfterEntry1,High1);LowerAfterEntry = min(LowerAfterEntry1,Low1); 第42页/共63页RBS_V5(4) 跟踪止损的编码可配合前面的止损编码一起控制。 If(HigherAfterEntry=AvgEntryPrice+DayOpen*TrailingStart*0.01) StopLin
17、e = HigherAfterEntry - DayOpen*TrailingStop*0.01; Else / 止损 StopLine = AvgEntryPrice-DayOpen*StopLossSet*0.01; If(Low = StopLine) MyPrice = StopLine;If(Open HigherAfterEntry & Time MyPrice) MyPrice = Open;Buy(1,MyPrice);bLongStoped = False;Return; 第46页/共63页RBS_V6(4) / 做空再次入场代码: If(bShortStoped & Mar
18、ketPosition=0 & Low LowerAfterEntry & Time LastTradeMins/100) MyPrice = LowerAfterEntry - MinPoint;If(Open MyPrice) MyPrice = Open;SellShort(1,MyPrice);bShortStoped = False;Return; 第47页/共63页RBS_V7(1) 增加涨跌停板控制,接近涨跌停板不会开仓。 价格到达涨跌停板马上平仓。第48页/共63页RBS_V7(2)我们新建一个布尔变量bInBoardRange,默认值设置为False。 InBoardRang
19、e = (Open Q_UpperLimit - DayOpen*StopLossSet*0.02);在开仓条件中加入(InBoardRange=false)第49页/共63页RBS_V7(3) 为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码: 做多时: If(Open = Q_UpperLimit) Sell(1,Open); 做空时: If(Open = Q_LowerLimit) BuyToCover(Lots,Open);第50页/共63页RBS_V8(1) 增加失败次数限制,防止单日亏损无限制扩大。 增加二个变量记录失败的次数。NumericSeries LongFailur
20、eCnts;NumericSeries ShortFailureCnts; 增加一个参数设置最大次数。Numeric FailureLimit(2);第51页/共63页RBS_V8(2) 在脚本开始部分增加序列变量值的向后传递处理。 在平仓时增加是否亏损的判断,如果亏损则将计数+1.If(PositionProfit 0 ) LongFailureCnts = LongFailureCnts + 1; 在开仓时增加次数限定。 LongFailureCnts FailureLimit第52页/共63页第三部分编程重点难点问题分析第53页/共63页TB运行机制(1)第54页/共63页TB运行机制(
21、2)u简单概括就是:从左到右,从上到下。u盘后公式的执行情况分析;u盘中公式的执行情况分析;第55页/共63页序列变量(1)u理解了公式的运行机制,对于序列变量的理解就相当容易了。u序列变量是和K线完全对应的一组数据。u通过XXXnOffset进行数据回溯。u通过序列变量可以实现很多复杂的算法:从简单的求和,求平均,求累计值,到稍复杂的求最大值,最小值,到更复杂的求相关系数,之字转向等。第56页/共63页序列变量(2)u我们以求日内最高价举例简述一下序列变量的用法。uVarsu NumericSeries todayHigh;uBeginu If(Date!=Date1)u u todayHigh = High;u elseu u todayHigh = max(todayhigh1,high);u u PlotNumeric(“todayHigh”, todayHigh);uEnd第57页/共63页全局变量(1)u序列变量在每个Bar都有且只有一个值,和K线的Close一样,在同一个Bar的多次刷新过程中会出现变化。u假设我们有这样一个需求:当Data0和Data1的价差小于-200,即买入1手Data0,卖出1手Data1。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴工学院《化工原理3》2022-2023学年第一学期期末试卷
- 危化品行业安全生产治本攻坚三年行动实施方案
- 2024年员工离职补偿合同(适用于员工离职后的补偿)
- 短视频平台用户运营合作协议
- 2024年专业室内设计服务合同
- 2024年专利许可居间协议
- 2024年过滤净化材料项目立项申请报告模范
- 2024年吐鲁番小型客运从业资格证2024年考试题
- 教育行业自费补习班管理制度
- 2024年快速热处理设备项目规划申请报告模范
- 播音主持艺术毕业晚会策划
- 《线性代数》教案完整版教案整本书全书电子教案
- 塑胶原料烘料温度对照表
- 司法所安置帮教工作流程图
- 贫困户困难补助申请书
- 桥梁养护与加固绪论课件
- 部队战时政治工作-PPT课件
- 平板显示技术:TFT-LCD工艺
- 动火安全作业票填写模板2022年更新
- 外研版九年级英语上册全套ppt课件
- 沟槽开挖支护专项施工方案(46页)
评论
0/150
提交评论