加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MT4中QQE指标的注释和理解

(2010-10-28 01:08:47)
标签:

杂谈

分类: 圣杯之路

网络上关于QQE指标的说明和解释不多,现将自己的理解整理出来.并将其改写成TB的语言.

 

Qualitative Quantitative Estimation 

 

这个指标是根据平滑RSI(Releative Strength Indicator相对强弱指数)指标计算出来的,关于RSI指标请参考后面的资料。指标在单独窗口显示。

 

首先 QQE 是个震荡指标 仿佛是个KDJ 又好像MACD, QQE的优点在于它可以屏蔽KDJ的钝化,MACD的慢速.需要掌握的是双线交叉向上或向下,还有交叉后的下降上升的角度!此角度越大趋势越明显~。如果两线都平行证明为盘整市)


当快线在参考线之下上穿慢线时建多仓,当快线在参考线之上下穿慢线时建空仓。如果参考支撑/阻力位、轴点等其它指标设定止损位,这就是一套比较完整的交易系统。


指标有几个参数可以设定
        SF(平滑系数)=5(建议不要更动)

        RSI_Period(相对强弱指数的周期) = 14;

        DARFACTOR(DAR因子) = 4.236;

//+------------------------------------------------------------------+
//|   Qualitative Quantitative Estimation Indicator for Metatrader 4 |
//|                                     Copyright ?2006Roman Ignatov |
//|                                   mailto:roman.ignatov@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?200 Roman Ignatov"
#property link      "mailto:roman.ignatov@gmail.com"

#property indicator_separate_window //指标画在付图上

#property indicator_buffers 2       //设定后面要计算的2个曲线,每个线用一个数组表示

#property indicator_color1 Red      //第一条线的颜色为红色
#property indicator_style1 STYLE_SOLID //线为实体的
#property indicator_width1 2           //宽度为2

#property indicator_color2 Yellow    //第二条技术指标线为黄色
#property indicator_style2 STYLE_DOT //线为虚线

 

//Smooth Factor,平滑因子
extern int SF = 5; // original 5   

//相对强弱指数,周期
extern int RSI_Period = 14; // original 14

//DAR factor DAR 因子
extern double DARFACTOR = 4.236; //original 4.236  //通过修改这个参数可以更早的进场(为什么?)


int Wilders_Period;  //wilders 周期, Wilders是发明RSI的人. QQE指标其实就是RSI指标的组合计算和优化
int StartBar;    //起始的K线

 

//定义后面计算或指标的数组

double TrLevelSlow[]; //True range level,真实波动水平
double AtrRsi[]; //相对强弱指数的平均真实波动幅度
double MaAtrRsi[]; //相对强弱指数的平均真实波动幅度的移动平均
double Rsi[];  //相对强弱指数
double RsiMa[]; //相对强弱指数的移动平均

int init() //初始化变量和参数,初始化函数,指标加载的时候计算一次
{
    Wilders_Period = RSI_Period * 2 - 1;   //Wilders周期
    if (Wilders_Period < SF)               //保证计算开始的Bar的点有效
        StartBar = SF;
    else
        StartBar = Wilders_Period;
       
    IndicatorBuffers(6);//指定计算需要的数组数量
    SetIndexBuffer(0, RsiMa); //指定第一个数组对应的名字叫RsiMa
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);//设定指标线的样式,画线,实线,宽度为2
    SetIndexLabel(0, "Value 1");  //设定指标线的名称为"value 1"
    SetIndexDrawBegin(0, StartBar); //设置画线的起始点
    SetIndexStyle(1, DRAW_LINE, STYLE_DOT); //设定指标线1的样式,为画虚线,默认宽度为一
    SetIndexBuffer(1, TrLevelSlow);   //指标线对应的数组
    SetIndexLabel(1, "Value 2");  //设定指标线的名称为"value 2"
    SetIndexDrawBegin(1, StartBar); //设定画指标线的起始的位置
    SetIndexBuffer(2, AtrRsi);      //设定第2个指标线对应的数组
    SetIndexBuffer(3, MaAtrRsi);    //设定第3个指标线对应的数组
    SetIndexBuffer(4, Rsi);         //设定第4个指标线对应的数组
    IndicatorShortName(StringConcatenate("QQE(", SF, ")"));//指标的简称
    return(0);
}


