首页 MT5正文

超级日内组合策略-金字塔平台

大侠 MT5 2013-09-08 07:34:00 421 0 程序化入门篇

         超级日内组合策略(The Super Combo Day Trading Strategy)

     成功的中日突破战略的核心是,开始不久,就会找到未来上升趋势的近低点和下降趋势的近高点。 最可怕的是在高处购买,在低处卖空。 但是,我们通过观察评价发现,低价买入、高价出售的交易几乎都是突破失败的例子。 那么,有在行情突破时进行突破,在突破失败的情况下,自动切换为处理突破的战略的战略吗?

  战略概要:超市内的组合战略是当前整理战略发布以来最复杂的。 因为简化后还有很多文字,所以不能简单的写出来,直接看看战略的详细情况吧。 我个人认为,如果能够在理解了这个战略的代码之后独立写出来的话,金字塔平台上几乎任意的图形程序都不能打倒你。

超级日内组合策略

  策略详细信息:超市内的组合策略是许多模块处理不同行情的复杂策略,如R-breaker,考虑突破和失败两种情况,但细节更加复杂。 当然,在整齐的情况下,使用金字塔软件来实现战略是比较容易的。

  首先,我们继承了战略依然突破、突破失败的思想,在恒温器战略中引入了买卖市场、出售市场的概念,这三点成为该战略的基础。 战略突破部分:时间处理沿袭Hans123战略思路,30分钟内不进行交易。 其次,为了突破入场点,超市内的组合战略使用了恒温器战略这样的区间突破、采购市、销售市的思想。 首先,经过长期观察和研究,决定是否进行交易,策略开发人员得出结论:一般在短k线后面有长k线,但我们追踪的是长k线。 所以,如果昨天是短k的话,今天就入场。 不然我就不入场了。 k线是否为短k按照以下方法判断。 昨天-比较昨天收到的绝对值和过去10天的平均值。 前者不足后者的85%的话,我们认定为短的k,反之认定为长的k。 接着,最终值在前一天的最终值以下的话确定买入市场,相反的话确定买入市场。 去买东西的城市的很多条件是从现在开始到30%前的10日为止的真正的区间。 开放条件是从现在开始-60%前10天的实际区间。 跑卖市的开多条件是今开60%前10天的实际区间,开空条件是今开-30%前10天的实际区间。 其次,应对突破失败的部分(逆倾向)。 在此系统中,以多种情况为例,将以下三种情况定义为突破失败

  1、市场比昨天的最高价格上升到一定的高度,接着下降到最高价格以下的一定位置。

  2、开盘价格在昨天的最高价格以下,之后超过了那个价格,跌到了那个价格以下的一定位置。

  多头英寸开始了,中午12点之前失败,失败标志着触发器停止。 如果失败不早发生,我们就可以利用这个优势。

  相反,为了突破失败。 然后,我们处理控制部分。 (仍以多头为例)

  1、通常情况下,我们的多头停止点是开仓价格-10天的振幅区间的25%和3个大点( IF中为15个最小变动价格)大。 这里混合保护固定损失和百分比损失的原因是百分比损失很好地适应市场情况,它是自适应参数系统。 与固定损失进行对比的好处是,市场如果是很高的变动性,则在固定损失中交易的一部分损失即市场变动率很低的时候,固定的损失价格比收益和最终的净损失相比,风险会变大。 但是,前一天的变动非常小的话(比如因为前一天的收盘价格上涨了)。 因为百分比系统会生成非常荒谬的值,所以下限设定了3点的条件。 2、突破失败时的逆手入场,我们的损坏点是开仓价格-10天变动区间的15%和3个百分点的大值。 因为那天的市场可能没有方向性。 反复的震动给我们带来很大的损失,一旦损失了,我们就会执行更严格的控制。

  3、当我们赚的利润已经等于10天波动区间的50%时,我们采用保本止损战略,将止损价格调整为开仓价格滑点和手续费。

  4、该时间超过下午14:30天后,停止点设定为比前3分钟和5分钟的线低的高度。 因为我们在交易的最后30-45分钟,发现市场的整天趋势消失了,在极少数情况下大幅度逆转(记住今年的某个PTA,深深地v型逆转,心痛),所以我们不希望利益最后失去,设置这个小损失

  5、一天入场最多,有一对空对。 换句话说,入场两次就停止了。

