Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 244

 
Alexey Viktorov #:

"Hangi dönemde" derken neyi kastediyorsunuz? Fonksiyon sadece haftanın gününü döndürür. Periyodun bununla ne ilgisi var? Herhangi bir zamanı koyduğunuzda haftanın gününü alırsınız.

Doğum tarihinizi girin ve doğduğunuz haftanın gününü öğrenin.

Ya da işte mum saatine göre haftanın günü


Period != timeframe. Yukarıdaki fonksiyon, bazı tarih aralıkları için haftanın doğru gününü döndürür ve sonra yanlış olanı döndürür. Yukarıdaki fonksiyonda parantezler gerçekten kaybolmuştur - daha dikkatli olmalısınız... ))))))))
 
Alexey Viktorov #:

Fonksiyonun tam kodunu da gösterdim. Tekrar ediyorum:

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

Yine de, iyi bir noktada size katılıyorum. Belki Nikolai hafızasından yazdı ve bir yanlışlık yaptı. Ancak çalışmadığını söylemek pek doğru değil.

Semyon Semyonych!... Peki, nasıl?... İşe yarıyor ama her zaman değil... ))))))))

 
Mikola_2 #:

Hayır, çalışmıyor. (((

Evet, özür dilerim. Nasıl karıştırdım bilmiyorum. Teşekkür ederim.

Tabii ki doğru yol bu:

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

Fonksiyonun tam kodunu da gösterdim. Tekrar ediyorum:

Yine de, iyi bir noktada size katılıyorum. Belki Nikolay hafızasından yazdı ve bir yanlışlık yaptı. Ancak çalışmadığını söylemek pek doğru değil.

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;
  }

Her zaman çalışmaz, bu bir test kodudur. Sonuç:

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
...

Her yerde dörtlü olmalı.

Tekrar ediyorum, ekran doğru :)
 
(uchar)((t/86400+4)%7)
 
amrali #
(uchar)((t/86400+4)%7)
😂
24*60*60 derleyicisi, ön derleme aşamasında bile 24*60*60'ı 86400'e dönüştürür.
Bu yüzden performansı etkilemez.
24*60*60 kaydı sadece mantık kavramı açısından daha okunabilirdir.
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

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  ; 
  } 

Oyuncu kadrosuyla ilgili, 2 * 2 = 4 ile ilgili değil 😉

uchar döküm modulo 256'dır.

Yukarıdaki (a % 256) % 7 anlamına gelir, bu da (a % 7) % 256'dan farklıdır
 
amrali #:

Oyuncu kadrosuyla ilgili, 2 * 2 = 4 ile ilgili değil 😉

uchar döküm modulo 256'dır.

Yukarıdaki (a % 256) % 7 anlamına gelir, bu da (a % 7) % 256'dan farklıdır
h ttps://www.mql5.com/ru/forum/170952/page243#comment_52244665
Sorun nedir?
Eski gönderilere bakıyor olmalısınız ve ileriye bakamayacak kadar tembelsiniz.
 
Nikolai Semko #:
Bunun nesi yanlış?

Bu konuda:

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

Bu konuda:

Oh bela

Yukarıdaki gönderilere bakın