Problemas con Time() - página 2

 

Esto tampoco funciona ...

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

RaptorUK ya te ha contestado ahí arriba haciendo referencia a TimeDayOfWeek(). La diferencia entre Day( ), TimeDayOfWeek( ) y DayOfWeek() son (léelas con atención)

int Day() = Devuelve el día actual del mes, es decir, el día del mes de la última hora conocida del servidor.

int DayOfWeek() = Devuelve el día actual de lasemana basado en cero (0-Domingo,1,2,3,4,5,6) de la última hora conocida del servidor.

int TimeDayOfWeek(datetime Time) = Devuelve el día de la semana basado en cero (0 significa domingo,1,2,3,4,5,6) para la fecha especificada.


Así que Day() = 1 podría ser cualquier día de lunes a domingo.

Por cierto, hoy es 31 de mayo, la función Day() devolverá 31 (fecha) mientras que DayOfWeek() devolverá 4 (jueves).

Mañana es 1 de junio, la función Day() devolverá 1 (Fecha), y la función DayOfWeek() devolverá 5 (Viernes).

Utilice esto como script :

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

¡LOL!

Estoy empezando a pensar que la mayoría de las funciones basadas en el "Tiempo" en MT4 son seriamente defectuosas.

Quiero decir, si reajusto toda mi lógica de control de posición a algo tan mundano como TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59, y no ser capaz de conseguir cerrar una sola operación en absoluto (¡el EA simplemente ignora el código!), entonces yo diría que MT4 tiene algunos problemas que necesitan ser corregidos con respecto a este tipo de funciones.

LOL ¿no crees que si las funciones basadas en el tiempo de MQL4 tienen esos serios defectos alguien probablemente ya se habría dado cuenta?

Tal vez usted podría tratar de corregir su código defectuoso primero antes de afirmar que las funciones son defectuosas

en su criterio de cierre intente cambiar:

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59

a:

if(TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59)

toCFx:

¡El código no puede ser más sencillo! Estoy instruyendo al EA para que abra la maldita operación entre las 00:00 y las 00:05. Eso no es algo difícil de codificar. Un niño de seis años podría codificar eso. Aquí está de nuevo: [b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

También podrías intentar corregir eso también lol

cambiar:

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05

a:

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5)

 

Estimado CFx,

Mis disculpas si despotrico. Tengo un mal día. Creo que tenemos otro forista que puede tener que reinstalar su PC coz no está leyendo mis respuestas throughoutly derecho.

1. Si quieres cerrar las operaciones entre el lunes y el jueves, todas a las 23:57, y el viernes a las 21:57

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

Y puede modificar el mismo código para abrir operaciones.

Lea esto sobre la prueba de https://www.mql5.com/en/articles/1512


2. Esto es importante: usted mencionó "herramientas". Si usted es tan amable de elaborar lo que quiere decir con "herramientas" - está bien mencionar su nombre aquí. Sólo usamos MetaEditor. Hay un montón de foreros aquí que utilizan algunas herramientas en línea por ahí y nos hizo arreglar los errores. Usted tiene que decirnos lo que es, coz sus códigos pueden llenar de errores - por ejemplo, su lógica es correcta, pero se utiliza el tipo equivocado de funciones mql4.

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3. Me parece que te gusta mucho escribir páginas largas, no hay nada que pueda hacer al respecto, excepto tener esto en cuenta:

Este es mi primer post. En primer lugar, por favor, no (e) que no soy un desarrollador de MQL.

para que no tengas algo de vergüenza, sobre todo después de haber dicho ...

No soy un desarrollador de MQL, pero soy muy bueno en el desarrollo de construcciones lógicas y puedo detectar un problema sistémico cuando lo percibo.

Siempre estamos aquí para ayudar, incluso leyendo tus largos ensayos.

Este es tu - muy largo - primer post.

¡Hola Comunidad MQL4!

Este es mi primer post. En primer lugar, por favor, no soy un desarrollador de MQL. Soy un comerciante, que utiliza una herramienta para ayudarme a construir EAs. Esa herramienta permite el uso de alguna estructura MQL, pero no se ejecuta en funciones MQL explícitas. Simplemente toma el código MQL, evalúa si la condición basada en MQL es verdadera/falsa, y luego ejecuta una función personalizada como OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. Pero, no ejecuta el código MQL explícitamente. Por ejemplo, puede utilizar la función Imprimir o Comentar para que aparezca algo en la ventana del gráfico de MT4 (sólo un ejemplo).

