Indicare una nuova barra - pagina 3

 

Ciao Alain,

grazie per il tuo commento e i tuoi miglioramenti.

Dovrei tornare alla mia prima versione in cui "bool NewBar" è una variabile globale commutata da una chiamata di funzione in OnTick().

Oppure ne faccio un piccolo oggetto. Forse l'opzione più intelligente.


E - naturalmente - "non fare mai lo stesso calcolo due volte".

Helmut

 
datetime iTime[];
datetime recent;
datetime projection;
int OnInit()
  {
//---
  int pull=CopyTime(NULL,0,0,1,iTime);
  recent=iTime[0];
  projection=recent+PeriodSeconds();
//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
//---
  if(TimeCurrent()>=projection)
   {
   Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));
   projection=projection+PeriodSeconds();
   }
  }
 

@ Doerk Hilger

Il linguaggio è lo stesso, ma hanno un piccolo sottoinsieme di funzioni non in comune<br / translate="no">

Oh mio Dio ... decisamente no!

Come MQ ha sottolineato nella descrizione del prodotto

MetaQuotes Language 5 è basato sui concetti del ben noto e popolare linguaggio di programmazioneС++. MQL5 è anche un linguaggio di programmazione ad oggetti di alto livello.

https://www.metatrader5.com/en/automated-trading/mql5

Oltre ad alcune differenze nella gestione di strutture, puntatori e indirizzi, il punto più importante è: MQL5 fornisce tutte le caratteristiche di un linguaggio di programmazione orientato agli oggetti che permette un paradigma di programmazione completamente diverso. Da questo punto di vista MQL5 appartiene chiaramente ad un'altra classe e anche ad un'altra generazione di linguaggi rispetto a MQL4.

Un altro vantaggio è la velocità. Non ricordo dove ho letto questo: MQL5 è cento volte più veloce in esecuzione di MQL4.

E qui arriva il rovescio della medaglia: è più veloce nell'esecuzione MA la creazione di un programma è molto molto lenta se si ha bisogno di familiarizzare prima con i concetti di programmazione a livello professionale.

Il che porta al problema di MQ. Da un lato hanno bisogno di offrire un ambiente di sviluppo professionale moderno per ottenere o mantenere il mercato dei professionisti, dall'altro non possono permettersi di perdere tutti i clienti privati e semiprofessionali che sono interessati al trading e non alla scienza della programmazione.




 
MQ ha fatto molto per generare confusione a questo punto.

Forse avete ragione.

Vediamo cosa possiamo fare per portare più chiarezza in questo problema.

Penso che sarebbe molto utile se le persone postassero i loro problemi con MQL4 nel forum MQL4, mentre quelli che hanno domande su MQL5 dovrebbero postarle nel forum MQL5.

Sembra molto facile . . . cosa ne pensate?

All'inizio, sarebbe utile se il moderatore spostasse i post sbagliati nel forum giusto, lasciando un suggerimento "scusa, forum sbagliato - vedi ...".

Willbur

 

@LorentzosRoussos

Sta diventando sempre più facile ;-)

Quello che mi preoccupa è la questione se TimeCurrent() è sincrono con le barre in tutti i casi.

Farò alcuni test di 2 ore lunedì.

Willbur



 
dovrebbe essere: 24 h
 
Willbur:

@LorentzosRoussos

Sta diventando sempre più facile ;-)

Quello che mi preoccupa è la questione se TimeCurrent() è sincrono con le barre in tutti i casi.

Farò alcuni test di 2 ore lunedì.

Willbur



Alain può correggermi su questo, ma potresti trovare delle lacune nei casi in cui sull'orizzonte temporale di una barra non ci sono tick, quindi non ci sarà nessuna barra.
 
Willbur:

@ Doerk Hilger

Oh mio Dio ... decisamente no!

Come MQ ha sottolineato nella descrizione del prodotto

Oltre ad alcune differenze nella gestione di strutture, puntatori e indirizzi, il punto più importante è: MQL5 fornisce tutte le caratteristiche di un linguaggio di programmazione orientato agli oggetti che permette un paradigma di programmazione completamente diverso.




Decisamente sì :) Ma so cosa intendi, ho sempre pensato di programmare MQL5, perché io codice solo orientato agli oggetti, ma come ho imparato ora, il suo "Enhanced" MQL4 da quando ha costruito 600 che non è altro che MQL5 ma, proprio come detto, con piccole differenze al sottoinsieme delle funzioni - e da quando questo MQL4 costruito non è più un altro linguaggio. In realtà, Enhanced-MQL4 è MQL5 per MetaTrader4. Questo è ciò che intendevo con la parte di confusione. Per me, MQL5 è sempre stato OOP e MQL4 era solo top-down-spaghetti. E non mi piacciono gli spaghetti ;)

Edit: Da dove è tratta la tua affermazione di cui sopra e quando l'hanno pubblicata? Perché in realtà vorrebbe dire che la prima ipotesi era giusta: è MQL5 .... confusione al massimo livello ;)

 
Adoro gli spaghetti.
 
Doerk Hilger:

Decisamente sì :) Ma so cosa intendi, ho sempre pensato di programmare MQL5, perché io codice solo orientato agli oggetti, ma come ho imparato ora, il suo "Enhanced" MQL4 da quando ha costruito 600 che non è altro che MQL5 ma, proprio come detto, con piccole differenze al sottoinsieme delle funzioni - e da quando questo costruito MQL4 non è più un altro linguaggio. In realtà, Enhanced-MQL4 è MQL5 per MetaTrader4. Questo è ciò che intendevo con la parte di confusione. Per me, MQL5 è sempre stato OOP e MQL4 era solo top-down-spaghetti. E non mi piacciono gli spaghetti ;)

Edit: Da dove è tratta la tua affermazione di cui sopra e quando l'hanno pubblicata? Perché in realtà vorrebbe dire che la prima ipotesi era giusta: è MQL5 .... confusione al suo livello più alto ;)

MQL4 migliorato?

Mai sentito parlare di questo.

Forse dovresti leggere la documentazione di entrambe le piattaforme prima di convincerti di sapere cosa stai facendo.

Motivazione: