Come posso ottenere i parametri Open,Low,High,Close in MQL5? - pagina 5

 
Igor Makanu:

potete o classificare CNewbar, o cercare nel forum NewBar


Hai una chiamata iTime nella tua classe. Mi è stato consigliato di lasciar perdere). Inoltre, dov'è la garanzia che non stia facendo lo stesso lavoro di CopyRates? Lo chiami su ogni tick. Comunque, chiamo CopyRates su ogni tick e il problema è chiuso.

 
Artyom Trishkin:

Sì, ad ogni spunta controlliamo l'ora:

E in poche parole:

solo scrivere in ginocchio - per mostrare l'idea, non l'accuratezza della scrittura

Non ha senso calcolare una nuova barra se il calcolo stesso coinvolge CopyRates o la sua controparte. Le stesse spese saranno.

Chiamerò in ogni tick. Ops.

 
Igor Makanu:

potete o classificare CNewbar, o cercare nel forum NewBar

ZS: tutto l'articolo!https://www.mql5.com/ru/articles/159



OK, il solito...oops, oops, oops...e non una sola linea di codice ))))

Ho citato il mio esempio per mostrare che non è sempre conveniente (e raramente necessario) ottenere un array di OHLC consecutivi. Nei problemi pratici, abbiamo spesso bisogno di ottenere una selezione di valori OHLC da barre diverse (gli indicatori non sono presi in considerazione)

Ok, non essere malato!

Oh, ma dai! Le persone grasse sono più spesso calde. Ecco perché si possono usare anche questi paragoni. Chi se ne frega se hai bisogno di OHLC... Igor ha detto che dovresti usare i frattali, quindi usali...

 
Реter Konow:

Avete una chiamata iTime nella vostra classe. Mi è stato consigliato di lasciar perdere). Inoltre, dov'è la garanzia che non faccia a sua volta lo stesso lavoro di CopyRates? Lo chiami su ogni tick. In breve, chiamerò CopyRates su ogni tick e il problema è chiuso.

Questo è più lungo che chiamare CopyTime() o iTime() una volta per tick.

CopyRates() viene chiamata solo quando è necessario ottenere tutti i valori della barra in una volta sola - al momento della definizione della nuova barra.

 
Реter Konow:
Non ha senso calcolare una nuova barra se il calcolo stesso coinvolge CopyRates o la sua controparte. Le stesse spese saranno.

Chiamerò in ogni tick. Spa.

Risposta: ti sbagli.

 
Artyom Trishkin:

Questo è più lungo che chiamare CopyTime() o iTime() una volta per tick.

Chiama CopyRates() solo quando hai bisogno di ottenere tutti i valori delle barre in una volta sola - al momento di definire una nuova barra.

Ok. Quindi l'impostazione di dimenticare le funzioni iXXX deve essere dimenticata).

 
Реter Konow:

Ok. Quindi, dobbiamo dimenticare le funzioni iXXX)).

Naturalmente. Non tutto è utile quello che dicono. E posso dire tali sciocchezze :)))

Ma qui - per ragioni di velocità: CopyRates() è utile quando avete bisogno di ottenere diversi valori di una barra simultaneamente (il vostro caso). È più lento di CopyTime() o iTime(), ma se chiamate CopyOpen(), CopyHigh(), CopyLow() e CopyClose() + (CopyTime() se necessario), allora sarà più lento della singolachiamata CopyRates(), che restituirà tutti i valori richiesti in una volta.

Conclusione: su ogni tick lavoriamo con CopyTime() o iTime() per determinare una nuova barra, e al momento della comparsa della nuova barra chiamiamo una volta CopyRates().

E non bisogna prendere in considerazione le affermazioni religiose, che non sono confermate da nulla se non dalla credenza. Potete controllare voi stessi cosa sarebbe più veloce per il vostro caso di definizione di una nuova barra - CopyTime() o iTime() - recentemente implementato nella funzione MQL5, che facilita la scrittura di codice multipiattaforma (c'è una bugia - poiché MQL4 contiene anche funzioni CopyXXX, ma il porting del codice MQL4 in MQL5 è più facile - non avete bisogno di funzioni iXXX da rifare)

 
Реter Konow:
Altrimenti, come fareste a sapere che l'orario di apertura della barra corrente è cambiato?
//+------------------------------------------------------------------+
//|                                                       NewBar.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlDateTime time;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

   EventSetMillisecondTimer(100);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   EventKillTimer();   
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

   
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   TimeGMT(time);   
   //TimeLocal(time);

   if(NewMinute())
   {
     Print("Я новая минута");
   }		
}

//####################################################################

//Получить новое время
int zero = 0;
bool NewMinute()
{
  int minute = time.min; //time.sec; time.hour;  time.day; 
  if(zero != minute)
  {    
    zero = minute;
    return(true);
  }
  else return(false); 
}
 
Реter Konow:

Avete una chiamata iTime nella vostra classe. Mi è stato consigliato di lasciar perdere). Inoltre, dov'è la garanzia che non faccia a sua volta lo stesso lavoro di CopyRates? Lo chiami su ogni tick. Comunque, chiamo CopyRates su ogni tick e il problema è chiuso.

Scrivi sempre e solo e non cerchi di leggere? Ti ho dato un link a un intero articolo sul New Bar! Gli articoli sono controllati - controllati da persone di una competenza diversa da quelle che scrivono costantemente sul forum ;)

ZS: Se smetti di scrivere e inizi a leggere, come l'articolo sul mio link, puoi trovare un altro modo (SERIES_LASTBAR_DATE ) per non usare gli iXXX() - ti ho detto di non usarli ))) - Chi avrebbe segnalato bug ed errori, che gli sviluppatori hanno rilasciato ))))) scadente

 
Igor Makanu:

Scrivi sempre e solo e non cerchi di leggere? Ti ho dato un link a un intero articolo sul New Bar! Gli articoli sono controllati - controllati da persone di una competenza diversa da quelle che scrivono costantemente sul forum ;)

ZS: se smetti di scrivere e inizi a leggere, come l'articolo sul mio link, puoi trovare un altro modo ( SERIES_LASTBAR_DATE ) per non usare gli iXXX() - ti ho detto di non usarli ))) - che direbbe i bug e gli errori che gli sviluppatori hanno rilasciato ))))) scadente

Ci sono stati alcuni problemi con SERIES_LASTBAR_DATE. È stato discusso qui da qualche parte molto tempo fa. Forse è stato aggiustato.

Motivazione: