Errori, bug, domande - pagina 3034

 

Oggi è apparso un errore sulle pagine dei lavori freelance:

Browser Chrome. Con che cosa ha a che fare questo?

 
Aleksey Vyazmikin:

Ho capito bene che se un EA che lavora su M1 usa un indicatore su M1 (o qualsiasi altro TF?), che prende i dati dal TF superiore, allora al primo tick di una nuova barra non sarà in grado di restituire il valore reale in ogni caso, perché ci vorranno n tick prima che il TF superiore sia calcolato?


In realtà, OnTick non è sincronizzato con OnCalculate dallo stesso simbolo. Teoricamente, OnTick può essere in ritardo e al suo inizio tutti gli indici di tutti i TF saranno calcolati?

 
Slava:

Dall'altro lasso di tempo, i dati saranno presi che sono attualmente pronti. Cioè, nell'output tutti i dati saranno perfettamente sincronizzati.

Perché allora l'indicatore non può riceverli alla prima richiesta?

Come posso fare un normale indicatore multi-TF (e idealmente - multi-carattere) senza usare un timer?

 
Andrey Khatimlianskii:

Perché allora l'indicatore non può recuperarli alla prima richiesta?

Come si fa a fare un normale indicatore multi-TF (e idealmente multi-carattere) senza usare un timer?

+

Sono preoccupato che i ritardi nella ricezione del segnale da parte dell'EA saranno inevitabili con l'attuale architettura, purtroppo

 
Ciao

Appare un errore durante l'ottimizzazione con Mql Cloud:

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 testato con errore "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Si prega di consigliare quale può essere il problema?

Quando si ottimizza senza Mql Cloud, tutto funziona. Il problema è iniziato il 29/05/2009. Prima di allora, tutto andava bene.

 
Marat Bayburin:
Ciao

Appare un errore durante l'ottimizzazione con Mql Cloud:

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 testato con errore "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Si prega di consigliare quale può essere il problema?

Quando si ottimizza senza Mql Cloud, tutto funziona. Il problema è iniziato il 29.05. Prima era tutto ok.

Penso che il problema sia nella compilazione del compilatore. Ricevo gli stessi errori.
Cioè abbiamo compilato con la nuova build e gli agenti sono ancora sulla vecchia build, .... Così.
 
Marat Baiburin:
Quindi basta aspettare che gli agenti si aggiornino?

Se si tratta di errori dovuti a diverse build di agenti e del tuo PC desktop, allora sì, aspetta. I miei agenti per esempio sono ancora 2949, non aggiornati a 2950.

 
Andrey Khatimlianskii:

Perché allora l'indicatore non può recuperarli alla prima richiesta?

Come fare un normale indicatore multi-TF (e idealmente multi-carattere) senza usare un timer?

Alla prima richiesta, l'indicatore potrebbe non ricevere i dati dal suo simbolo, ma per un altro timeframe solo per una ragione - la serie temporale desiderata non è stata costruita o è già stata distrutta dopo un certo tempo, quando non c'erano richieste.

Dopo una richiesta infruttuosa, basta inviare un comando al vostro grafico per aggiornarlo e terminare OnCalculate immediatamente. È garantito che OnCalculate sarà chiamato e la serie temporale sarà pronta in questo momento

Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
ChartSetSymbolPeriod - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:

Alla prima richiesta, l'indicatore potrebbe non ricevere dati dal suo simbolo ma da un altro timeframe solo per una ragione - la serie temporale richiesta non è ancora stata costruita o è già stata distrutta dopo un certo tempo, quando non c'erano richieste.

Dopo una richiesta infruttuosa, basta inviare un comando al vostro grafico per aggiornarlo e terminare OnCalculate immediatamente.
È garantito che OnCalculate sarà chiamato ed è garantito che le serie temporali necessarie saranno preparate entro questo tempo.


Alla prima chiamata dell'indicatore, il calcolo viene eseguito in loop su tutti i dati.

//Расчёт количества просчитываемых баров
int limit = rates_total-prev_calculated;
   
//Если первый запуск
if(limit > 1)
{
   //какая нибудь инициализация
   
}

//================================================================
for(int i=limit; i>=0 && !IsStopped(); i--)
{
   ...  

Se in questo ciclo ci fosse una richiesta fallita, cosa dovrebbe essere restituito in cambio?
Limit+1 su cui non ha avuto successo?
O cosa? Non capisco questo punto.

 
Roman:


Per favore, ditemi che la prima volta che l'indicatore viene chiamato, per esempio, il calcolo viene eseguito in un ciclo su tutti i dati.

E se ci fosse una richiesta fallita in questo ciclo, cosa dovrebbe essere restituito in cambio?
Limit+1 su cui non ha avuto successo?
O cosa? Non capisco questo punto.

Non puoi controllare tu stesso?