Hafta sonları dahil barların hesaplanması - sayfa 2

 
forex2030 :

Bana ne verecek anlamadım?

Noktadan noktaya bazı gün sayımı yapılabilir mi ve periyot için bir gün = 6 veya 0 ise, o zaman gün ++;

Hiç bir anlamı yok. Piyasadaki tüm grafik yapılar (herhangi biri), boş gün olmadığı gerçeğine dayanarak yapılır.

 
Алексей Тарабанов :

Hiç bir anlamı yok. Piyasadaki tüm grafik yapılar (herhangi biri), boş gün olmadığı gerçeğine dayanarak yapılır.

Ayrıca günleri sıralayabilirsiniz, örneğin, son tarih 15 ise ve ardından 18 tarih biliniyorsa, +2'yi hatırlayın (yani 16 ve 17 gün izin)

 
forex2030 :

Ayrıca günleri sıralayabilirsiniz, örneğin, son tarih 15 ise ve ardından 18 tarih biliniyorsa, +2'yi hatırlayın (yani 16 ve 17 gün izin)

Gerçekten istiyorsan yapabilirsin. Amacı yok.

Trend 18'inde devam edecek. 15'ten 18'e - bir bar.

 
Алексей Тарабанов :

Gerçekten istiyorsan yapabilirsin. Amacı yok.

Bu nasıl anlamsız?
Ortaya çıkan değeri barlarıma ekleyeceğim ve zaten 12 + 4 = 16 bar alacağım ve satır istenen tarihte bitecek

 
forex2030 :

Bu nasıl anlamsız?
Ortaya çıkan değeri barlarıma ekleyeceğim ve zaten 12 + 4 = 16 bar alacağım ve satır istenen tarihte bitecek

Hat havada asılı kalacak.

 
Алексей Тарабанов :

Hat havada asılı kalacak.

İlk noktaya 12 değil de 16 çubuk eklersem neden havada asılı kalsın?

 
forex2030 :

İlk noktaya 12 değil de 16 çubuk eklersem neden havada asılı kalsın?

İyi geceler.

 

Böyle bir şeye ihtiyacım var, ama sadece uygun şekilde tasarlanmış, bu sadece bir düşünce

 int NumData( datetime data1, datetime data2){
     int num= 0 ;
     for ( int d=data1; d>=data2; d--)
     if (TimeDayOfWeek(d)== 6 || TimeDayOfWeek(d)== 0 ) num++;
return (num);}
 
Ve neden bu sorunu alıp çözmüyorsunuz? Başlangıç ve bitiş tarihleri biliniyor, aralarındaki toplam gün sayısını hesaplayabiliriz. Sonra tam haftaların toplam sayısını sayarız. Her hafta için, beş iş günü ve iki gün izin - bununla her şey basit. Kalanla ilgili sorunlar (başlangıçta olduğunu varsayıyoruz), haftanın ilk gününe ve süresine bağlı olarak, kalan hafta sonunu yakalayabilir veya yakalamayabilir. Haftanın her günü için yedi seçenek için bir anahtar yazmak ve haftanın gününe ve kalanın süresine bağlı olarak yedi hesaplama yapmak gerekecektir. O zaman bu anahtara bakın ve belki bu hesaplamaların nasıl genelleştirilebileceğini ve basitleştirilebileceğini görebilirsiniz. Mesele bir şeyler yapmaktır.
 
Dmitry Fedoseev :
Ve neden bu sorunu alıp çözmüyorsunuz? Başlangıç ve bitiş tarihleri biliniyor, aralarındaki toplam gün sayısını hesaplayabiliriz. Daha sonra tüm haftaların toplam sayısını sayarız. Her hafta için, beş iş günü ve iki gün izin - bununla her şey basit. Kalanla ilgili sorunlar (başlangıçta olduğunu varsayıyoruz), haftanın ilk gününe ve süresine bağlı olarak, kalan hafta sonunu yakalayabilir veya yakalamayabilir. Haftanın her günü için yedi seçenek için bir anahtar yazmak ve haftanın gününe ve kalanın süresine bağlı olarak yedi hesaplama yapmak gerekecektir. O zaman bu anahtara bakın ve belki bu hesaplamaların nasıl genelleştirilebileceğini ve basitleştirilebileceğini görebilirsiniz. Mesele bir şeyler yapmaktır.

her şey karmaşık, tarihler arasında saniye cinsinden zaman var (tarih saat) - bu, 24 saat, her saatte 60 dakika ve bir dakikada 60 saniye olan tam günlerin sayısını hesaplamak için yeterlidir .... google to the kurtarmak

Sapık sayma yöntemlerinden bahsediyorsak, bunu yapabilirsiniz:

 input datetime d_start = D'2020.01.01' ;
input datetime d_stop  = D'2020.02.01' ;
//+------------------------------------------------------------------+
void OnStart ()
{
   MqlDateTime dts[ 2 ];
   TimeToStruct (d_start,dts[ 0 ]);
   TimeToStruct (d_stop,dts[ 1 ]);
   printf ( "Между датами %i дней" ,dts[ 1 ].day_of_year - dts[ 0 ].day_of_year);
}
//+------------------------------------------------------------------+

önerdiğiniz gibi, her çubuğu saymak ve mevcut ve önceki çubuk arasında hafta sonları olduğunu bulmak mümkündür .... genel olarak, görevi karmaşıklaştırma olasılıkları yalnızca arzu ile sınırlıdır)))