Author: Raul Canessa Castañeda
Indicators Used
Moving average indicatorMoving average indicator
0 Views
0 Downloads
0 Favorites
HullTrend
ÿþ//+------------------------------------------------------------------+

//|                                                       HullTrend.mq4 |

//|                                           Raul Canessa Castañeda |

//|                                https://www.tecnicasdetrading.com |

//+------------------------------------------------------------------+

#property copyright "Raul Canessa Castañeda"

#property link      "https://www.tecnicasdetrading.com"

#property version   "1.02"

#property strict

#property indicator_chart_window



#property description "Media móvil Hull creada con fines ilustrativos. "

                      "Si tienen interés en automatizar sus estrategias "

                      "o crear un indicador técnico personalizado pueden contactarnos al correo rcanessa@gmail.com. "

                      

                      "Más información en www.tecnicasdetrading.com"

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

#property indicator_buffers 2           //Número de buffers del indicador 4



extern int Periodo_Hull=10;                   //Periodo de la Media Móvil Hull

input ENUM_APPLIED_PRICE  Precio_Aplicado=0;  //Precio aplicado en el calculo

//Aquí el trader puede escoger entre el precio de cierre (0), precio de apertura(1)

//precio máximo (2), precio mínimo (3), precio mediano (4), precio típico (5) y

//precio ponderado (6)

input ENUM_MA_METHOD Metodo_MA=MODE_LWMA;     //Método de cálculo de la Media Móvil

//Para el cálculo de la media móvil Hull se usa la media móvil ponderada, pero en este

//indicador incluimos la posibilidad de usar otras medias móviles, como la SMA, EMA, etc



//Arrays del indicador para los buffers

double WMA_1;         //Primera media móvil ponderada

double WMA_2;         //Segunda media móvil ponderada

double HMA_Bruta[];     //Media móvil Hull sin suavizar

double Hull_0[];       //Declaración de array para valor de la media móvil Hull

double Hull_Up[];      // Media móvil Hull alcista

double Hull_Down[];      // Media móvil Hull bajista



int OnInit()

  {

  //Asignación de Buffers

   IndicatorBuffers(4);  

   SetIndexBuffer(0,Hull_Up);         // Asignación de array a buffer 1

   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2,clrGreen);// Estílo de línea del indicador

   SetIndexBuffer(1,Hull_Down);        // Asignación de array a buffer 2

   SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2,clrRed);// Estílo de línea del indicador

   SetIndexBuffer(2,HMA_Bruta);         // Asignación de array a buffer 

   SetIndexStyle (2,DRAW_NONE,EMPTY,clrNONE);// Estílo de línea del indicador

   SetIndexBuffer(3,Hull_0);        // Asignación de array a buffer 1

   SetIndexStyle (3,DRAW_NONE,EMPTY,clrNONE);// Estílo de línea del indicador

   

   

   ObjectCreate("Label_Tecnicas", OBJ_LABEL, 0, 0, 0);  //Creación de etiqueta de TecnicadeTrading

   ObjectSet("Label_Tecnicas", OBJPROP_CORNER, 0);    // Esquina de referencia

   ObjectSet("Label_Tecnicas", OBJPROP_XDISTANCE, 20);// Coordenada X

   ObjectSet("Label_Tecnicas", OBJPROP_YDISTANCE, 25);// Coordenada Y

   ObjectSetText("Label_Tecnicas","Hull MA - TecnicasDeTrading.com",16,"Arial",Blue);

   return(INIT_SUCCEEDED);

  }



int deinit()

  {

   ObjectDelete("Label_Tecnicas");

   return(0);

  }   

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                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[])

  {

  //Variables de cálculo

   int i;               //Indice de barras

   int cant_barr;       //Conteo de barras

   int j=0;               //Variable de cálculo para la HMA

   int n=0;               //Variable de cálculo

  //Conteo de barras

   cant_barr=IndicatorCounted();  //Número de barras contadas

   i=Bars-cant_barr-1;        //Indice para el conteo de barras

   if(i>0)                    //Variables para las fases de cálculo de la HMA

    {

     j=i-Periodo_Hull-round(sqrt(Periodo_Hull))+2;      //Variable para la HMA final

     n=j-1;                                             //Variable para el cálculo de los tramos alcistas y bajistas de la HMA

    }

   if(i==0) 

    {

     j=0;

     n=0;

    } 

  //Cálculo del indicador

   while(i>=0)

    {

     WMA_1=iMA(NULL,0,round(Periodo_Hull/2),0,Metodo_MA,Precio_Aplicado,i);   //Cálculo de la primera WMA

     WMA_2=iMA(NULL,0,Periodo_Hull,0,Metodo_MA,Precio_Aplicado,i);   //Cálculo de la primera WMA

     HMA_Bruta[i]=(2*WMA_1)-WMA_2;                            //Cálculo de la HMA_Bruta

     i--;                                

    }  

   while(j>=0)

    {

     Hull_0[j]=iMAOnArray(HMA_Bruta,0,round(sqrt(Periodo_Hull)),0,MODE_LWMA,j);       //Cálculo del HMA final  

     j--;

    } 

   for( n; n>=0; n--)                          //Cálculo de los segmentos alcistas y bajistas de la media móvil Hull

    {

     if(Hull_0[n]>Hull_0[n+1])

      {

       Hull_Up[n]=Hull_0[n];

       Hull_Up[n+1]=Hull_0[n+1];

       Hull_Down[n]=EMPTY_VALUE;

      }

     if(Hull_0[n]<Hull_0[n+1])

      {

       Hull_Down[n]=Hull_0[n];

       Hull_Down[n+1]=Hull_0[n+1];

       Hull_Up[n]=EMPTY_VALUE;

      }

    }   

   return(rates_total);

  }

//+------------------------------------------------------------------+



Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---