Por lo tanto, sé un poco acerca de MQL, que es lo suficiente para permitirme utilizar la herramienta de desarrollo de EA que utilizo para construir mis EAs. Hasta ahora, he construido 10 EAs utilizando la herramienta y he abandonado 7 de ellos debido a la falta de rentabilidad, que es alrededor del 30% mejor que mi ratio de prototipos exitosos que solía obtener con la construcción de sistemas de trading en Excel. Normalmente espero que 7-8 ideas de 10 no sean tan rentables como se esperaba, dejando 2-3 diseños lo suficientemente rentables como para comenzar el proceso de optimización. Ok, basta de hablar de mí y de cómo me enrollo.

¡Aquí está mi problema y espero que he venido al lugar correcto para la ayuda!

Estoy ejecutando este código [b]para cerrar operaciones:[/b]

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57

Nota: El problema es que todas las operaciones permanecen abiertas de lunes a jueves, hasta las 23:57. Además, todas las operaciones permanecen abiertas el viernes, hasta las 21:57.


También estoy ejecutando este código a través de un bloque MQL [b]para abrir operaciones:[/b]

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

Nota: La única operación que se abre entre las 00:00 y las 00:05, es la primera operación de la prueba retrospectiva, al hacer clic en el botón de inicio de la prueba. Esa operación se abre precisamente a las 00:00. Sin embargo, ninguna de las otras operaciones se abre entre las 00:00 y las 00:05, más adelante en la semana.

En resumen:

- Una operación se abre después de hacer clic en el botón Tester Start a las 00:00.
- Ninguna operación se cierra posteriormente a las 23:57 (de lunes a jueves) o a las 21:57 (viernes).
- Nunca se abre una operación entre las 00:00 y las 00:05.

Todas las horas mostradas arriba tienen un amplio flujo de ticks disponibles. Por lo tanto, no hay lagunas en los datos utilizados por Tester.

Se agradece cualquier ayuda. ¿Por qué estas operaciones no se cierran a la hora codificada? ¿Por qué no se ejecuta ninguna operación cuando siempre hay una señal de operación disponible entre las 00:00 y las 00:05, de lunes a viernes?

Gracias.
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

No he utilizado ninguna sentencia Print para tal fin.

¿Por qué no? abrir su código en MetaEditor, añadir algunas funciones de impresión para decirle lo que está pasando .

MT4 no tiene un depurador por lo que una de las únicas herramientas disponibles es Print . . otra es Comment . . y eso es todo.

 
RaptorUK:

¿Por qué no? abrir su código en MetaEditor, añadir algunas funciones de impresión para decirle lo que está pasando .

MT4 no tiene un depurador por lo que una de las únicas herramientas disponibles es Print . . otra es Comment . . y eso es todo.


Yo uso bastante Alert() para ese propósito también
 

Las herramientas. Háblanos de las herramientas, no seas vergonzoso, aprendí de RaptorUK, dabbler, y los comentarios de SDC el otro día. Así que, por favor, cuéntanos .

:D

 
SDC:

Yo también uso bastante Alert() para ese fin
Yo no... por eso lo olvidé... gracias por la corrección :-)
 
onewithzachy:

LOL. Usted es el que irreal. Este código tuyo ...

... nunca volverá a ser cierto.

Usted es el que necesita para desarrollar aún más "su" construcción lógica.

Y construir esto ...


Tal vez deberías intentar leer el PO. Te dice claramente que no soy un desarrollador de MQL. Además, hay una enorme (enorme) distinción entre ser capaz de construir lógicamente un lenguaje de programación, y ser capaz de construir lógicamente un sistema de comercio consistentemente rentable. Desafortunadamente, en este negocio, se encuentra un montón de programadores en línea que no tienen ni una sola idea acerca de lo que se necesita para investigar, diseñar, arquitecto, construir, ingeniero, integrar e implementar, un sistema de comercio inteligente que realmente funciona bajo cualquier condición de mercado (alcista, bajista y de transición). Por lo tanto, entiendo su incapacidad para entender de dónde vengo. He construido ese sistema de trading inteligente y lo hice con Excel (de todas las cosas).

