Mira cómo descargar robots gratis
¡Búscanos en Facebook!
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
Visualizaciones:
51
Ranking:
(3)
Publicado:
\MQL5\Include\Tools\Custom\
DateTimeMsc.mqh (5.31 KB) ver
\MQL5\Expert\Test\DateTimeMsc\
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Cuando recientemente empecé a probar intensivamente la funcionalidad de CopyTicksRange(), me encontré con algunos problemas desfavorables al manejar tiempos de milisegundos:

  1. En realidad quería usar CDateTime, ya que deriva de MqlTimeStruct y puedes editar las diferentes unidades de tiempo muy fácilmente usando los métodos de incremento y decremento incluidos.
  2. Al mismo tiempo, necesitaba una forma de traducir suavemente los tiempos en milisegundos (segundos desde el 1 de enero de 1970 multiplicados por 1000 en formato ulong) de un lado a otro.

Aquí me encontré con la dificultad de que el número de milisegundos, por ejemplo, es un número muy vago que no te dice mucho sobre la fecha exacta. Sin embargo, si usas CDateTime o TimeStruct, todas las unidades de tiempo son fáciles de cambiar, pero el formato las destroza y el resultado también es muy poco claro. Esta clase CDateTimeMsc fue creada para resolver este problema.

#include <Tools\DateTime.mqh>

struct CDateTimeMsc: public CDateTime
  {
public:
   int               msc;               // additional variable for msc storage
   datetime          check_datetime;    // para una observación conveniente se requiere un poco de sobrecarga.

   //--- Métodos CDateTimeMsc

   ulong             MscTime(void) {return(ulong(double(CDateTime::DateTime()) * 1000) + msc);}
   void              MscTime(ulong a_msc_time);  // entrada (datetime*1000)
   void              Msc(int value);
   //bool IsNumInt(const int num);
   void              MscDec(int delta = 1);
   void              MscInc(int delta = 1);
   void              SecTime(int a_int_time);
   ulong             SecTime(void);
   void              UpdateDateTime();   // actualiza la variable de observación check_datetime
   void              DateTime(datetime a_datetime) {CDateTime::DateTime(a_datetime); UpdateDateTime();}
   datetime          DateTime(void) {return(CDateTime::DateTime());}

  };

Los nuevos métodos se insertaron bajo la herencia de la antigua estructura.

Ahora la clase, que en realidad es una estructura (ver Estructuras/Clases), también puede trabajar con milisegundos, siempre que se disponga de tiempos tan exactos.

Además, los métodos de incremento y decremento se han extendido a la propiedad msc.

Ahora se podría discutir si la variable adicional "check_datetime" es realmente necesaria, ya que crea una cierta sobrecarga (para algunas personas esto es muy importante). Sin embargo, supuse que normalmente no se utilizan muchos objetos CDateTime, sino sólo unos pocos en los lugares importantes donde es necesario cambiar unidades de tiempo como horas, minutos, segundos o días. También tenía algunas dudas sobre el método UpDateTime(), que se llama innecesariamente con cada incremento/decremento.

En general, sin embargo, el factor de manejo era lo principal.


La prueba
Ya no es necesario consultar la hora con una variable datetime adicional si se desea conocer la fecha exacta, sino que basta con colocar la variable "check_datetime" bajo supervisión: (TestEA ver más arriba)


obs2

La hora en milisegundos se tradujo automáticamente al formato datetime.


Translated from German by MetaQuotes Ltd.
Original code: https://www.mql5.com/de/code/48156

Triple rendimiento intradía Triple rendimiento intradía

Establezca tres cruces y controle el rendimiento porcentual diario a partir de una hora determinada (que también se puede establecer).

Strong Historical Levels Strong Historical Levels

Niveles históricos de S/Rs fuertes

Caculater Margin Caculater Margin

EA Tools tính toán Margin theo lotsize, có thể tùy chỉnh đòn bẩy

Open Range BreakOut Indicator for MetaTrader 5 Open Range BreakOut Indicator for MetaTrader 5

El indicador Open Range Breakout (ORB) es una potente herramienta de análisis técnico que identifica y realiza un seguimiento de las rupturas de precios del rango de apertura de las sesiones bursátiles. Este indicador se basa en el concepto de que los precios máximos y mínimos establecidos durante los primeros minutos de una sesión bursátil a menudo sirven como importantes niveles de soporte y resistencia durante el resto del día. El indicador calcula automáticamente el rango de apertura basándose en periodos de tiempo definidos por el usuario, traza múltiples objetivos de precios y proporciona alertas visuales y sonoras de posibles oportunidades de negociación. Está diseñado para ayudar a los operadores a identificar operaciones de ruptura de alta probabilidad y escenarios de repetición de pruebas.