Discussione sull’articolo "L'Handler dell'Evento "Nuova Barra"" - pagina 3

 
laplacianlab:

Ottimo articolo, grazie per averlo condiviso! Tutto ciò è stato molto utile!

Comunque, ho preso la tua funzione isNewBar e in fase di compilazione mi lancia il seguente messaggio:"possibile perdita di dati a causa della conversione di tipo".

Ho quindi cambiato i tipi di var da datetime a long in questo modo:

Ora compila senza alcun avviso e sembra funzionare bene. Grazie!


Probabilmente è più chiaro cambiarlo in questo modo:

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Nel primo modo di richiedere una nuova riga di colonna, non capisco come il numero di nuove colonne possa essere assegnato direttamente a 1. Vi prego di consigliarmi;

 //--- Verifica la presenza di nuove righe di colonna.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Numero di nuove righe di colonna
      m_lastbar_time=newbar_time; // Ricorda l'ora dell'ultima battuta
      return(true);
     }
   //--- //--- Verifica la presenza di nuove righe di colonna.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Numero di nuove righe di colonna
      m_lastbar_time=newbar_time; // Ricorda l'ora dell'ultima battuta
      return(true);
     }
   //---
 

Secondo le regole della modellazione a oggetti, è un termine improprio chiamarlo CIsNewBar.

Vediamo, se auto è una classe, posso creare/avere un oggetto auto. Tuttavia, se la mia classe è "ÉUmCarroNovo", possiamo avere o possedere un "ÉUmCarroNovo".

L'autore avrebbe dovuto chiamarlo CNewBarChecker. Qualcuno potrebbe inventare un New Car Checker e crearlo (la nostra classe sarebbe NewCarChecker.

[Eliminato]  
Non si usa il tempo, si usano le barre.
 
Ci sono tante variazioni di codice nell'articolo, ma alla fine non è ancora chiaro quale sia la funzione più corretta da utilizzare sulla MT4 per aumentare almeno un po' la corrispondenza di ciò che il tester disegna con il trade. Datemi un suggerimento!
 
Pavel Komarovsky:
Ci sono tante variazioni di codice nell'articolo, ma alla fine non è ancora chiaro quale sia la funzione più corretta da utilizzare sulla MT4 per aumentare almeno un po' la corrispondenza di ciò che il tester disegna con il trade. Datemi un suggerimento!
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // se si desidera che l'ultima barra sia analizzata al riavvio
   ...

void OnTick()
{
   // Se c'è una nuova barra
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // Analizzare gli indicatori
      ...
   }
 
Andrey Khatimlianskii:

Andrey, grazie. Dimmi perché ora si usa iTime, prima ricordo che in tutte le funzioni e gli esempi, la maggior parte di essi erano basati su iBars.

iTime funziona in modo più preciso?

 
Pavel Komarovsky:

Andrey, grazie. Dimmi perché ora si usa iTime, prima ricordo che in tutte le funzioni e gli esempi, la maggior parte di essi erano basati su iBars.

iTime funziona in modo più accurato?

Non ho mai usato iBars per questo scopo, non lo so.
 
Mi chiedo perché questo esempio non riesca a ottenere i dati della serie temporale. Copia... sempre -1 e Bars() sempre 0. Cioè non si può accedere ai dati dalla classe
 

Questo articolo è così buono che viene persino utilizzato nei corsi di programmazione MQL5, compresi i commenti, le collaborazioni e le correzioni di bug. Congratulazioni a tutti voi.