Zählleisten einschließlich Wochenenden - Seite 4

 

Ich danke Ihnen allen sehr für Ihre Hilfe und Teilnahme!!!

Die Versionen 1,2 und 4 sind korrekter, haben aber Fehler, irgendwo ist es korrekt (Tag zu Tag) und irgendwo fehlen 2-3 Tage

In Version 3 wird die Anzahl der bereits berechneten Balken für den Zeitraum angezeigt.

//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 1 рассчитывает бары за период только выходных дней  12бар=3вых  | 
//+------------------------------------------------------------------------+ 
int NumData1(datetime d_start,datetime d_stop){
   const int day_in_sec = 24 * 60 * 60;
   datetime d_corect1 = d_start - d_start % day_in_sec;
   datetime d_corect2 = d_stop - d_stop % day_in_sec;
   int result = (int)((d_corect2 - d_corect1) / day_in_sec);
   datetime t_arr[];
   int allbarD1 = CopyTime(_Symbol, PERIOD_D1, d_start, d_stop, t_arr);
   if(allbarD1 < 0) return(0);
return(result-allbarD1);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 2 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData2(datetime d_start,datetime d_stop){
   int bar=Bars(Symbol(),0,d_start,d_stop);
return(bar);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 3 рассчитывает бары за период                      12бар=12бар  | 
//+------------------------------------------------------------------------+ 
int NumData3(datetime d_start,datetime d_stop){
   MqlDateTime dts[2];
   TimeToStruct(d_start,dts[0]);
   TimeToStruct(d_stop,dts[1]);
return(dts[1].day_of_year - dts[0].day_of_year);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 4 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData4(datetime startDate,datetime endDate){
   int d=int((endDate-startDate)/86400);   
   int m[7,7]={
   {0, 0,1,2,3,4,5}, // воскр
   {0, 1,2,3,4,5,5}, // понед
   {0, 1,2,3,4,4,4}, // вторн
   {0, 1,2,3,3,3,4}, // среда
   {0, 1,2,2,2,3,4}, // четв
   {0, 1,1,1,2,3,4}, // пятн
   {0, 0,0,1,2,3,4}  // субб
   };
return((d/7)*5+m[(int)TimeDayOfWeek(startDate)][d%7]);}
 

Obwohl er 1, 2 und 4 richtig zählt.
Ich habe nicht berücksichtigt, dass der zweite Punkt dann zu den erhaltenen +n Balken wandert
und es gibt auch Wochenenden, so dass ich 2-3 Takte zu kurz bin, um die richtige Stelle zu finden

Ist es möglich, die sichtbaren Balken zu identifizieren?
D.h. wir haben den ersten Kurs und addieren die sichtbaren Balken dazu auf dem Chart
. Andernfalls haben wir den ersten Punkt am 5. des Monats + 12 Balken = den 17. des Monats + 4 Tage Pause = den 21. des Monats und uns fehlen noch ein paar Tage bis zum Endpunkt

 
forex2030:

Ist es möglich, die sichtbaren Balkengenau zu identifizieren ?

Ja, kein Problem. Und diese spezielle Antwort war die allererste in diesem Thema. Einfach, schnell, elegant.

Подсчёт баров с учётом выходных
Подсчёт баров с учётом выходных
  • 2020.04.25
  • www.mql5.com
Есть две точки t1 и t2, между ними 25 баров, как узнать сколько было выходных между точками например на D1 чтобы потом их прибавить к нужным барам...
 

Einschließlich der Wochenenden?

Schreiben Sie 12 Monate, d. h. 12 Variablen mit der Anzahl der Tage, in ein Array.

in eine Reihe von Jahren, mit der Anzahl der Tage im Februar, oder berechnen Sie ein Jahr mit einem Schalttag im Februar.

in einer Schleife:

die vollen und verbleibenden Tage im Anfangs- und Endmonat des gewünschten Zeitraums zusammenzählen

 
Wie kommt man in den Ferien weg? Oder zählen sie nicht als Feiertage?)
 
Aleksey Nikolayev:
Wie kommt man in den Ferien weg? Oder zählen sie nicht als Feiertage?)
berechnet die Gesamtzahl der Tage und subtrahiert die Anzahl der Tage im Kursverlauf
 
Renat Akhtyamov:
Es wird die Gesamtzahl der Tage berechnet und die Anzahl der Tage im Kursverlauf abgezogen

Sie können dies tun, wenn Sie sicher sein können, dass es keine anderen Gründe für das Versäumnis des Tages gibt.

Es ist auch möglich, nur einen Teil des Tages zu versäumen - auch dies kann sich negativ auf die Berechnungen auswirken

 
Aleksey Nikolayev:

Es ist auch möglich, nur einen Teil des Tages auszulassen - auch dies kann sich negativ auf die Berechnungen auswirken

In diesem Fall wird der Tagesbalken weiterhin im Diagramm angezeigt.

 
Aleksey Nikolayev:

Das ist möglich, wenn Sie sicher sein können, dass es keine anderen Gründe für das Fehlen an diesem Tag gibt.

Es ist auch möglich, nur einen Teil des Tages zu versäumen - auch dies kann sich negativ auf die Berechnungen auswirken

Sie müssen die tägliche TF verwenden und nichts anderes
 
Igor Makanu:

In diesem Fall wird der Tagesbalken weiterhin im Diagramm angezeigt.

Natürlich wird sie das. Aber z.B. sein Hoch-Tief wird sich von den anderen abheben und es wird immer die Frage auftauchen, ob es sich um einen Feiertag oder um fallen gelassene Minutentakte handelt. Es ist nicht ganz klar, wie solche Kontrollen automatisiert werden können.