Ha sido rentable a tiempo completo durante esos últimos 3,27 años de forma consistente, mientras que ha producido resultados mucho mejores que la media en los últimos 7 años a tiempo parcial, mientras que todavía estaba siendo diseñado, construido y optimizado - un sistema de comercio totalmente integrado, de apoyo a la decisión diseñado con la entrada de un marco de indicadores 100% personalizado. No hay indicadores estándar de más de 50 años en mi sistema, ya que cada indicador en uso en todo el sistema proviene de un nuevo diseño y concepto de indicador que he creado desde cero a través de años de investigación y pruebas. Lo único que me queda por hacer es escribir un libro sobre ello.

Por lo tanto, en términos de diseño de sistemas de comercio que funcionan, me gustaría adivinar que usted probablemente no ha visto los gustos de mi tipo en este tablero en un tiempo - si alguna vez. ¿A quién conoce que haya creado una nueva clase de diseño de indicadores? No estoy hablando de tomar un diseño de indicador existente, ajustarlo y darle un nuevo nombre - eso se llama avanzar en la generación actual de indicadores. Estoy hablando de un nuevo concepto de indicador basado en una teoría del mercado que no se ha discutido en público a gran escala? Se llaman [b]Indicadores de clase diferencial Delta[/b] y no se basan en las teorías tradicionales del mercado de nada que hayas visto antes, te aseguro ese hecho.

Mi interés en MQL es descubrir si los indicadores de clase D2 tienen o no valor en los marcos de tiempo más bajos, ya que el sistema prototipo de donde provienen sólo utiliza barras diarias, semanales, mensuales y anuales de datos, para producir una sola (1) señal de comercio cada 24 horas, que ha sido entre el 91% y el 99% de precisión a un objetivo especificado para los últimos 3,27 años. Eso es más o menos 850 señales de comercio entre 91-99 por ciento de precisión, en un rango de objetivos de entre 17 a 67 pips por 24 horas (mediana del núcleo).

El prototipo actual no está automatizado y es demasiado complejo para MQL para manejar. OOP, sería el entorno óptimo para ello, pero he estado demasiado ocupado con otras cosas que me permiten, para sentarse el tiempo suficiente para aprender C, o C ++.

Esta prueba, es un POC para averiguar si un puñado de mis diseños de indicadores puede funcionar bien por debajo del marco de tiempo de la barra diaria. Si puedo encontrar la justificación técnica para la automatización de los marcos de tiempo más bajos utilizando mis diseños, entonces puedo justificar el tiempo que tendría que pasar el aprendizaje de POO, y convertir el prototipo en una aplicación de comercio de Windows independiente de propiedad (no para la venta bajo ninguna circunstancia).

Los comerciantes de comercio. Los programadores, programan. Yo NO soy un programador............ todavía.

 
onewithzachy:

Esto tampoco funciona ...

RaptorUK ya te ha contestado ahí arriba haciendo referencia a TimeDayOfWeek(). La diferencia entre Day( ), TimeDayOfWeek( ) y DayOfWeek() son (léelas con atención)

int Day() = Devuelve el día actual del mes, es decir, el día del mes de la última hora conocida del servidor.

int DayOfWeek() = Devuelve el día actual de lasemana basado en cero (0-Domingo,1,2,3,4,5,6) de la última hora conocida del servidor.

int TimeDayOfWeek(datetime Time) = Devuelve el día de la semana basado en cero (0 significa domingo,1,2,3,4,5,6) para la fecha especificada.


Así que Day() = 1 podría ser cualquier día de lunes a domingo.

Por cierto, hoy es 31 de mayo, la función Day() devolverá 31 (fecha) mientras que DayOfWeek() devolverá 4 (jueves).

Mañana es 1 de junio, la función Day() devolverá 1 (Fecha), y la función DayOfWeek() devolverá 5 (Viernes).

Utilice esto como script :


He utilizado DayOfWeek(), como se muestra en uno de mis posts, y todavía no funcionó correctamente.