总结:这个策略只是一个抛砖引玉,它糅合了足够多的思想。大家可以此为例,尝试创造出自己一堆堆的策略咯。

代码部分

//策略:超级日内组合系统

//类型:日内5、走完K线

//版本:1.0

//修订时间:2012.12.24

//DESIGNED BY ROGARZ

//中间变量

INPUT:SS(1,1,100,1),K1(0.3,0.1,1,0.1),K2(0.6,0.1,1,0.1),BOCP(0.25,0,1,0.01),FBOCP(0.25,0,1,0.01);

VARIABLE:开多次数=0,开空次数=0,趋买市=0,趋卖市=0,多头止损价=0,空头止损价=0;

CYC:=BARSLAST(DATE>REF(DATE,1))+1;

昨开:=CALLSTOCK(STKLABEL,VTOPEN,6,-1);

昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);

昨昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-2);//昨天的前一天的收盘价,暂称为昨收

昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);

昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);

今高:=IF(CYC=1,HIGH,REF(HHV(HIGH,CYC),1));

今低:=IF(CYC=1,LOW,REF(LLV(LOW,CYC),1));

今开:=IF(CYC=1,OPEN,REF(OPEN,CYC-1));

10日平均波幅:=ref(MA(CALLSTOCK(STKLABEL,VTHIGH,6,0)-CALLSTOCK(STKLABEL,VTLOW,6,0),10),1);//AVERAGERANGE

10日平均开收盘区间:=ref(MA(ABS(CALLSTOCK(STKLABEL,VTopen,6,0)-CALLSTOCK(STKLABEL,VTclose,6,0)),10),1);//AVERAGEOCRANGE

开关:=ABS(昨开-昨收)<0.85*10日平均开收盘区间;//CANTRADE

3周期最高价:=REF(HHV(HIGH,3),1);

3周期最低价:=REF(LLV(LOW,3),1);

多头突破确认价:=昨高+BOCP*10日平均波幅;//LONGBREAKPT

空头突破确认价:=昨低-BOCP*10日平均波幅;//SHORTBREAKPT

多翻空确认价:=昨低+FBOCP*10日平均波幅;//LONGFBOPOINT

空翻多确认价:=昨高-FBOCP*10日平均波幅;//SHORTFBOPOINT

手数:=SS;

开仓历时:=ENTERBARS+1;

//交易条件

IF 昨收<=昨昨收 THEN BEGIN//昨日收盘价小于等于昨昨收为趋买市(BUYEASIERDAY)

 趋买市:=1;

 趋买市开多价:今开+K1*10日平均波幅;//BUYBOPT

 趋买市开空价:今开-K2*10日平均波幅;//SELLBOPOINT

END

IF 昨收>昨昨收 THEN BEGIN//昨日收盘价大于昨昨收为趋买市(SELLEASIERDAY)

 趋卖市:=1;

 趋卖市开多价:今开+K2*10日平均波幅;//BUYBOPT

 趋卖市开空价:今开-K1*10日平均波幅;//SELLBOPOINT

END

//交易系统

//突破

IF TIME>=094500 AND TIME<143000 AND 开关=1 THEN BEGIN

{趋买市}

 IF 趋买市=1 AND 开多次数=0 THEN BEGIN

   趋买市开多:BUY(C>=趋买市开多价 AND HOLDING=0,手数,MARKET);

     多头止损价:=MIN(ENTERPRICE-0.25*10日平均波幅,ENTERPRICE-3);//这个策略用于股指,多头常规止损价为开仓价减25%的10日平均波幅和3个大点的较小值。

  开多次数:=1;

 END

 

 IF 趋买市=1 AND 开空次数=0 THEN BEGIN

   趋买市开空:BUYSHORT(CLOSE<=趋买市开空价 AND HOLDING=0,手数,MARKET);

     空头止损价:=Max(ENTERPRICE+0.25*10日平均波幅,ENTERPRICE+3);//这个策略用于股指,空头常规止损价为开仓价加25%的10日平均波幅和3个大点的较小值。

   开空次数:=1;

  END

