精华内容
下载资源
问答
  • MT4平台指标模版-神龙通道至尊版操作要点: 1)顺势操盘,多头趋势只做多不做空,空头趋势只做空不做多。震荡趋势多空双向操作。 2)顶底定位。顶卖底买。多头趋势波段的底部做多顶部平仓减仓,空头趋势波段顶部做...
  • EA策略:BOLL通道区间取BAR的指标

    千次阅读 2016-12-08 17:55:23
    //+------------------------------------------------------------------+ //| IND_20140926_布尔通道突破指标.mq4 | //| Copyright 2014, MetaQuotes Soft
    //+------------------------------------------------------------------+
    //|                                        IND_20140926_布尔通道突破指标.mq4 |
    //|                        Copyright 2014, MetaQuotes Software Corp. |
    //|                                              http://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, MetaQuotes Software Corp."
    #property link      "http://www.mql5.com"
    #property version   "1.00"
    #property strict
    #property indicator_chart_window
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    #property indicator_buffers 9
    #property indicator_color1 Gold
    #property indicator_color2 Gold
    #property indicator_color3 Gold
    #property indicator_color4 Blue
    #property indicator_color5 Red
    #property indicator_color6 Yellow
    #property indicator_color7 Orange
    #property indicator_color8 LimeGreen
    #property indicator_color9 LimeGreen
    //以上定义颜色值
    
    input int band_period=26;//布林线周期
    input double band_devation=2;//布林标准差
    input int band_price=0;//布林应用价格
    input int arrow_type1=225;//箭头样式,33-255可用
    input int arrow_type2=226;//箭头样式,33-255可用
    input int arrow_type3=225;//箭头样式,33-255可用
    input int arrow_type4=226;//箭头样式,33-255可用
    
    input string time_start="00:00";//限制时间开始(格式xx:xx)
    input string time_end="23:59";//限制时间结束
    input int m_period=4;//时间限制在图表周期4h以上无效
    input int shift_1=3;//1分钟周期3根k线内不重复警告
    
    
    input double N=2;//超过平均波幅N倍则提醒
    double band_upper[];//上轨
    double band_main[];//中轨
    double band_lower[];//下轨
    double UpMidBuffer[];//中上轨
    double DownMidBuffer[];//中下轨
    double arrow_buffer1[];
    double arrow_buffer2[];
    double arrow_buffer3[];
    double arrow_buffer4[];
    int time_shift,time_shift1;//起始时间
    double upper_total=0,lower_total=0;//上轨总数,下轨总数
    int upper_number=0,lower_number=0;//上轨编号,下轨编号
    
    int OnInit()
      {
    //--- indicator buffers mapping
       IndicatorBuffers(9);
       
       SetIndexStyle(0,DRAW_LINE);
       SetIndexBuffer(0,band_upper);
       
       SetIndexStyle(1,DRAW_LINE);
       SetIndexBuffer(1,band_main);
       
       SetIndexStyle(2,DRAW_LINE);
       SetIndexBuffer(2,band_lower);
       
       SetIndexStyle(3,DRAW_ARROW);
       SetIndexArrow(3,arrow_type1);
       SetIndexBuffer(3,arrow_buffer1);
       
       SetIndexStyle(4,DRAW_ARROW);
       SetIndexArrow(4,arrow_type2);
       SetIndexBuffer(4,arrow_buffer2);
       
       SetIndexStyle(5,DRAW_ARROW);
       SetIndexArrow(5,arrow_type3);
       SetIndexBuffer(5,arrow_buffer3);
       
       SetIndexStyle(6,DRAW_ARROW);
       SetIndexArrow(6,arrow_type4);
       SetIndexBuffer(6,arrow_buffer4);
       
       SetIndexStyle(7,DRAW_LINE);
       SetIndexBuffer(7,UpMidBuffer);
       
       SetIndexStyle(8,DRAW_LINE);
       SetIndexBuffer(8,DownMidBuffer);
    
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int OnCalculate(const int rates_total,//所有bar
                    const int prev_calculated,//过去已经计算过的
                    const datetime &time[],
                    const double &open[],
                    const double &high[],
                    const double &low[],
                    const double &close[],
                    const long &tick_volume[],
                    const long &volume[],
                    const int &spread[])
    //开始计算
      {
       int i,limit;
       limit=rates_total-prev_calculated;//得到未计算的bar
       if(prev_calculated>0)limit++;
    //---
    
       for(i=limit-1;i>=0;i--)
         {
          band_upper[i]=iBands(NULL,0,band_period,band_devation,0,band_price,MODE_UPPER,i);
          band_main[i]=iBands(NULL,0,band_period,band_devation,0,band_price,MODE_MAIN,i);
          band_lower[i]=iBands(NULL,0,band_period,band_devation,0,band_price,MODE_LOWER,i);
          UpMidBuffer[i]= band_main[i]+(band_upper[i]-band_main[i])/2;
          DownMidBuffer[i]= band_main[i]-(band_main[i]-band_lower[i])/2;
         } 
    //以上画出:布林通道上,中上,中,中下,下轨共5条线
           
       for(i=limit-1;i>0;i--)
         {
          bool open_arrow0=effect_on(i);//限制图表的周期不能在某周期以上
    
          if(open_arrow0 && High[i]>band_upper[i])
            {
             if(upper_number!=0)
               {
                double upper_current=High[i]-Low[i];
                double upper_prev=NormalizeDouble(upper_total/upper_number,Digits);
                if(upper_current>N*upper_prev)
                  {
                   arrow_buffer3[i]=High[i]+3*Point;
                  }
                arrow_buffer1[i]=Low[i]-3*Point;
               }
             upper_total=High[i]-Low[i]+upper_total;
             upper_number++;
                      
            }
          if(open_arrow0 && Low[i]<band_lower[i])
            {
             if(lower_number!=0)
               {
                double lower_current=High[i]-Low[i];
                double lower_prev=NormalizeDouble(lower_total/lower_number,Digits);
                if(lower_current>N*lower_prev)
                  {
                   arrow_buffer4[i]=Low[i]-3*Point;
                  }
                arrow_buffer2[i]=High[i]+3*Point;
               }
             
             lower_total=High[i]-Low[i]+lower_total;
             lower_number++;
            }
       }
    
       bool open_arrow1=effect_on(0);
       
       if(open_arrow1 && High[0]>band_upper[0])
         {
          double upper_current=High[0]-Low[0];
          double upper_prev=NormalizeDouble(upper_total/upper_number,Digits);
          arrow_buffer1[i]=Low[0]-3*Point;
          if( time_shift<int(Time[0]) && Period()!=1)
            {
             time_shift=int(Time[0]);         
            }
          if( time_shift+shift_1*60<int(Time[0]) && Period()==1)
            {
             time_shift=int(Time[0]);         
            }      
          if(upper_current>N*upper_prev)
            {
             arrow_buffer3[i]=High[0]+3*Point;
             if( time_shift1<int(Time[0]))
               {
                time_shift1=int(Time[0]);         
               }
            }
         }
       if(open_arrow1 && Low[0]<band_lower[0] )
         {
          double lower_current=High[0]-Low[0];
          double lower_prev=NormalizeDouble(lower_total/lower_number,Digits);
          arrow_buffer2[i]=High[0]+3*Point;
          if(time_shift<int(Time[0]) && Period()!=1)
            {
             time_shift=int(Time[0]);         
            }
          if( time_shift+shift_1*60<int(Time[0]) && Period()==1)
            {
             time_shift=int(Time[0]);         
            } 
          if(lower_current>N*lower_prev)
            {
             arrow_buffer4[i]=Low[0]-3*Point;
             if( time_shift1<int(Time[0]))
               {
                time_shift1=int(Time[0]);         
               }
            }
         }
    //--- return value of prev_calculated for next call
       return(rates_total);
      }
    //+------------------------------------------------------------------+
    
    bool effect_on(int shift)
      {
       bool ret=false;
       if(Period()>=m_period*60)
         {
          ret=true;
         }
         else
           {
            string time_current=TimeToStr(Time[shift],TIME_MINUTES);
            if(time_start<time_end && (time_current>=time_start && time_current<=time_end))
              {                 
               ret=true;
              }
            if(time_start>time_end && (time_current>=time_start || time_current<=time_end))ret=true;
           }
       return(ret);      
      }

    展开全文
  • DPO——区间震荡指标。国际上,股票默认参数(20,6);期货参数(14,9)。我建议统一修改为(10,5)先回忆下BOLL三步曲,再体会下DPODPO同样有中轴,数值0为中轴,分隔正负。分隔的区间数值并不如CCI等直观。比如CCI的0...

    布林通道BOLL,我已往说得很多。能不能再让它的效用精细点?配上DPO试试。

    DPO——区间震荡指标。国际上,股票默认参数(20,6);期货参数(14,9)。我建议统一修改为(10,5)

    先回忆下BOLL三步曲,再体会下DPO

    DPO同样有中轴,数值0为中轴,分隔正负。分隔的区间数值并不如CCI等直观。比如CCI的0轴分隔正负后,向上有天线+100,向下有地线-100,再机上我自创的正负75、120、150、180、220、250,我们几乎可以看到一个阶梯式的发展。

    DPO没有固定值。你只能自己去找。怎么找,每个股都不一样,我让它傻瓜化:如果你观测的股,此波行情是以上涨为主,那么,你去找行情启动前的DPO数值。比如上图,友谊股份,上涨起点DPO为负的1.21,那你就去找正的1.21在哪里。这样你得到-1.21~0~+1.21,就形成了一个震荡区间。

    你的股既然在-1.21可以反弹,就可以假设在+1.21见顶。只有超过+1.21,才有新的变化。那如果超过+1.21抵达+2.28才终于出现大跌,此时,你由研究上涨转为研究下跌走势,又怎么定数值?那就由+2.28作为起点,向下找-2.28为假设止跌位,区间写为+2.28~0~-2.28。当然,不是说+2.28一定会落到-2.28,你只是求一个假设区间而已。中间依然可以参考的是,原来被突破的+1.21、中轴的0、甚至是以往长期支持这个股DPO的其他数值。

    上图,我们可以清楚看到,+2.28回落后,DPO落到+1.21就得到了一次支撑。后来破了+1.21也没有直接完蛋,因为DPO跌倒历史上的压力位,也就是现在突破后的支撑位,又导致了股价的一次反击。比如上周五这波。

    然而,我们不能光靠DPO的回落和突破来判断行情的前景。我们首先要看筹码的变化,主力还在不在。然后再看BOLL通道处于什么状态。最后,再看DPO在这个背景下,做的金叉,做的死叉,应该如何定位。

    比如,如果是强势中的死叉,我们只当成是阶段性回档,或强势回档。如果你是短线操作者,可以以此作为短线减持的信号,如果是中长线者,你就可以忽略。这样,你就告别了光拿指标死叉金叉,或碰上轨碰下轨来指导操作的弱智生涯。

    比如上图,不是每次股价触碰到BOLL上轨,DPO死叉,行情就一定完蛋的。你得区别清楚是什么阶段。如果筹码问题不大,但BOLL碰上轨,而DPO死叉,你可以怕,但切记,这可能只是上涨阶段的小调整而已。

    以上内容,基本给你们侧面回顾了BOLL通道一些变化,比如三步走,比如上下轨的压力和支撑作用。也同时介绍了DPO的单一判断区间的用法,和结合筹码、BOLL定位阶段的方法。今天周六,我在值班,写下该文,难免有些粗糙,但你们先细细体会原理,以后,我再发文或语音教学时,再做巩固。

    展开全文
  • 指标找出期望周期内的最小值和最大值, 并在这些边界内绘制斐波那契区间
  • 投资者进入股市使用的技术分析指标有很多,比如说是macd指标、rsi指标、kdj指标等都是可以判断股票的买卖点的分析指标,但是为什么股价处于KDJ指标中的超卖区间时不能进行卖出操作?第一、KDJ指标超卖指的是当市场上...

    投资者进入股市使用的技术分析指标有很多,比如说是macd指标、rsi指标、kdj指标等都是可以判断股票的买卖点的分析指标,但是为什么股价处于KDJ指标中的超卖区间时不能进行卖出操作?

    第一、KDJ指标超卖指的是当市场上投资者卖出股票的时候,卖方力量逐渐的增强,当股价进入超过卖方实力的区域后,股价将会转入上涨的趋势;

    第二、在kdj超卖区间如何狙击起涨点

    (1)当Kdj中的K线的数值小于10的时候,就说明指标线K已经进入超卖区间;当指标线D数值小于20的时候,意味着指标线D也进入超卖区间;

    (2)当指标线J的数值连续几个交易日为0的时候,说明短期底部将要到来,投资者需要仔细的观察,寻找买入信号;

    (3)当kdj进入超卖区间的时候,应该将注意力集中在指标线K值上,一旦指标线K发出超卖信号的时候,投资者就可以积极的买入;

    (4)Kdj进入超卖区间之后,如果股价出现上涨行情,KDJ指标同步上行并出现黄金交叉,就是一个非常好的买入点;

    【实盘案例】

    如图江特电机在2011年12月底到2012年1月初期间的走势出现了kdj超卖的形态,可以看出在2011年12月经历了一波下跌的走势,股价在不断的创出新低,KDJ中的指标线也都进入了底部的区域。

    观察该股在2012年1月5日的走势变化,可以看出该股收出一根大阴线,将股价带到了一个非常低的位置,指标线K、D同时发出了超卖的信号,说明股价在短期内将出现上涨的走势,投资者应该密切的关注该股的后续走势,一旦结束下跌就可以买入该股。

    继续分析该股在1月7日的走势变化,看出指标线中的K、D形成了低位黄金交叉的形态,验证了股价后期将要开始上涨的走势,投资者也可以在当日买入股票。而且结合赢家江恩软件中的极反通道进行分析,可以看出该股在股价低位形成金叉形态的时候,股价已经站上了极反通道生命线的上方,处于强势区域,预示着上涨的行情走势,这个时候投资者可以进行买入操作,是一个比较稳健的买入点。

    【技术总结】KDJ指标进入超卖区域只能说明股价已经接近底部,而且投资者不能将KDJ超卖当成买入信号,只有等待股价出现回升,并出现其他技术指标发出准确的买入信号时,投资者才可以买入。

    展开全文
  • 多个同类指标同向判断以精确分析,提高胜率 寻找多个趋势指标:布林通道(BOLL)、唐奇安通道、均线动态突破系统就是基于自适应的布林通道与自适应的唐奇安通道的突破系统 唐奇安通道:是美国期货市场传奇人物...

    发明者量化平台的My语言是一种函数高度集成且功能强大的量化编程语言,专为量化初学者量身定做,虽然它受众多初学者的欢迎,在功能上却一点不比别的编程语言逊色。在深度定制某些复杂策略方面,由于已经定制好的函数库十分强大,加上发明者量化平台本身对于各大交易所的API接口的出色支持,使你不仅在时间上节省很多写代码的时间,可以把精力主要放在策略逻辑的设计上,而且超低的费用(每天低至3元人民币的价格),让你无后顾之忧。

    My语言不止适用于国内商品期货,对于数字货币相关交易也是无功能差别的同样支持。

    本文将介绍几种常见指标的编写以及几个跨指标模型的案例分析。

    几个常用的指标分类与编写

    传统经典的K线形态包括:三足乌鸦,十字星,穿头破脚,一柱擎天,仙人指路,金针探底等等

    指标方面,其中趋势类指标又分为:MA(均线组合),BOLL,PUBU(瀑布线),SAR(止损点)等等

    摆动类指标:ATR(真实波幅)、KDJ(随机指标)、MACD、WR(威廉指标)等等

    量仓分析指标 CJL(成交量)、DUALVOL(多空量比)、OBV(量能潮)

    接下来,让我们用My语言在发明者量化平台上逐个实现以上这些经典形态和指标,实现的目的不是为了让读者直接用这些指标(当然,在某些条件下直接使用可能也没有问题),而是让读者可以基于这些指标进行审时度势,根据行情和自己自身的资金管理状况来对这些经典进行改良。正所谓兵无常势,以万变应万变才是金融市场的生存法则。

    大阳线:开盘价即为最低价,收盘价即为最高价,K线涨幅大于4%

    AA:=OPEN=LOW;

    BB:=CLOSE=HIGH;

    CC :=CLOSE/OPEN>1.04;

    这里的逻辑综合判断条件为:AA&&BB&&CC

    穿头破脚:两根K线组成,表示行情将要转向,当前K线的开收至少有4%的差值,如果是向上穿头破脚的类型,那么该K线应该收阳,同时当前K线的最高价和最低价要包住前一根K线。

    A1:=REF(CLOSE,1);

    A2:=REF(OPEN,1);

    BB:C/O>1.04;

    B1:=OPEN

    B2:=CLOSE>A2;

    这里的逻辑判断条件为:BB&&B1&&B2

    趋势类指标

    均线交叉:5日均线向上穿过10日均线(金叉);5日均线向下穿过10日均线(死叉)

    MA5:=MA(CLOSE,5);

    MA10:=MA(CLOSE,10);

    金叉 CROSSUP(MA5,MA10);

    死叉 CROSSDOWN(MA5,MA10);

    这里大家可以看到,My语言的功能函数高度集成,一个判断均线交叉的函数,用户需要做的只是调用就行了,不必从新再从底层逻辑去构建逐个函数,且对于以后的调参也更加方便

    同样的,对于三条均线的策略逻辑,假设5日均线、10日均线、30日均线多头排列,且持续3天,我们可以这样写:

    MA5:=MA(CLOSE,5);

    MA10:=MA(CLOSE,10);

    MA30:=MA(CLOSE,30);

    CC:=MA5>MA30 AND MA10>MA30;

    BOLL通道: BOLL由下轨(BOTTOM)、上轨(TOP)、中线(MID)三者组成通道。通道变宽并向上时,价格在上轨之上,多头趋势来临。反之空头趋势来临。

    用My语言的代码表示可以这样写:

    MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨

    TMP2:=STD(CLOSE,26);//求M个周期内的收盘价的标准差

    TOP:MID+2*TMP2;//布林通道上轨

    BOTTOM:MID-2*TMP2;//布林通道下轨

    AA:=TOP>REF(TOP,1)&&BOTTOMREF(MID,1);

    BB:=C>TOP;

    这其中多头趋势的判断条件为:AA&&BB

    SAR(止损点)指标:SAR向上穿过0,多头趋势;SAR向下穿过0,空头趋势。

    首先我们在发明者量化策略代码编写界面下面的参数栏和回测页面的麦语言交易类库中定义以下参数:

    a01b11a5add63d7a556177e7f07ae6e4.png

    bc63ae0be62920d4d5cf97e6711f9caa.png

    N 1 100 4

    STEP 1 20 2

    MVALUE 1 10 2

    STEP1:=STEP/100;

    MVALUE1:=MVALUE/10;

    SARLINE:SAR(N,STEP1,MVALUE1),CIRCLEDOT;

    //N个周期的抛物转向,步长为STEP1,极限值为MVALUE1.

    CROSS(SARLINE,0),BPK;//抛物转向值上穿0,做多。

    CROSS(0,SARLINE),SPK;//抛物转向值下穿0,作空。

    AUTOFILTER;

    摆动类指标

    有过一定交易经验的人都知道,无论什么市场,其实百分之80的时间价格都是震荡状态,价格以趋势的方式运行只有很少的百分之20的时间。

    因此,摆动类指标比趋势类指标更重要且对于交易的结果也影响更大,且在大部分震荡行情中,趋势类指标基本全部失效。而摆动指标却能跟随价格的波动而变化,摆动指标也可以称作随机指标。

    摆动类指标特点:摆动指标值的变化有一个中间值,可将水平区域分为上半部和下半部,一般是反应价格变化的敏感程度的。

    判断趋势来临用趋势类指标,判断趋势尾声用摆动类指标是一个不错的选择。

    KDJ随机指标由K、D、J三条线组成,指标线介于0~100之间变化,J线低于20,进入超卖区,J线高于80,进入超买区。如果K线上穿D线可以做多,如果K线下穿D线可以做空。

    RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;

    //收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。

    K:SMA(RSV,M1,1);//RSV的移动平均值

    D:SMA(K,M2,1);//K的移动平均值

    J:3*K-2*D;

    BACKGROUNDSTYLE(1);

    CROSS(K,D),BPK;//KD金叉,做多。

    CROSS(J,20),BP;//J值上穿20

    CROSS(D,K),SPK;//KD死叉,做空。

    CROSS(80,J),SP;// J值下穿80

    AUTOFILTER;

    MACD指数平滑异同平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA)减去慢的指数移动平均线,MACD的意义和双移动平均线基本相同,当MACD从负数转向正数,是做多信号。当MACD从正数转向负数,是做空信号。

    DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);

    //短周期与长周期的收盘价的指数平滑移动平均值做差。

    DEA:EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均

    2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

    CROSS(DIFF,DEA),BPK;//DIFF上穿DEA,做多。

    CROSS(DEA,DIFF),SPK;//DIFF下穿DEA,做空。

    AUTOFILTER;

    跨指标模型案例

    我们为什么要跨指标?

    第一个原因:模型中跨指标,是技术面内部要素共振的一种交易思想,将多个不同分类指标交易思想结合在一起进行看盘断势。

    第二个原因:趋势类指标在盘整行情中失效,单独使用摆动类指标无法判断当前行情状态,需要多个指标结合分析。

    常用思路

    趋势判断与精细分析相结合。

    多条件同向判断。

    震荡模型的例子

    潮汐指数

    ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100

    衡量一定周期内价格波动情况:指数连续在一个小的区间内波动说明正处于盘整行情,否则为趋势行情。

    震荡模型交易思路:潮汐指数判断盘整,KDJ摆动指标找入场点和出场点

    这个模型我们可以这样写:

    RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;

    K:SMA(RSV,M1,1);//RSV的移动平均值

    D:SMA(K,M2,1);//K的移动平均值

    J:3*K-2*D;

    CMIVAL:ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100,NODRAW;

    BACKGROUNDSTYLE(1);

    K>D&&EVERY(CMIVAL<20,2),BPK;//盘整行情,KD金叉,做多。

    CROSS(J,10)||CROSS(K,D),BP;// J值上穿10超卖或者KD金叉,平仓

    D>K&&EVERY(CMIVAL<20,2),SPK;//盘整行情,KD死叉,做空。

    CROSS(90,J)||CROSS(D,K),SP;// J值下穿90超买或者KD死叉,平仓

    AUTOFILTER;

    5b98ba9cb8c1331e5a9228d5804b7312.png

    趋势模型的例子

    趋势模型交易思路:EMA判断上涨趋势还是下跌趋势;ADX指数反映趋势的变动程度,趋势强入场,趋势弱观望。

    EMA趋势判断交易系统:

    UPPERMA:EMA(HIGH,30);//计算30根K线最高价的EMA

    LOWERMA:EMA(LOW,30);//计算30根K线最低价的EMA

    CROSSUP(C,UPPERMA),BPK;//收盘价上穿EMA,做多

    CROSSDOWN(C,LOWERMA),SPK;//收盘价下穿EMA,做空

    AUTOFILTER;

    d3c683f4cf27012d550b33eb34d16294.png

    EMA只能判断做多趋势和做空趋势,但是无法判断趋势的强弱,所以EMA在行情盘整中失效,所以我们需要寻找可以体现趋势强弱的指标:ADX指数

    代码如下:

    TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);

    HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差

    LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差

    DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);

    //如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。

    DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);

    //如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。

    PDI:=DMP*100/TR;

    MDI:=DMM*100/TR;

    ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

    ADX向上表示趋势强,ADX向下表示趋势弱。

    1d1f68d1a9ac38764aab3d667a231174.png

    接下来我们把这二者综合起来,就形成了基于ADX及EMA的交易系统

    代码如下:

    TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);

    HD:=HIGH-REF(HIGH,1);

    LD:=REF(LOW,1)-LOW;

    DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);

    DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);

    PDI:=DMP*100/TR;

    MDI:=DMM*100/TR;

    ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

    UPPERMA:=EMA(HIGH,30);

    LOWERMA:=EMA(LOW,30);

    CROSSUP(C,UPPERMA)&&EVERY(ADX>REF(ADX,1),2),BPK;

    //当ADX连续两周期向上且当前价大于30根K线最高价的EMA满足买入条件

    CROSSDOWN(C,LOWERMA)&&EVERY(ADX>REF(ADX,1),2),SPK;

    //当ADX连续两周期向上且当前价下于30根K线最低价的EMA满足卖出条件

    AUTOFILTER;

    多个同类指标同向判断以精确分析,提高胜率

    寻找多个趋势指标:布林通道(BOLL)、唐奇安通道、均线动态突破系统就是基于自适应的布林通道与自适应的唐奇安通道的突破系统

    唐奇安通道:是美国期货市场传奇人物理查德·丹尼斯(Richard Dennis)发明的,是海龟法则的前身。其构成是由一定周期(一般都是20,案例中设置为可以改变的)内的最高价和最低价形成上轨和下轨,当价格冲破上下轨道时,冲破上轨是就是可能的买的信号;反之,冲破下轨时就是可能的卖的信号。

    多指标模型交易思路:

    昨日价格大于布林通道上轨,并且当日周期价格大于唐奇安通道上轨,开多单

    昨日价格小于布林通道下轨,并且当日周期价格小于唐奇安通道下轨,开空单

    持有多单时,价格小于自适应出场均线,平多单

    持有空单时,价格大于自适应出场均线,平空单

    我们可以这样写:

    //当日市场波动

    TODAYVOLATILITY:=STD(CLOSE,30);

    //昨日市场波动

    YESTERDAYVOLATILITY:=REF(TODAYVOLATILITY,1);

    //市场波动的变动率

    DELTAVOLATILITY:(TODAYVOLATILITY-YESTERDAYVOLATILITY)/TODAYVOLATILITY;

    //计算自适应参数

    LOOKBACKDAYS1:=LOOP2(BARPOS=30,20,REF(LOOKBACKDAYS1,1)*(1+DELTAVOLATILITY));

    LOOKBACKDAYS2:=ROUND(LOOKBACKDAYS1,0);

    LOOKBACKDAYS3:=MIN(LOOKBACKDAYS2,60);//60自适应参数的上限

    LOOKBACKDAYS:=MAX(LOOKBACKDAYS3,20);//20自适应参数的下限

    //自适应布林通道中轨

    MIDLINE:=MA(CLOSE,LOOKBACKDAYS);

    BAND:=STD(CLOSE,LOOKBACKDAYS);

    //自适应布林通道上轨

    UPBAND:=MIDLINE+2*BAND;

    //自适应布林通道下轨

    DNBAND:=MIDLINE-2*BAND;

    //自适应唐奇安通道上轨

    BUYPOINT:=HHV(HIGH,LOOKBACKDAYS);

    //自适应唐奇安通道下轨

    SELLPOINT:=LLV(LOW,LOOKBACKDAYS);

    //自适应出场均线

    LIQPOINT:=MIDLINE;

    //昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,开多单

    REF(C,1)>REF(UPBAND,1)&&HIGH>=REF(BUYPOINT,1),BK;

    //持有多单时,昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,平多单

    REF(C,1)

    //持有多单时,价格小于自适应出场均线,平多单

    BARSBK>=1&&LOW<=REF(LIQPOINT,1),SP;

    //持有空单时,昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,平空单

    REF(C,1)>REF(UPBAND,1)&&H>=REF(BUYPOINT,1),BP;

    //昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,开空单

    REF(CLOSE,1)

    //持有空单时,价格大于自适应出场均线,平空单

    BARSSK>=1&&HIGH>=REF(LIQPOINT,1),BP;

    AUTOFILTER;

    在编写过程中,大家要注意的是,在My语言中,“CROSSUP”、“CROSSDOWN”与“>”,“

    以上,就是几种常见的技术指标和他们的结合运用,可以看得出,My语言是一种十分强大的脚本语言,除了友好的初学者学习体验,即使一个量化高手,也可以灵活运用这些指标和语法的组合创造出强大的交易策略,配合发明者量化平台的API接口的出色支持,量化开发者终于可以真正做到把精力都放在策略的研究和编写上,而不用为那些与量化交易毫无相关的交易系统的底层架构上,特别是这些年对于高频交易的限制越来越严格,无论数字货币还是国内商品期货,对于底层的交易系统架构显得越来越与量化交易本身不相干,各位读者还是应该把主要精力放在策略的逻辑设计上和对代码的有效执行上才是每个宽客的光明大道。

    展开全文
  • 压力支撑为指标MT4

    热门讨论 2010-07-04 06:25:11
    我常用的一个指标跟大家分享一下,通常利用起做区间交易,,适用于枢纽点交易法
  • 布林通道与kdj

    2014-08-16 12:09:17
    BOLL指标又叫布林线指标,其英文全称是“Bolinger Bands”,布林线(BOLL)由约翰 布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位...
  • 布林线(BOLL)由约翰-布林先发明,是金融市场常用的技术指标之一,属于价格路径指标。它利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的风险、安全的高低价位,因此也...
  • 鉴于通达信软件和其他国内...BOLL指标又叫布林线指标,其英文全称是“Bolinger Bands”,布林线(BOLL)由约翰布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利...
  • 布林通道最佳参数

    2020-12-20 00:36:48
    B1线为指数(或股价)阻力线,B4线是支撑线,从布林线的宽度可以看出指数或股价的变动区间,股价盘整时,四线收缩,称收口;股价向上或向下突破时,四线打开,称为开口。当股价向上击穿B1阻力线时,卖点出现,向下击穿...
  • 在mt4图表上斐波那契的计算方法通常是以设定的蜡烛区间的高低点为0、100,然后在按照0.236、0.382、0.5、0.618、0.764的比例进行分割,一共就得出了0.0%、23.6%、38.2%、50%、61.8%、0.76.4%、100%七个分割点,每个...
  • 主要是指外资通过香港和沪深通道进来的资金,一般认为北向资金比较聪明,从历史来看,确实比A股大部分投资者聪明得多,不管是长线还是短线都是非常厉害的,主要原因可能是外资在资本市场游泳时间长了,经验要比A股...
  • 技术指标学习

    2020-09-02 18:55:19
    本文为技术指标讲解,不构成投资建议;股票有风险,入市需谨慎! 本文为技术指标讲解,不构成投资建议;股票有风险,入市需谨慎! 本文为技术指标讲解,不构成投资建议;股票有风险,入市需谨慎! import psycopg2 ...
  • 如下图所示: 图 同期预警指标分析(数据为模拟) 智能预警分析可以帮助企业基于异常点的时间序列,进行重合度匹配分析,及时、全面地了解同期预警指标的异常情况,发现指标某一重合区间内的关键指标,辅助分析与...
  • 计算机硬件性能指标参考

    万次阅读 2019-02-22 11:39:19
     内存双通道要求必须插相同颜色的内存,不按照规定插不能正常开启内存双通道功能。  主板上的内存插槽通常有4根,插槽1,也就是最靠近处理器的内存插槽,性能是最佳的,相对于其他插槽大概有3%左右的提升。但是,...
  • 布林通道和均线一样,是很多投资者经常使用的趋势指标,其由上、中、下三条轨道构成,中轨为一条均线,上下分别为均线加减n个标准差,通常上轨也被叫做压力线、下轨成为支撑线。(这里就不对布...
  • (五)、DPO区间震荡线 29 (六)、EMV简易波动指标 29 (七)、MACD平滑异同平均 29 (八)、QACD快速异同平均 29 (九)、TRIX三重指数平均线 29 (十)、UOS终极指标 30 (十一)、VPT量价曲线 30 (十二...
  • 今天给大家介绍下ATR指标,废话不多说,直接上定义和公式,代码在公式后面(如果找不到文档的,可以从第一篇代码里下载)纯理工男一枚,不喜勿喷,只是想编编代码玩玩,以后可能再用CNN、DNN什么的预测一下。...
  • K线技术指标实现详解—筹码分布

    万次阅读 2018-06-26 09:21:31
    K线技术指标实现详解—筹码分布 ...在这幅图中我们可以看到当前股票的大致筹码分布情况:图中红色筹码为获利盘,绿色筹码为亏损盘,最大部分的筹码集中在42.21-44.74价格区间内。此时获利的股民...
  • 当N1和N2参数不同时,上轨和下轨的通道区间则不同,从而突破信号的产生结果也不同。如下所示: 动态参数的设计思想有多种,最常见的是将股价的波动幅度与参数相绑定,从而使得参数可以自适应变化。 比如唐奇安通道...
  • 我们已经介绍了三篇关于量化投资方面绘图的文章和一篇指标类的推导和介绍的文章,大家有兴趣可以了解一下 绘图篇 量化投资常用技能——绘图篇 1:绘制股票收盘价格曲线和ochl烛状图 量化投资常用技能——绘图篇 2...
  • 75.机器人趋势之王.zip

    2020-03-28 22:26:57
    MT4外汇上面神龙通道指标和机器人分析指标,很实用的技术,可以自动画出去趋势线和压力支撑位,标定多空区间,红色之上只做多,绿色之上只做空。
  • 布林线(Boll)指标是通过计算股价的“标准差”,再求股价的“信赖区间”。很多炒股新人不知道怎么设置布林线的参数,13、20、26、30、60、99那个才是最佳?下面详细介绍,一起来学习吧。布林带指标参数设置多少才最佳...
  • Momentum Indicator ...简介:使用ADX指标指标判断盘整、振荡和单边趋势。 公式: 一、先决定股价趋势(Directional Movement,DM)是上涨或下跌: “所谓DM值,今日股价波动幅度大于昨日股价波动幅部分...
  • (2) 这个头部区间的成交量称为顶量,见底回升时的成交量称为底量。(3) 如果底量能大大地超过顶量,则较容易通过顶量造成的压力带。l 市场意义:(1) 庄家一般在股价下跌通道中收集筹码,因此一边打压股价一边进行买入...
  • 在前文中提到了KDJ指标是对超买超卖有一定指示的,一般情况下我们在应用KDJ指标进行一些判断时,也会考虑其对超买超卖作出的判断,而此前的模型中也加入相关的条件来阻止错误方向的信号发出——当J指标超过100时处于...
  • 企业信息化基本指标构成方案(案例)一、 企业信息化指标体系的设计原则 1、 目的性企业信息化指标体系的设计,从“以信息化带动工业化”的战略任务出发,旨在引导企业信息化建立在有效益、务实、统筹规划的基础上。...
  • Keltner Channels 是一种趋势跟踪指标,用于识别通道突破和通道方向的反转。当趋势平坦时,通道还可用于识别超买和超卖水平。 计算 Middle Line: 20-day exponential moving average Upper Channel Line: 20-day ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,245
精华内容 1,298
关键字:

区间通道指标