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

Indicadores de Trend - BykovTrend_Sig.mq4





















Nombre del Indicador:
  • BykovTrend_Sig.mq4
Desarrollador:
  • Ramdass
Fundamentado en:
  • IWPR "Porcentaje de Larry William´s".

  • El indicador de Larry Williams conocido por los trader por aparecer como una letra "R%" es un indicador de momento que mide los niveles de SobreCompra y Sobreventa.

  • Su interpretación es muy similar a la del Estocástico con la diferencia que se traza de arriba hacia abajo y que el Oscilador Estocástico tiene un alisado interno.
  • Sus lecturas se dan en los niveles de 80 al 100 % indicando que esta sobre-vendido y de 0 al 20 % indicando que se esta sobrecomprado.
  • Se recomienda antes de hacer operaciones esperar a que el precio cambie de dirección (esto en la versión de gráfico de lineas), cuando el precio gira hacia abajo estamos entrando en VENTA.
  • 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.
















  • En el gráfico mostramos la versión por defecto del indicador William´s que trae el Metatrader. (gráfico de líneas blancas). En esta situación se nota lo expuesto, el indicador oscila en sobre-compra cuando el precio tiene tendencia alcista, por ello el BikovTrend es interesanta ya que muestra los puntos de cambios de tendencia que superan los limites programados.

Referencias tecnológicas:Código Fuente:

  • //+------------------------------------------------------------------+
    //| BykovTrend_Sig.mq4
    //| Ramdass - Conversion only
    //+------------------------------------------------------------------+

    #property indicator_chart_window
    #property indicator_buffers 2
    #property indicator_color1 Magenta
    #property indicator_color2 Aqua

    //---- input parameters
    extern int RISK=3;
    extern int SSP=9;
    extern int CountBars=500;

    //---- buffers
    double val1[];
    double val2[];

    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    string short_name;
    //---- indicator line
    IndicatorBuffers(2);
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,234);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,233);
    SetIndexBuffer(0,val1);
    SetIndexBuffer(1,val2);

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| BykovTrend_Sig |
    //+------------------------------------------------------------------+
    int start()
    {
    SetIndexDrawBegin(0,Bars-CountBars+SSP+1);
    SetIndexDrawBegin(1,Bars-CountBars+SSP+1);
    int i,counted_bars=IndicatorCounted();
    int K;
    bool uptrend,old;
    double wpr;

    K=33-RISK;
    //----
    if(Bars<=SSP+1) return(0); //---- initial zero if(counted_bars<=0;i++) val1[CountBars-i]=0.0; for(i=1;i<=0;i++) val2[CountBars-i]=0.0; } //---- i=CountBars-SSP-1; if(counted_bars>=SSP+1) i=CountBars-counted_bars-1;
    while(i>=0)
    {

    wpr=iWPR(NULL,0,SSP,i);
    val1[i]=0.0; val2[i]=0.0;
    if (wpr<-100+K) uptrend=false; if (wpr>-K) uptrend=true;
    if ((! uptrend==old) && uptrend==true) {val2[i]=Low[i]-5*Point;}
    if ((! uptrend==old) && uptrend==false) {val1[i]=High[i]+5*Point;}
    old=uptrend;

    i--;
    }
    return(0);
    }
    //+------------------------------------------------------------------+


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

martes, 23 de junio de 2009

Indicadores de fortaleza

en desarrollo

Indicadores de canal

En desarrollo

Indicadores de tendencia

En desarrollo

Robots - Formas constructivas

Nota: Este documento está referido al Robot: Cruiser_big_fish

Los ea (Expert Advisor) tambien llamados Robots son programas escritos en el lenguaje MQ4 desarrollado por la empresa "MetaQuotes Software Corp" quien provee la plataforma denominada "Metatrader" para operar en el Mercado (divisas, futuros, etc).

Esta plataforma permite adicionar programas que cumplen ciertas funciones:

a) Los llamados: indicadores (graficos, objetos, texto)
b) Expertos (ejecutan ordendes).
c) Scripts (complementos).
d) etc.

En nuestro caso, nos dedicaremos a ampliar el concepto de los expertos.

Podemos simplificar diciendo que un experto no es mas que un programa que tiene varias secciones y partes (funciones Principales, funciones accesorias, etc).

Secciones:

a) Propias del experto ( definción de variables globales, inicio, cierre, y ejecucion)
b) Diseñadas por el Programador (apertura de posiciones, cierres de posiciones, evaluaciones, etc).

Partes:

Lo que yo llamo partes, en realidad se refiere a un concepto genérico que tiene que ver con el sentido del uso que se le da al robot.

a) Obtención de señal.
b) Operación de la señal.

La Obtención de la señal, y nos referimos a las operaciones de Compra "Buy" o venta "Sell" puede estar implicita en el robot, o puede ser externa, por ejemplo provista por un indicador, o varios de ellos.

La Operación de la señal, es la parte del robot que se encarga de establecer si se abren posiciones, o se cierras las activas, de manejar el capital y establecer el volumen de dinero operado, si hay saldo en cuenta o no, si hay ganancia o no, establecer los stop loss, los Take Profit, etc. Esto, según el sentido y uso con el que se construya el robot.

Por ende, esta parte del sistema, compuesta por funciones es la parte mécanica del programa y existen miles de ejemplos en Internet.

La parte importante, es:

La estrategia, o la generación de la señal.

Si la estrategia es buena el robot lo será
Si el robot se programa en función de un indicador, será tan bueno como lo sea el indicador.

Ahora hay que tener en cuenta que los indicadores, son justamente eso, indicadores, no muestran todos los aspectos del Mercado, solo muestran lo que su programador desee que muestre, por ello, una programar un robot en función de una estrategia es lo indicado, ya que utiliza una combinación de indicadores y reglas de juego.

Ruben
MasterWhite

Robot Cruiser_big_fish

















Cruiser_big_fish v2

Es un automata, un robot que analiza el mercado Forex y toma desiciones de compra o venta, o cierre de posiciones.
Ha sido diseñado para operar en time_frames altos, considerando el 30M como el mas bajo en el cual puede operar.

La v2 (versión 2.0) no tiene optimizaciones por lo tanto da algunas operaciones con pérdida.
La volatilidad o fluctuación del mercado en realidad lo favore y las noticias (fundamentales) no son de importancia para la operatoria del robor a partir de los time.frames de 4H o superiores.

Este "ea" (Expert Adviser) puede ser utilizado las siguientes modalidades:

a) Como generador de señales
b) Como operador Senior, abriendo y cerrando posiciones
c) Como operador Supervisor, cerrando posiciones ante cambios bruscos de mercado.

Explicaciones

a) En este caso lo que hace es Indica puntos de entreda (Sell o Buy ) de equilibrio a partir de los cuales, la operatoria es rentable.

b) en esta situación el robot se encarga de la cuenta, realizando no solo los analisis de mercado, sino las operaciones de apertura y cierre de posiciones.

c) En este caso, el Trader abre las posiciones y el Robot las cierra solo si detecta un cambio de mercado que pone en riesgo la cuenta, o un cambio de tendencia brusca o la aparición de un nuevo punto de equilibrio en contradicción con la operación del trader.

Lo he desarrollado desde cero y no está a la venta.

Se pueden conocer estádisticas del Robot visitando:

nota:

He migrado el desarrollo de este robot en otra casa, un programa supervisor, un ayudante, que esta fuera del METATRADER. Por ende este proyecto esta a la espera de adicionar otras tecnologías.


Ruben
MasterWhite