int start()
{
    int counted, i;
    double rsi0, rsi1, dar, tr, dv;
   
    if(Bars <= StartBar) //Bars是当前的Bar数量,序号为从右向左0.....N
        return (0);

    counted = IndicatorCounted(); //返回缓存的数量,也就是已经计算了多少的Bar了
    if(counted < 1) //如果还没有计算过,所有的数组初始值附值为0

        for(i = Bars - StartBar; i < Bars; i++)
        {
            TrLevelSlow[i] = 0.0;
            AtrRsi[i] = 0.0;
            MaAtrRsi[i] = 0.0;
            Rsi[i] = 0.0;
            RsiMa[i] = 0.0;
        }
   

    //计算出需要计算的Bar的数字

    counted = Bars - counted - 1;
       

    //在刚开始还未计算出任何bar的情况下,计算出从左边第一个bar一直到右边第零个bar的值.在已经计算出n个值的情况下,就不在计算了.也就是只计算出新出现Bar位置的参数值
    for (i = counted; i >= 0; i--)
        Rsi[i] = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, i); //求RSI的值

    for (i = counted; i >= 0; i--)
    {
        RsiMa[i] = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i); //计算RSI的移动平均值
        AtrRsi[i] = MathAbs(RsiMa[i + 1] - RsiMa[i]);      //计算出RSI移动平均值的波动幅度
    }

    for (i = counted; i >= 0; i--)
        MaAtrRsi[i] = iMAOnArray(AtrRsi, 0, Wilders_Period, 0, MODE_EMA, i); //在Wilders_Period周期内计算波动幅度的移动平均值

 

    //计算真实波动水平 TrLevelSlow

    //先分析Counted = Bars情况下,其他的依次循环

    i = counted + 1;      
    tr = TrLevelSlow[i];    //先把当前位置的真实波动水平记录到tr中
    rsi1 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i);  //记录当前的Rsi相对强弱指数到rsi1中去
    while (i > 0)
    {
        i--;
        rsi0 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i); //依次计算次第个序列位置上的ris值
        dar = iMAOnArray(MaAtrRsi, 0, Wilders_Period, 0, MODE_EMA, i) * DARFACTOR; //计算次第位置上的dar值,也就是平滑过的AtrRsi的值.

        dv = tr;
        if (rsi0 < tr)  //如果次第位置上的rsi0值小于上一个位置的真实波动水平
        {
            tr = rsi0 + dar;
            if (rsi1 < dv)
                if (tr > dv)
                    tr = dv;
        }
        else if (rsi0 > tr)
        {
            tr = rsi0 - dar;
            if (rsi1 > dv)
                if (tr < dv)
                    tr = dv;
        }
        TrLevelSlow[i] = tr;
        rsi1 = rsi0;
    }
   
    return(0);
}

该指标有两条线,一条为RSI的移动平均线周期比较短,另外一条为MaAtrRsi求移动平均,周期为Wilders_Period,为慢线. 第一条线,反映的是价格运行的相对强弱的指数平均,就是RSI的均线.另外的一条反映的是RSI的振幅的变化情况. 第一条向上反映的是价格走高,向下的话,反映的是价格走低,对整个的K线起到了平滑作用.第二条线反映了RSI的变化情况,对于其蕴涵的意义还需要进一步的了解.

 

注释:

相对强弱指数指标 (RSI)

相对强弱指数技术指标(RSI)是追寻震荡指标的价格,该震荡指标的取值范围在0-100之间。当WILDER在引进这个指数时,他建议使用一个14天的RSI指标。自他提出这个建议以后,人们使用9天和25天的RSI指标也非常的普遍了。

分析RSI指标最为普遍的方法是:我们要寻找这样一个分离的情况,在那点上,证券的价格是创新高的,但RSI指标并未能超过它以前的那个高度。这样的分离暗示着一个迫近的相反趋势。当RSI指标那时开始反转,并且下降到它最近的那个低谷,人们称之为“失败摇摆”,“失败摇摆”被看作为是即将到来的一个相反趋势的确认。

使用RSI指标来做图表分析的方法:

  • 顶部和底部
    RSI指标通常上升到70以上或者是下降到30以下。在构成价格图表之前,该指标一般形成这样的顶部和底部趋势;

  • 图表的形成
    RSI指标一般会形成象头,肩膀和三角形这样的图表图案,这些图形可能在价格图表上是看不到了;

  • 失败摇摆 (支持或抗拒;渗透或爆发)
    在这个时候,RSI指标一般会超过上一个高点(波峰)或下降到下一个低点(低谷);

  • 支持或抗拒水平
    RSI指标在表现支持或抗拒水平的时候比价格本身更为的清楚.

  • 分离
    就上述讨论的一样,当价格水平创出新高(低),但这种新高(低)的趋势并没有被RSI指标所确认的时候,分离的情况就发生了。价格通常会修正并且沿着RSI指标的方向进行移动.


 

计算方法:

 

RSI = 100-(100/(1+U/D))

 

注释:
U — 价格变化正值的平均数
D — 价格变化负值的平均数

0

阅读 收藏 喜欢 打印举报/Report
后一篇:关于投资
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有