{趋卖市} 

  IF 趋卖市=1 AND 开多次数=0 THEN BEGIN

   趋卖市开多:BUY(CLOSE>趋卖市开多价 AND HOLDING=0,手数,MARKET);

     多头止损价:=MIN(ENTERPRICE-0.25*10日平均波幅,ENTERPRICE-3);

   开多次数:=1;

  END

 

  IF 趋卖市=1 AND 开空次数=0 THEN BEGIN

   趋卖市开空:BUYSHORT(CLOSE<趋卖市开空价 AND HOLDING=0,手数,MARKET);

     空头止损价:=Max(ENTERPRICE+0.25*10日平均波幅,ENTERPRICE+3);

   开空次数:=1;

  END

END

//突破失败

{多头突破失败情况1:价格曾经高于多头突破确认价,最新价又回落至空翻多确认价}

IF 今高>多头突破确认价 AND C<多翻空确认价 AND TIME<143000 AND 开空次数=0 AND HOLDING>=0 THEN BEGIN

 多头止损1:SELL(1,手数,MARKET);

 多翻空1:BUYSHORT(1,手数,MARKET);

 开空次数:=1;

END

 

{多头突破失败情况2:突破入场后,行情反转。止损的同时我们反手开空,但前提是时间在中午11:30之前,且多头进场在至少4根K之前。瞬间止损我们不允许反转,因为这往往是市场的膝跳反射}

IF HOLDING>=0 AND TIME<143000 AND 开空次数=0 THEN BEGIN

 IF C<=多头止损价 THEN BEGIN

  多头止损2:SELL(1,手数,MARKET);

  IF TIME<=110000 AND 开仓历时>=4 THEN BEGIN

   多翻空2:BUYSHORT(1,手数,MARKET);

   空头止损价:=MIN(ENTERPRICE+0.15*10日平均波幅,ENTERPRICE+3);//多翻空止损价为开仓价加15%的10日平均波幅和3个大点的较小值。

   开空次数:=1;

  END

 END

END

{空头突破失败情况1:价格曾经低于空头突破确认价,最新价又上涨至空翻多确认价}

IF 今低<空头突破确认价 AND C>空翻多确认价 AND TIME<143000 AND 开多次数=0 AND HOLDING<=0 THEN BEGIN

 空头止损1:SELLSHORT(1,手数,MARKET);

 空翻多1:BUY(1,手数,MARKET);

 开多次数:=1;

END

{空头突破失败情况2:突破入场后,行情反转。止损的同时我们反手开多,但前提是时间在中午11:30之前,且空头进场在至少4根K之前。瞬间止损我们不允许反转,因为这往往是市场的膝跳反射}

IF HOLDING<0 AND TIME<143000 AND 开多次数=0 THEN BEGIN

 IF C>=空头止损价 THEN BEGIN

  空头止损2:SELLSHORT(1,手数,MARKET);

  IF TIME<=110000 AND 开仓历时>=4 THEN BEGIN

   空翻多2:BUY(1,手数,MARKET);

   多头止损价:=MIN(ENTERPRICE-0.15*10日平均波幅,ENTERPRICE-3);//多翻空止损价为开仓价加15%的10日平均波幅和3个大点的较小值。

   开多次数:=1;

  END

 END

 

END

//止损

IF HOLDING>0 AND C<多头止损价 AND TIME<151000 THEN 常规多头止损:SELL(1,手数,MARKET);

IF HOLDING<0 AND C>空头止损价 AND TIME<151000 THEN 常规空头止损:SELLSHORT(1,手数,MARKET);

//止损价调整

{若持多单,而5分钟K高点超过了开仓价+50日平均波幅,止损调整为保本型 }

IF 今高>ENTERPRICE+0.5*10日平均波幅 THEN 多头止损价:=ENTERPRICE+2*MINDIFF;

IF 今低

{若时间处于14:30以后,多头跟踪止损为过去3个5分钟的最高低点与多空头止损价中的较大值}

IF TIME>=143000 THEN BEGIN

 多头止损价:=MAX(多头止损价,3周期最低价);

 空头止损价:=MIN(空头止损价,3周期最高价);

 END

//日内平仓

IF TIME>=151000 THEN BEGIN

 收盘平多:SELL(1,手数,MARKET);

 收盘平空:SELLSHORT(1,手数,MARKET);

 趋卖市:=0;

 趋买市:=0;

 开多次数:=0;

 开空次数:=0;

 多头止损价:=0;

 空头止损价:=0;

END

相关文章