Características del lenguaje mql5, sutilezas y técnicas - página 244

 
Alexey Viktorov #:

¿Qué quiere decir"en qué período"? La función sólo devuelve el día de la semana. ¿Qué tiene que ver el período? Pon cualquier hora y obtendrás el día de la semana.

Pon la fecha de tu nacimiento y obtendrás el día de la semana de tu nacimiento.

O aquí tienes el día de la semana según la hora de la vela


Period != timeframe. La función anterior devuelve el día de la semana correcto para algún intervalo de fechas, y luego devuelve el incorrecto. Los paréntesis están realmente perdidos en la función anterior - deberías tener más cuidado... ))))))))
 
Alexey Viktorov #:

Bueno, yo también mostré el código completo de la función. Otra vez:

uchar WhatWeekDay(datetime t)
 {
  return uchar(t/(PeriodSeconds(PERIOD_D1))+4)%7;
 }

Aunque, estoy de acuerdo contigo en un buen punto. Tal vez Nikolai escribió de memoria y cometió una inexactitud. Pero decir que no funciona no es del todo correcto.

Semyon Semyonych!... Bueno, ¿cómo es eso?... Bueno, funciona, pero no siempre... ))))))))

 
Mikola_2 #:

No, no funciona. (((

Sí, lo siento. No sé cómo lo he estropeado. Gracias.

Claro que es la forma correcta de hacerlo:

uchar WhatWeekDay(datetime t) {
   return uchar((t/(24*60*60)+4 )%7);
}
 
Alexey Viktorov #:

Bueno, yo también mostré el código completo de la función. Otra vez:

Aunque, estoy de acuerdo contigo en un buen punto. Tal vez Nikolai escribió de memoria y cometió una inexactitud. Pero no es del todo correcto decir que no funciona.

void OnStart()
  {
   for(int i1=0; i1<100; i1++)
      Print(WhatWeekDay(i1*7*24*60*60));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
uchar WhatWeekDay(datetime t)
  {
   return uchar(t/(PeriodSeconds(PERIOD_D1))+4)%7;
  }

No siempre funciona, este es un código de prueba. Resultado:

2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4

... 
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   4
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0

... 
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   0
2024.02.10 17:51:47.584 2 (EURUSD,H1)   3
2024.02.10 17:51:47.584 2 (EURUSD,H1)   3
2024.02.10 17:51:47.584 2 (EURUSD,H1)   3
...

Debería haber cuatros en todas partes

De nuevo, la pantalla es correcta :)
 
(uchar)((t/86400+4)%7)
 
amrali #
(uchar)((t/86400+4)%7)
😂
El compilador 24*60*60 convierte 24*60*60 a 86400 incluso en la etapa de precompilación.
Así que no afecta al rendimiento.
El registro 24*60*60 es simplemente más legible desde el punto de vista del concepto lógico.
 

Foro sobre negociación, sistemas automatizados de negociación y prueba de estrategias de negociación

Características del lenguaje mql5, sutilezas y métodos de trabajo

Aliaksandr Hryshyn , 2024.02.10 15:52

void  OnStart  () 
  { 
   for  ( int  i1= 0  ; i1< 100  ; i1++)
        Print  (WhatWeekDay(i1* 7  * 24  * 60  * 60  )); 
  } 
//+------------------------------------------------ - -------------------+ 
//| | 
//+------------------------------------------------ - -------------------+ 
uchar  WhatWeekDay( datetime  t) 
  { 
   return  uchar  (t/( PeriodSeconds  ( PERIOD_D1  )) + 4  )% 7  ; 
  } 

Es con respecto a la fundición, no sobre 2 * 2 = 4 😉

uchar cast es modulo 256.

Lo anterior significa (a % 256) % 7, que es diferente de (a % 7) % 256
 
amrali #:

Es con respecto a la fundición, no sobre 2 * 2 = 4 😉

uchar cast es módulo 256.

Lo anterior significa (a % 256) % 7, que es diferente de (a % 7) % 256
h ttps://www.mql5.com/ru/forum/170952/page243#comment_52244665
¿Qué está mal aquí?
Usted debe estar buscando en los puestos de edad y eran demasiado perezosos para mirar hacia adelante.
 
Nikolai Semko #:
¿Qué tiene esto de malo?

Sobre eso:

Print(uchar(257) % 7);   // 1
Print(257 % 7);          // 5
 
trader6_1 #:

Sobre eso:

Oh problemas

Ver posts anteriores


Razón de la queja: