Barre di conteggio compresi i fine settimana - pagina 4

 

Grazie mille a tutti voi per il vostro aiuto e la vostra partecipazione!!!

Le versioni 1, 2 e 4 sono più corrette, ma hanno errori, da qualche parte è corretto (giorno per giorno) e da qualche parte manca 2-3 giorni

La versione 3 vede il numero di barre del periodo che sono già state calcolate.

//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 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]);}
 

Anche se conta correttamente 1, 2 e 4.
Non ho tenuto conto che il secondo punto si sposta poi sulle barre ricevute +n
e ci sono anche i fine settimana e di conseguenza mi mancano 2-3 barre al posto giusto

È possibile identificare le barre visibili?
Cioè abbiamo il primo prezzo e aggiungiamo le barre visibili ad esso sul grafico
. Altrimenti abbiamo il primo punto il 5 del mese + 12 barre = il 17 del mese + 4 giorni fuori = il 21 del mese e ci mancano un paio di giorni in più al punto finale

 
forex2030:

Èpossibile identificare esattamente le barre visibili?

Sì, nessun problema. E questa particolare risposta è stata la prima nel thread. Semplice, veloce, elegante.

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

Inclusi i fine settimana?

Scrivere 12 mesi, cioè 12 variabili con il numero di giorni in esse, tutti in un array

in un array di anni, con il numero di giorni di febbraio, o calcolare un anno con un salto in febbraio.

in un ciclo:

sommare i giorni pieni e rimanenti nei mesi iniziali e finali del periodo richiesto

 
Come fanno le vacanze a scappare? O non contano come vacanze?).
 
Aleksey Nikolayev:
Come fanno le vacanze a scappare? O non contano come vacanze?).
calcola il numero totale di giorni e sottrae il numero di giorni nella cronologia delle quotazioni
 
Renat Akhtyamov:
Calcolerà il numero totale di giorni e sottrarrà il numero di giorni nella cronologia del preventivo

Si può se si è sicuri che non ci sono altre ragioni per mancare il giorno.

È anche possibile perdere solo una parte della giornata - anche questo può avere un impatto negativo sui calcoli

 
Aleksey Nikolayev:

È anche possibile saltare solo una parte del giorno - anche questo può avere un cattivo effetto sui calcoli

In questo caso la barra giornaliera sarà ancora presente sul grafico

 
Aleksey Nikolayev:

Si può se si è sicuri che non ci sono altre ragioni per mancare il giorno.

È anche possibile perdere solo una parte della giornata - anche questo può avere un impatto negativo sui calcoli

Devi usare il TF giornaliero e nient'altro
 
Igor Makanu:

nel qual caso la barra giornaliera sarà ancora presente sul grafico

Lo farà, naturalmente. Ma, per esempio, il suo alto-basso si distinguerà dal resto e ci sarà sempre una domanda - è una vacanza o è caduto bar minuti? Non è molto chiaro come automatizzare tali controlli.

Motivazione: