170 likes | 635 Views
DF 登峰程序化交易平台 经典策略模型. ---------------- 深圳登峰科技有限公司. 交易策略形象化. 我有想法和理论,怎么变成 DF 策略呢?. 交易策略. 一个设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特征、投资对象的统计特征以及投资资金的风险特征。 ------------《 系统交易方法 》. R-Breaker. R-Breaker R-breaker 是一个专门使用在股票指数上的交易系统,该系统为日内交易策略,不持仓过夜。 R-Breaker 特点
E N D
DF登峰程序化交易平台经典策略模型 ----------------深圳登峰科技有限公司
交易策略形象化 我有想法和理论,怎么变成DF策略呢?
交易策略 一个设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特征、投资对象的统计特征以及投资资金的风险特征。 ------------《系统交易方法》
R-Breaker • R-Breaker R-breaker是一个专门使用在股票指数上的交易系统,该系统为日内交易策略,不持仓过夜。 • R-Breaker特点 结合了趋势和反转两种交易方法,既进行趋势交易也进行反转交易。 观察区
R-Breaker交易原理 R-Breaker交易系统的基本原理: • 当日内最高价超过观察卖出价(Ssetup)后,盘中价格出现回落,且进一步跌破反转卖出价(Senter)构成的支撑线时,采取反转策略,即在该点位(反手、开仓)做空; • 当日内最低价低于观察买入价(Bsetup)后,盘中价格出现反弹,且进一当日内最低价低于观察买入价(Benter)后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位(反手、开仓)做多; • 在空仓的情况下,如果盘中价格超过突破买入价(Bbreak),则采取趋势策略,即在该点位开仓做多;在空仓的情况下,如果盘中价格跌破突破卖出价(Sbreak),则采取趋势策略,即在该点位开仓做空。 • 设定止损条件。当亏损达到设定值后,平仓。 • 设定过滤条件。当前一个交易日波幅过小,该交易日不进行交易。 • 在每日收盘前,对所持合约进行平仓。
DF策略编写---R-Breaker Params Number notbef(90000), notaft(145500),f1(0.35), f2(0.07), f3(0.25); Numberreverse0(1.00), rangemin(0.2), xdiv(3), lots(10), ATRLength(20),TrailStop(3); Vars ArraySeries ssetup(0), bsetup(0),senter(0),benter(0),bbreak(0),sbreak(0),ltoday(0),hitoday(9999); ArraySeriesstartnow(0),div(0), rfilter(0),ATRValue(0),HiAfterEntry,LoAfterEntry; ArraySeriesATRValue(0),HiAfterEntry,LoAfterEntry; Array i_reverse, i_rangemin, StopLine; Bool B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20; Begin ssetup=HIGHD(1)+f1*(CLOSED(1)-LOWD(1)); //昨日最高+0.35*(昨天收盘-昨天最低) senter=((1+f2)/2)*(HIGHD(1)+CLOSED(1))-(f2)*LOWD(1); //((1+0.07)/2*(昨最高+昨最低)-0.07*昨天最低 benter=((1+f2)/2)*(LOWD(1)+CLOSED(1))-(f2)*HIGHD(1); //((1+0.07)/2*(昨最高+昨最低)-0.07*昨天最高 bsetup=LOWD(1)-f1*(HIGHD(1)-LOWD(1)); //昨最低-0.35*(昨最高-昨收盘) bbreak=ssetup+f3*(ssetup-bsetup); //(ssetup+0.25*(ssetup-bsetup); sbreak=bsetup-f3*(ssetup-bsetup); //bsetup-0.25*(ssetup-bsetup)
DF策略编写---R-Breaker //当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位(反手、开仓)做空; hitoday=HIGHD(0); ltoday=LOWD(0); B2=hitoday>ssetup; IF(B2) { B3=CROSS(senter,CLOSE) AND B0 AND rfilter AND MARKETPOSITION==1; IF(B3) { SELLSHORT(lots,CLOSE); } } //当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位(反手、开仓)做多; B4= ltoday<bsetup; IF(B4) { B5=CROSS(CLOSE,benter) AND B0 AND rfilter AND MARKETPOSITION==-1; IF(B5) { BUY(lots,CLOSE); } }
DF策略编写---R-Breaker //在空仓的情况下,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多; B6=MARKETPOSITION==0 AND CROSS(CLOSE,bbreak) AND B0 AND rfilter; IF(B6) { BUY(lots,CLOSE); } //在空仓的情况下,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空。 B7=MARKETPOSITION==0 AND CROSS(sbreak,CLOSE) AND B0 AND rfilter; IF(B7) { SELLSHORT(lots,CLOSE); }
DF策略编写---R-Breaker ATRValue = ma(MAX(ref(close,1),h)-min(ref(close,1),l),ATRLength); B11 = BarssinceEntry > 0 and MarketPosition == 1; B12 = BarsSinceEntry > 0 and MarketPosition == -1; IF(B11) { StopLine = REF(HiAfterEntry,1) - TrailStop *REF(ATRValue,1); B13 = Low <= StopLine; IF(B13) { Sell(0, Min(Open, Stopline)); } } ELSE IF(B12) { StopLine = REF(LoAfterEntry,1) + TrailStop * REF(ATRValue,1); B14 = High >= StopLine; If(B14) { BuyToCover(0, Max(Open,Stopline)); } } //设定止损条件。当亏损达到设定值后,平仓。 B15 = MarketPosition == 1 and BarsSinceEntry == 0; IF(B15) { HiAfterEntry = High; } B16 = MarketPosition == 1 and BarsSinceEntry >= 1; If (B16) { HiAfterEntry = Max(HiAfterEntry,High); } B17 = MarketPosition == -1 and BarsSinceEntry == 0; If (B17) { LoAfterEntry = Low; } B18 = MarketPosition == -1 and BarsSinceEntry >= 1; If (B18) { LoAfterEntry = Min(LoAfterEntry,Low); }
DF策略编写---R-Breaker //指定日内交易 B8=TIME>145500 AND TIME <150000; IF(B8) { B9=MARKETPOSITION==1; IF(B9) { SELL(0,CLOSE); } B10=MARKETPOSITION==-1; IF(B10) { BUYTOCOVER(0,CLOSE); } } End 完 指定日内交易的部分
Dual-Thrust • Dual-Thrust Dual-Thrust是较为常见的日内交易策略之一,以今日开盘价加减一定比例的昨日振幅,确定上下轨。日内突破上轨时平空做多,突破下轨时平多做空。 • Dual-Thrust特点 Dual Thrust在Range的设置上,引入前N日的四个价位,使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪;
Dual-Thrust交易原理 • Dual-Thrus交易系统的基本原理: • 当日内最高价高于价格上轨后,在该点位开仓做多; • 当日内最低价低于价格下轨后,在该点位开仓做空; • 在持仓的情况下,如果盘中价格突破价格上下轨,则在该点位反手开仓。
DF策略编写--- Dual-Thrust PARAMS NUMBER k1(0.5); NUMBER k2(0.5); NUMBER Mday(1); NUMBER Nday(1); NUMBER lots(1); VARS ARRAY buyrange(0),sellrange(0),buytrig(0),selltrig(0),HH,LL,HC,LC,buypoint,sellpoint; BOOL B1,B2,B3,B4,B5,B6,B7; BEGIN HH=HHV(HIGHD(1),Mday); //M日high的最高价 HC=HHV(CLOSED(1),Mday); //M日close的最高价 LL=LLV(LOWD(1),Mday); //M日low的最低价 LC=LLV(CLOSED(1),Mday); //M日close的最低价 sellrange=max(HH-LC,HC-LL); //计算空头触发区间
DF策略编写--- Dual-Thrust HH=HHV(HIGHD(1),Nday); //N日high的最高价 HC=HHV(CLOSED(1),Nday); //N日close的最高价 LL=LLV(LOWD(1),Nday); //N日low的最低价 LC=LLV(CLOSED(1),Nday); //N日close的最低价 buyrange = max(HH-LC,HC-LL); //计算多头触发区间 buytrig=k1*buyrange; selltrig=k2*sellrange; //计算买入卖出触发条件 buypoint=OPEND(0)+buytrig; sellpoint=OPEND(0)-selltrig; //计算买入卖出价格 OUTPUT("buypoint",buypoint); OUTPUT("sellpoint",sellpoint); //输出买入卖出价格线 当K1<K2时,多头相对容易被触发,当K1>K2时,空头相对容易被触发。 因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数。 另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。
DF策略编写--- Dual-Thrust B1=HIGH>=buypoint; B2=LOW<=sellpoint; //空仓状态下,日内价格突破价格区间,开仓 B3=MARKETPOSITION==0 AND B1; IF(B3) { BUY(lots,MAX(open,buypoint)); } B4 = MARKETPOSITION==0 AND B2; IF(B4) { SELLSHORT(lots,Min(open,sellpoint)); } //持仓状态下,日内价格突破价格区间,反手开仓 B4=MARKETPOSITION==-1 AND B1; IF(B4) { BUY(lots,Max(open,buypoint)); | } B5=MARKETPOSITION==1 AND B2; IF(B5) { { SELLSHORT(lots,Min(open,sellpoint)); } END
策略优化从哪些方面着手? • 有完善的进出场规则 • 添加止盈止损条件 • 改成日内交易系统 • 通过DF参数优化,调试交易策略 • 配合DF风控系统运行策略
Thank you! 深圳登峰科技有限公司