Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Simple Code for Detect A "New Bar or New Candle " Received - Asesor Experto para MetaTrader 5

Visualizaciones:
153
Ranking:
(8)
Publicado:
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Este bloque de códigos detecta una Nueva Barra o una Nueva Vela cuando la ha recibido.

El principio básico de los códigos es muy simple. Primero el código almacena el Tiempo de la Barra / Vela anterior. (Luego agrega 60 segundos (igual a 1 min. puede agregar el tiempo que desee) al Tiempo de la barra anterior lo que da el valor del tiempo de cierre de la Barra / Vela Actual.

Una vez,

Tiempo Actual = valor del tiempo de cierre de la Barra / Vela Actual . Eso significa que se ha recibido una nueva / la barra actual se ha cerrado..

en este código la bandera (la variable de tipo bool 'NewBarRecived') evita la llamada múltiple de este bloque de código. lo que significa que este bloque de código se ejecuta sólo una vez por barra / vela. El comentario(); y el playsound("ok.wav"); se utiliza para comprobar la exactitud del bloque de código. Puede eliminarlo si lo desea.

La bandera se restablece a false una vez que el tiempo actual está por encima de la hora de cierre de la vela actual para comprobar la llegada de la próxima barra. (Mira los comentarios para ver).

//+------------------------------------------------------------------+
//|Nuevo Bar Detect.mq5
//|por H A T Lakmal |
//|https://t.me/Lakmal846 |
//+------------------------------------------------------------------+

bool NewBarRecived = false; // Falg para el control.

//+------------------------------------------------------------------+
//| Función de inicialización experta|
//+------------------------------------------------------------------+
int OnInit()
  {
//--- crear temporizador
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Función de desinicialización experta|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destruir temporizador
   EventKillTimer();

  }


//+------------------------------------------------------------------+
//| Función tick experto|
//+------------------------------------------------------------------+
void OnTick()
  {
   datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);
   datetime TimeCurrentClose = TimePreviousBar + 60; // Hora de cierre de la barra actual.
   datetime Time_Current = TimeCurrent();

   if(Time_Current == TimeCurrentClose && NewBarRecived == false)
     {
      PlaySound("ok.wav");   // Para el trabajo de declaración de no.
      NewBarRecived = true; // Actualiza la bandera para evitar múltiples llamadas.


      // Tu código va aquí ----- (Haz algo)

     }
   else
      if(Time_Current > TimeCurrentClose)
        {
         NewBarRecived = false; // Reposa la bandera para la próxima barra abierta.



         // Tu código va aquí ----- (Haz algo)


        }


   Comment("\n" +  "\n" +  "Time Current Bar -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "\n" + "Time Current Close -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "\n" + "Time Current -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + 
           "\n" +"\n" + "A New Bar Recived -: " + NewBarRecived); 
          
           // Para los cálculos de comprobación


  }
//+------------------------------------------------------------------+
//| Función temporizador|
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+
//| Función comercial|
//+------------------------------------------------------------------+
void OnTrade()
  {
//---

  }
//+------------------------------------------------------------------+
//| Función ChartEvent|
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---

  }
//+------------------------------------------------------------------+

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/49018

Code Block for "Trailing Stop" based on current market price. (Ask / Bid) Code Block for "Trailing Stop" based on current market price. (Ask / Bid)

Este bloque de código recorre todas las posiciones abiertas y realiza un seguimiento basado en los precios de compra y venta.

ConvertServerTime ConvertServerTime

Función para convertir la hora del servidor de una zona horaria a otra.

Logarithmic Moving Average Logarithmic Moving Average

La media móvil logarítmica calcula continuamente la media logarítmica del precio más alto y el precio más bajo dentro de un período.

Intervalo medio diario Intervalo medio diario

Indicador de rango medio diario.