Mt4 Fine del supporto. - pagina 33

 
C'è anche un problema con l'orario di inizio. Qualcosa non registra l'inizio della barra al momento giusto. Lo capirò più tardi.
 
Nikolai Semko:

Peter, non funziona nemmeno per me.
Il tuo stile di programmazione è strano. Potete mettere tutta questa roba con tutte le variabili e i cicli di OnInit e OnTimer in una procedura. Se qualcuno vuole usarlo, perché questo codice sarà d'intralcio. Cosa succede se abbiamo 20 o più procedure con lo stesso contenuto? Dopo tutto, è implementatoqui .


Peter non sta cercando una facile via d'uscita...

 
Реter Konow:
C'è anche un problema con l'orario di inizio. Qualcosa non registra l'inizio della barra al momento giusto. Lo capirò più tardi.

L'inizio della barra non è sempre cronometrato con precisione.

A volte le barre vengono saltate del tutto.
 
Nikolai Semko:

Peter, non funziona nemmeno per me.
Il tuo stile di programmazione è strano. Potete mettere tutte queste cose con tutte le variabili e i cicli di OnInit e OnTimer in una procedura. Se qualcuno vuole usarlo, perché questo pacchetto sarà d'intralcio. E se ci saranno 20 o più procedure con lo stesso contenuto? Dopo tutto, è quiche viene implementato.

Su 1 minuto funziona, ma non blocca l'inizio della barra al momento giusto.

Non ho controllato su altri timeframe, perché ci vuole molto tempo per aspettare.

Per quanto riguarda lo stile, ora non ha importanza. Possiamo togliere tutto dal timer e metterlo in una funzione separata. Stavo solo pensando alla soluzione stessa, non alle future varianti della sua integrazione.

 
Vladimir Pastushak:

L'inizio del bar non è sempre esattamente in orario.

Sì, l'ho notato, lo sistemerò più tardi.
 
Реter Konow:

Stavo pensando che se una persona ha davvero 600 strumenti nella panoramica del mercato e ad ogni tick controlla l'arrivo di una nuova barra per ogni strumento e ogni timeframe, potrebbe essere costoso...

Io stesso non faccio trading, quindi non so esattamente quante volte questa funzione dovrebbe essere chiamata in pratica.

Il doppio ciclo su simboli e timeframes nella funzione nuova barra può aumentare il carico solo se il numero di simboli e timeframes è molto grande e la funzione viene chiamata su ogni tick di centinaia di simboli. Allora forse Dmitry ha ragione.

Ho accorciato un ciclo nella funzione.

Dimenticalo e basta.

Ecco un esempio della mia classe specifica per questa azione. Certo, non è un capolavoro, ma è mio, e mi capisce e funziona.

class CNewBar
{
protected:
  MqlRates newBarRates[];
public:
 bool newBar();
 bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld);
};/********************************************************************/

bool CNewBar::newBar()
{
 static datetime timeLastBar;
  if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, newBarRates) < 0)
   return(false);
  bool ret = timeLastBar != newBarRates[0].time;
   if(ret)
    timeLastBar = newBarRates[0].time;
   return(ret);
}/********************************************************************/

bool CNewBar::newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/

Se volete determinare solo il TF corrente, dovete chiamare la funzione senza parametri.

Di conseguenza, se è inserito in .mqh, la libreria deve essere allegata.

#include <путь_папка\имя_файла.mqh>
CNewBar newBar;

e viene chiamato in OnTick().

if(newBar.newBar())
 Print("Новый бар на текущем ТФ");

Se abbiamo bisogno di definire altre TF, dichiariamo variabili per ogni periodo e simbolo, se necessario, a livello di variabili globali o statiche.

static datetime oldD1 = 0, oldH1 = 0;

if(newBar.newBar(PERIOD_H1, oldH1) && newBar.newBar(PERIOD_D1, oldD1)
 Print("Открылся новый день и новый час");

Questo approccio è efficace quando si lavora su un TF diverso da quello richiesto e protegge da problemi di cambio accidentale del grafico su cui lavora l'Expert Advisor.

 
Nikolai Semko:

Peter, non funziona nemmeno per me. Anche se l'algoritmo è abbastanza veloce, è una perdita di tempo. Ma non funziona ancora. Non c'è tempo per capirlo.
Hai uno strano stile di programmazione. Potete mettere tutta questa roba con tutte le variabili e i cicli di OnInit e OnTimer in una procedura. Se qualcuno vuole usarlo, tutta questa roba sarà d'intralcio. E se ci saranno 20 o più procedure con lo stesso contenuto? È implementatoqui .


Forse non sai cosa significa 'veloce'?

 
Alexey Viktorov:

Oh, sputa il rospo...

Ecco un esempio della mia classe specifica per questa azione. Certo, non è un capolavoro, ma è mio e funziona per me.

Se si vuole determinare solo su TF corrente, allora si chiama la funzione senza parametri.

Di conseguenza, se è inserito in .mqh, la libreria deve essere collegata.

e viene chiamato in OnTick().

Se voglio determinare altre TF, allora a livello di variabili globali o statiche, si dichiarano variabili per ogni periodo e simbolo, se necessario.

Questo approccio è efficace quando si lavora su un TF diverso da quello richiesto e protegge da problemi legati al cambio accidentale del grafico su cui opera l'Expert Advisor.


Non avete idea dell'idiozia che avete dimostrato, è semplicemente assurdo. Ma non vi mostrerò esattamente in quale posto, perché tutti voi non siete interessati alla mia opinione)))

 
Alexey Viktorov:

Oh, sputa il rospo...

Ecco un esempio della mia classe specifica per questa azione. Certo, non è un capolavoro, ma è mio e funziona per me.

Se si vuole determinare solo su TF corrente, allora si chiama la funzione senza parametri.

Di conseguenza, se è inserito in .mqh, la libreria deve essere allegata.

e viene chiamato in OnTick().

Se è necessario determinare altre TF, allora a livello di variabili globali o variabili statiche sono dichiarate per ogni periodo e, se necessario, per il simbolo.

Questo approccio è efficace quando si lavora su un TF diverso da quello desiderato e protegge da problemi di cambio accidentale del grafico su cui lavora l'Expert Advisor.

e che dire di altri simboli? il compito era quello di identificare il cambiamento di un TF su qualsiasi simbolo dal rapporto di mercato per qualsiasi TF.

Saluti.
 
Alexey Viktorov:

Oh, sputa il rospo...

Ecco un esempio della mia classe specifica per questa azione. Certo, non è un capolavoro, ma è mio e funziona per me.

Se si vuole determinare solo su TF corrente, allora si chiama la funzione senza parametri.

Di conseguenza, se questo è posto in .mqh allora la libreria dovrebbe essere inclusa

e viene chiamato in OnTick().

Se voglio determinare altri intervalli di tempo, allora a livello di variabili globali o variabili statiche sono dichiarate per ogni periodo e simbolo, se necessario.

Questo approccio è efficace quando si lavora su un TF diverso da quello desiderato e protegge dai problemi di cambio accidentale del grafico su cui lavora l'Expert Advisor.

La sua soluzione funziona bene? Se bene, allora tutto va bene.

E nel caso di centinaia di strumenti, non ci saranno sovrapposizioni?