Esignal - page 5

 

eSignal Harmonic Patterns

Has anyone ever seen any indicators for the Bat, Crab, Butterfly and Gartley patterns for eSignal?

 

Please explain why seeing these patterns on MT4 isn't good enough for you?

 
  //+------------------------------------------------------------------+
  //|                                                        velas.mq4 |
  //|                        Copyright 2022, MetaQuotes Software Corp. |
  //|                                             https://www.mql5.com |
  //+------------------------------------------------------------------+
  #property copyright "Copyright 2022, MetaQuotes Software Corp."
  #property link      "https://www.mql5.com"
  #property version   "1.00"
  #property strict
  #property indicator_chart_window
  #property indicator_buffers 6
  //+------------------------------------------------------------------+
  //|                    SISTEMA DE APAGADO Y ENCENDIDO                |
  //+------------------------------------------------------------------+
  enum APAGAR
  {
   ENCIENDE = 0, //NO
   APAGA = 1  //SI
  };
  //+------------------------------------------------------------------+
  //|                    BUFFERS DE  COLOR DE VELAS Y MECHA            |
  //+------------------------------------------------------------------+
  double BUFFER_DE_MAPA_EXTERNO_1[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  double BUFFER_DE_MAPA_EXTERNO_2[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  double BUFFER_DE_MAPA_EXTERNO_3[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  double BUFFER_DE_MAPA_EXTERNO_4[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  double BUFFER_DE_MAPA_EXTERNO_5[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  double BUFFER_DE_MAPA_EXTERNO_6[];  // DECLARAR QUE ES TIPO DOBLE ES DECIR QUE PODEMOS GUARDAR NUMEROS CON DECIMALES Y LOS CORCHETES SIRVE PARA HACER ARREGLOS
  
  //+------------------------------------------------------------------+
  //|                CONFIGURACIÓN DE  COLOR DE VELAS Y MECHA          |
  //+------------------------------------------------------------------+
  extern string  ____________CONFIGURACIÓN___________________ = "========= CAMBIAR COLOR DE VELAS Y MECHA =================================="; 
  extern APAGAR  APAGAR_MECHA_DE_LA_VELA =ENCIENDE;                      //APAGAR MECHA DE VELA
  extern int     ANCHO_DEL_CUERPO = 3;                                   //ANCHO DEL CUERPO                                                            // extern int    = interno externo
  extern int     ANCHO_DE_LA_MECHA = 1;                                  //ANCHO DE LA MECHA                                                           // extern int    = interno externo
  extern color   COLOR_DEL_CUERPO_DE_LA_VELA_ALCISTA = clrGreen;         //COLOR DEL CUERPO DE LA VELA ALCISTA                                         // extern color  = color externo                                          
  extern color   COLOR_DEL_CUERPO_DE_LA_VELA_BAJISTA = clrRed;           //COLOR DEL CUERPO DE LA VELA BAJISTA                                         // extern color  = color externo
  extern color   COLOR_DE_LA_MECHA_ALCISTA = clrIvory;                   //COLOR DE LA MECHA ALCISTA                                                   // extern color  = color externo
  extern color   COLOR_DE_LA_MECHA_BAJISTA = clrIvory;                   //COLOR DE LA MECHA BAJISTA                                                   // extern color  = color externo
  extern color   COLOR_ALCISTA_O_BAJISTA = clrWhite;                     //COLOR ALCISTA O BAJISTA                                                     // extern color  = color externo
  extern color   FONDO_DE_COLOR_EN_EL_PRIMER_PLANO_DEL_GRAFICO = clrRed; // COLOR DE PRIMER PLANO DEL GRAFICO                                          // extern color  = color externo 
  extern color   FONDO_DE_COLOR_EN_EL_GRAFICO = clrBlack;                // COLOR DE FONDO DEL GRAFICO                                                 // extern color  = color externo 
 
  //+------------------------------------------------------------------+
  //|                   LIMIT ES EL RECORRIDO DE VELAS                 |
  //+------------------------------------------------------------------+
    int                    limit                   ;          // DECLARAR QUE ES TIPO ENTERO 


  //+------------------------------------------------------------------+
  //|     FUNCION DE INICIALIZACION DE UN INDICADOR PERSONALIZADO      |
  //+------------------------------------------------------------------+
  int OnInit()
  {
  
  //+------------------------------------------------------------------+
  //|                COMFIGURACION DEL GRAFICO Y VELAS                 |
  //+------------------------------------------------------------------+
  SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, ANCHO_DE_LA_MECHA, COLOR_DE_LA_MECHA_BAJISTA);           // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(0, BUFFER_DE_MAPA_EXTERNO_1);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (0, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, ANCHO_DE_LA_MECHA, COLOR_DE_LA_MECHA_ALCISTA);           // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(1, BUFFER_DE_MAPA_EXTERNO_2);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (1, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, ANCHO_DEL_CUERPO, COLOR_DEL_CUERPO_DE_LA_VELA_BAJISTA);  // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(2, BUFFER_DE_MAPA_EXTERNO_3);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (2, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, ANCHO_DEL_CUERPO, COLOR_DEL_CUERPO_DE_LA_VELA_ALCISTA);  // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(3, BUFFER_DE_MAPA_EXTERNO_4);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (3, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  SetIndexStyle(4,DRAW_HISTOGRAM, EMPTY, EMPTY);                                                  // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(4, BUFFER_DE_MAPA_EXTERNO_5);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (4, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  SetIndexStyle(5,DRAW_HISTOGRAM, EMPTY, ANCHO_DE_LA_MECHA, COLOR_ALCISTA_O_BAJISTA);             // SetIndexStyle  ( DRAW_HISTOGRAM, EMPTY,);    = Establecer estilo de índice   (DIBUJAR_HISTOGRAMA, VACÍO,);
  SetIndexBuffer(5, BUFFER_DE_MAPA_EXTERNO_6);                                                    // SetIndexBuffer ();                           = Establecer búfer de índice    ();
  SetIndexLabel (5, NULL);                                                                        // SetIndexLabel  ( NULL);                      = Establecer etiqueta de índice (ANULAR);
  IndicatorShortName("CAMBIAR BARRAS Y MECHA");                                                   // IndicatorShortName ();                       = Nombre abreviado del indicador ();
 
  
  //+------------------------------------------------------------------+
  //|                COMFIGURACION DEL GRAFICO Y VELAS                 |
  //+------------------------------------------------------------------+
  ChartSetInteger(0,CHART_MODE,CHART_CANDLES);                                                    // TABLA DE MODO DE GRÁFICO VELAS
  ChartSetInteger(0,CHART_FOREGROUND,APAGAR_MECHA_DE_LA_VELA);                                    // GRÁFICO EN PRIMER PLANO
  ChartSetInteger(0,CHART_SHIFT,TRUE);                                                            // CAMBIO DE GRÁFICO 
  ChartSetInteger(0,CHART_AUTOSCROLL,TRUE);                                                       // GRÁFICO DESPLAZAMIENTO AUTOMÁTICO 
  ChartSetInteger(0,CHART_SCALE,3);                                                               // ESCALA DEL GRÁFICO 
  ChartSetInteger(0,CHART_SCALEFIX,FALSE);                                                        // CORRECCIÓN DE ESCALA DE GRÁFICO
  ChartSetInteger(0,CHART_SCALEFIX_11,FALSE);                                                     // CORRECCIÓN DE ESCALA DE GRÁFICO 
  ChartSetInteger(0,CHART_SHOW_OHLC,FALSE);                                                       // MOSTRAR OHLC EN EL GRAFICO 
  ChartSetInteger(0,CHART_SHOW_BID_LINE,TRUE);                                                    // MOSTRAR LA LINEA DE OFERTA EN EL GRAFICO 
  ChartSetInteger(0,CHART_SHOW_ASK_LINE,false);                                                   // MOSTARA LA LINEA DE ASK EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_LAST_LINE,FALSE);                                                  // MOSTRAR LA ULTIMA LINEA EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_PERIOD_SEP,FALSE);                                                 // MOSTRAR PERIODOS DE SEPARACION EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_GRID,FALSE);                                                       // MOSTRAR CUADRICULA EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_VOLUMES,FALSE);                                                    // MOSTRAR VOLUMEN EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,FALSE);                                               // MOSTRAR EN EL GRAFICO DESCRIPCIÓN DE OBJETOS 
  ChartSetInteger(0,CHART_COLOR_BACKGROUND,FONDO_DE_COLOR_EN_EL_GRAFICO);                         // FONDO DE COLOR EN EL GRAFICO 
  ChartSetInteger(0,CHART_COLOR_FOREGROUND,FONDO_DE_COLOR_EN_EL_PRIMER_PLANO_DEL_GRAFICO);        // COLOR DE PRIMER PLANO DEL GRAFICO 
  ChartSetInteger(0,CHART_COLOR_GRID,C'46,46,46');                                                // COLOR DE LA CUADRICULA EN EL GRAFICO
  ChartSetInteger(0,CHART_COLOR_VOLUME,DarkGray);                                                 // COLOR DEL VOLUMEN DE LA TABLA 
  ChartSetInteger(0,CHART_COLOR_CHART_UP,COLOR_DEL_CUERPO_DE_LA_VELA_ALCISTA);                    // COLOR DE BARRA ARRIBA
  ChartSetInteger(0,CHART_COLOR_CHART_DOWN,COLOR_DEL_CUERPO_DE_LA_VELA_BAJISTA);                  // COLOR DE BARRA ABAJO
  ChartSetInteger(0,CHART_COLOR_CHART_LINE,Gray);                                                 // COLOR DE LINEA EN EL GRAFICO 
  ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,COLOR_DEL_CUERPO_DE_LA_VELA_ALCISTA);                 // COLOR DE VELA ALCISTA
  ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,COLOR_DEL_CUERPO_DE_LA_VELA_BAJISTA);                 // COLOR DE VELA VAJISTA
  ChartSetInteger(0,CHART_COLOR_BID,White);                                                       // OFERTA DE COLOR DE TABLA
  ChartSetInteger(0,CHART_COLOR_ASK,Red);                                                         // COLOR DE LA LINEA DE ASK 
  ChartSetInteger(0,CHART_COLOR_LAST,White);                                                      // ULTIMO COLOR DE LA TABLA
  ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,Green);                                                // TABLA COLOR NIVEL DE PARADA 
  ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,Red);                                                  // TABLA COLOR NIVEL DE PARADA 
  ChartSetInteger(0,CHART_SHOW_TRADE_LEVELS,TRUE);                                                // MOSTRAR NIVELES COMERCIALES EN EL GRAFICO
  ChartSetInteger(0,CHART_DRAG_TRADE_LEVELS,TRUE);                                                // MOSTRAR NIVELES ARRASTRADOS EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_DATE_SCALE,TRUE);                                                  // MOSTRAR FECHA DE ESCALA DE NIVELES EN EL GRAFICO
  ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,true);                                                 // MOSTRAR EN EL GRAFICO ESCALA DE PRECIOS
  ChartSetInteger(0,CHART_SHOW_ONE_CLICK,FALSE);                                                  // MOSTRAR TABLERO DE TRADING CON UN CLICK         
  
  //+------------------------------------------------------------------+
  //|                   MAPEO DE BUFFERS Y INDICADORES                 |
  //+------------------------------------------------------------------+
 
   
  //---
   return(INIT_SUCCEEDED);
  }
  //+------------------------------------------------------------------+
  //|        FUNCION DE ITERACION DE INDICADOR PERSONALIZADO           |
  //+------------------------------------------------------------------+
  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[])
  {
  //+------------------------------------------------------------------+
  //|   FUNCION DE ITERACION DEL INDICADOR  COLOR DE VELAS Y MECHA     |
  //+------------------------------------------------------------------+
  double ABIERTO, ALTO, BAJO, CERRADO;
  if(Bars<=10) return(0);
  limit=IndicatorCounted();
  
  //+------------------------------------------------------------------+
  //|   VERIFICAR POSIBLES ERRORES DE COLOR  VELAS Y MECHA             |
  //+------------------------------------------------------------------+
  if (limit<0) return(-1);
  
  //+------------------------------------------------------------------+
  //SE VOLVERA A CONTAR LA ULTIMA BARRA CONTADA DE COLOR  VELAS Y MECHA|
  //+------------------------------------------------------------------+
  if (limit>0) limit--;
     int POSICIÓN=Bars-limit-1;
     while(POSICIÓN>=0)
     
     {
     
     ABIERTO=Open[POSICIÓN];
     CERRADO=Close[POSICIÓN];
     ALTO=High[POSICIÓN];
     BAJO=Low[POSICIÓN];
     if (ABIERTO<CERRADO)
     
     { 
      BUFFER_DE_MAPA_EXTERNO_1[POSICIÓN]=BAJO;
      BUFFER_DE_MAPA_EXTERNO_2[POSICIÓN]=ALTO;
      BUFFER_DE_MAPA_EXTERNO_5[POSICIÓN]=EMPTY_VALUE;
      BUFFER_DE_MAPA_EXTERNO_6[POSICIÓN]=EMPTY_VALUE;
     }
     
     else
     {
      BUFFER_DE_MAPA_EXTERNO_1[POSICIÓN]=ALTO;
      BUFFER_DE_MAPA_EXTERNO_2[POSICIÓN]=BAJO;
      BUFFER_DE_MAPA_EXTERNO_5[POSICIÓN]=EMPTY_VALUE;
      BUFFER_DE_MAPA_EXTERNO_6[POSICIÓN]=EMPTY_VALUE;
     } 
     
     
     BUFFER_DE_MAPA_EXTERNO_3[POSICIÓN]=ABIERTO;
     BUFFER_DE_MAPA_EXTERNO_4[POSICIÓN]=CERRADO;
     
     
     if (ABIERTO==CERRADO)
     
     {
      BUFFER_DE_MAPA_EXTERNO_5[POSICIÓN]=BAJO;
      BUFFER_DE_MAPA_EXTERNO_6[POSICIÓN]=ALTO; 
      BUFFER_DE_MAPA_EXTERNO_1[POSICIÓN]=EMPTY_VALUE;
      BUFFER_DE_MAPA_EXTERNO_2[POSICIÓN]=EMPTY_VALUE; 
      BUFFER_DE_MAPA_EXTERNO_3[POSICIÓN]=EMPTY_VALUE;
      BUFFER_DE_MAPA_EXTERNO_4[POSICIÓN]=EMPTY_VALUE;                 
     }  
          
           POSICIÓN--;
     } 
  //+------------------------------------------------------------------+
  //|   VALOR DEVUELTO DE ANTERIOR CALCULADO PARA LA PROXIMA LLAMADA   |
  //+------------------------------------------------------------------+
   return(rates_total);
   }
  //+------------------------------------------------------------------+
      
     

@Tom_trader
Reason: