martes, 30 de junio de 2009

Indicadores de Trend - CCI woodies



















Nombre del Indicador:
  • CCI woodies.mq4
Desarrollador:
  • Gaba
Fundamentado en:
  • CCI "Commodity channel index".

  • El indicador del tipo oscilador desarrollado por "Donald Lambert" y publicado en Octubre de 1980
  • Su interpretación es muy similar a la del Estocástico
  • Sus lecturas se dan por sobre los niveles de 100 indicando que esta sobre-Comprado y de 0 al -100 indicando que se esta sobreVendido, tambien puede ser utilizado para detectar divergencias.
  • El problema de estos indicadores es que quedan indicando sobre-compra o sobre-venta en ocasiones durante un tiempo pudiendo cometer el Trader el grave error de poner una venta, con tendencia alcista, por ello se sugiere acompañar este indicador con un Macd para ver si la dirección se confirma.

Referencias tecnológicas:Código Fuente:

  • // ===============================================================
    // CCI Woodies.mq4
    // ===============================================================
    #property copyright "Copyright © 2005, Gaba"
    #property link "http://www.metaquotes.net"

    #property indicator_separate_window
    #property indicator_buffers 5
    #property indicator_color1 Silver
    #property indicator_color2 LimeGreen
    #property indicator_color3 OrangeRed
    #property indicator_color4 Blue
    #property indicator_color5 Yellow

    #property indicator_minimum -300
    #property indicator_maximum 300

    #property indicator_level1 200
    #property indicator_level2 100
    #property indicator_level3 -100
    #property indicator_level4 -200


    // Variables definibles por el usuario

    extern int fastPeriod = 6;
    extern int slowPeriod = 14;
    extern int histLength = 500;

    // definición de buffers

    double FastBuffer[]; // Áûñòðûé CCI
    double SlowBuffer[]; // Ìåäëåííûé CCI
    double HistBuffer[];
    double UpTrBuffer[];
    double DnTrBuffer[];

    // ===============================================================
    // Inicialización del indicador
    // ===============================================================
    int init()
    {
    string short_name;
    IndicatorBuffers(5);
    IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
    short_name="WoodiesCCI("+fastPeriod+","+slowPeriod+")";
    IndicatorShortName(short_name);
    // Definiciones
    SetIndexStyle(0, DRAW_HISTOGRAM);
    SetIndexBuffer(0, HistBuffer);
    SetIndexDrawBegin(0, slowPeriod);
    SetIndexLabel(0,"SlowCCI histogram");
    SetIndexEmptyValue(0, EMPTY_VALUE);
    // ---
    SetIndexStyle(1, DRAW_HISTOGRAM);
    SetIndexBuffer(1, UpTrBuffer);
    SetIndexDrawBegin(1, slowPeriod);
    SetIndexLabel(1,"UpTrend histogram");
    SetIndexEmptyValue(1, EMPTY_VALUE);
    // ---
    SetIndexStyle(2, DRAW_HISTOGRAM);
    SetIndexBuffer(2, DnTrBuffer);
    SetIndexDrawBegin(2, slowPeriod);
    SetIndexLabel(2,"DnTrend histogram");
    SetIndexEmptyValue(2, EMPTY_VALUE);
    // ---
    SetIndexStyle(3, DRAW_LINE,1,3);
    SetIndexBuffer(3, SlowBuffer);
    SetIndexDrawBegin(3, slowPeriod);
    SetIndexLabel(3,"SlowCCI("+slowPeriod+")");
    SetIndexEmptyValue(3, EMPTY_VALUE);
    // ---
    SetIndexStyle(4, DRAW_LINE);
    SetIndexBuffer(4, FastBuffer);
    SetIndexDrawBegin(4, slowPeriod);
    SetIndexLabel(4,"FastCCI("+fastPeriod+")");
    SetIndexEmptyValue(4, EMPTY_VALUE);
    return(0);
    }


    // ===============================================================
    // Cierrre del indicador
    // ===============================================================
    int deinit()
    {
    return(0);
    }


    // ===============================================================
    // Inicio del indicador
    // ===============================================================
    int start()
    {
    string symbolName;
    int i, shift, checksum, counted_bars=IndicatorCounted();
    double slowCCI=0.0;
    if (Bars // Hay Errores ?
    if (counted_bars<0) return(-1);
    // Recontar barras
    if (counted_bars>0) counted_bars++;
    int limit=Bars-counted_bars;
    if (counted_bars<1 || checksum!=(histLength+fastPeriod+slowPeriod+Period()) || symbolName!=Symbol())
    {
    // Inicialización
    for(i=Bars-1; i<=Bars-histLength; i++)
    {
    FastBuffer[i]=EMPTY_VALUE;
    SlowBuffer[i]=EMPTY_VALUE;
    HistBuffer[i]=EMPTY_VALUE;
    UpTrBuffer[i]=EMPTY_VALUE;
    DnTrBuffer[i]=EMPTY_VALUE;
    }
    checksum = histLength+fastPeriod+slowPeriod+Period();
    symbolName=Symbol();
    limit = histLength;
    }
    for (shift=limit; shift>=0; shift--)
    {
    FastBuffer[shift] = iCCI(NULL,0,fastPeriod,PRICE_TYPICAL,shift);
    SlowBuffer[shift] = iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift);
    HistBuffer[shift] = SlowBuffer[shift];
    UpTrBuffer[shift] = EMPTY_VALUE;
    DnTrBuffer[shift] = EMPTY_VALUE;
    int a, up=0, dn=0;
    for (a=0;a<8;a++)
    {
    slowCCI=iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift+a);
    if (slowCCI>0) up++;
    if (slowCCI<=0) dn++;
    }
    if (up>=6) UpTrBuffer[shift]=SlowBuffer[shift];
    if (dn>=6) DnTrBuffer[shift]=SlowBuffer[shift];
    }
    return(0);
    }

    //--- Fin del programa

Fuentes:

Lectura recomendada:

  • El analisis tecnico de la A a la Z
  • The Technical Analysis from a TO Z.
  • Escrito por Steven B. Achelis, Manuel Cabedo

No hay comentarios:

Publicar un comentario