Errori, bug, domande - pagina 1279

 

Quando si ottiene la storia dei tick con CopyTicks(), vengono restituiti i tick della precedente sessione di lavoro del terminale, il che contraddice la descrizione della funzione:

MQL5: Добавлена функция работы с тиковой историей CopyTicks. Функция позволяет получить массив тиков, накопленных терминалом за текущую рабочую сессию. Глубина получаемых тиков ограничена последними 2 000.

Domanda agli sviluppatori. Sarà riparato? Ed è possibile fare in modo che il terminale trasferisca gli ultimi N tick dal server MQ (o broker) quando si avvia, in modo che non debba aspettare la storia accumulata? È solo improbabile che qualcuno abbia bisogno di un'anamnesi delle zecche per alcune zecche N sconosciute in passato. Servicedesk#1162481

 

Ho rimosso la casella di controllo "nuovi screenshot" nelle mie impostazioni di privacy, cioè non ci dovrebbero essere post nel mio feed quando vengono pubblicati.

Il mio feed infatti non contiene questo messaggio. Tuttavia, il messaggio sulla pubblicazione di nuovi screenshot è nel newsfeed dei miei amici.

ZS: se dovesse essere così, allora si scopre che questa impostazione non ha nulla a che fare con la privacy in assoluto )

 
sanyooooook:

Ho rimosso la casella di controllo "nuovi screenshot" nelle mie impostazioni di privacy, cioè non ci dovrebbero essere post nel mio feed quando vengono pubblicati.

Il mio feed infatti non contiene questo messaggio. Tuttavia, il messaggio sulla pubblicazione di nuovi screenshot è nel newsfeed dei miei amici.

ZS: se deve essere così, allora si scopre che questa impostazione non ha niente a che fare con la privacy)

Grazie per il messaggio,

I post sui tuoi screenshot non dovrebbero essere nel feed dei tuoi amici. L'errore sarà risolto a breve.

 
Aperto quattro terminali MT5, hanno iniziato ad aggiornare a b.1079. Caricato l'aggiornamento normalmente, è andato a riavviare normalmente. Solo la metà di loro è riuscita ad uscire dal riavvio, ed è stato per caso.
Il motivo era proprio questo aggiornamento. Di seguito è riportato un grafico del processo di aggiornamento di un terminale MT5 con un sistema di trading, file di swap prima e dopo l'aggiornamento.

Durante l'aggiornamento a b.1085 tutto è rimasto uguale.

Che cosa hai dovuto fare con il terminale per avere un terminale che ha sporcato il file di swap per 2 Gb?

Non ci sono indicatori "pesanti" nel sistema. Il più "pesante" impiega solo 7 µsec per caricarsi, due, - 5, uno, - 4, gli altri, - 1 µsec o meno.

Per confronto, l'indicatore JMA di CodeBase richiede 110 µsec sul mio computer, ma non è usato nel sistema.


Così l'MT5 aggiornato ha istantaneamente seppellito il mio sistema di trading, - impossibile da lavorare anche in un solo terminale, - e io l'ho seppellito di conseguenza.

Quando MT5 ha una piscina, un negozio e una latrina in una sola bottiglia, era destino che accadesse.

La mostrificazione della buona MT5 è iniziata molto tempo fa. Quando la quantità di spazzatura nelle versioni precedenti di MT5 si è avvicinata a 1 Gb, mi sono preoccupato e contemporaneamente ho passato il sistema completamente alla piattaforma MT4. Si è rivelato che non è stato inutile.

Il sistema analizza simultaneamente 8 TF, tre dei quali possono essere visti sul grafico. I segnali commerciali principali del sistema sono generati sulla base di misure strumentali di

rapporto tra domanda e offerta, quindi sono oggettivi.

Sotto - 5 terminali MT4 sono aperti simultaneamente (per diverse coppie di valute) con lo stesso sistema di trading e non ci sono problemi, come visto finora.



 
s2101:
Aperto quattro terminali MT5, hanno iniziato ad aggiornare a b.1079. Caricato l'aggiornamento normalmente, è andato a riavviare normalmente. Solo la metà di loro è riuscita ad uscire dal riavvio, ed è stato per caso.
Il motivo era proprio questo aggiornamento. Il grafico qui sotto mostra il processo di aggiornamento di un terminale MT5 con un sistema di trading, file di swap prima e dopo l'aggiornamento.

Perché hai nascosto la memoria fisica dallo screenshot ma non hai dimenticato il file di swap?

Inoltre, nell'affrontare una domanda così importante, hai dimenticato di allegare uno screenshot della sezione processi, dove si può vedere sia il consumo effettivo di memoria per ogni processo che il numero di thread in esecuzione.

 

Per quanto ho capito, MT5 1085 ha una condizione di gara per impostare un commento (Comment).

Il punto è questo: c'è un indicatore in una finestra separata con un codice:

int OnInit(){
   Comment("AAAAAAAAAAAAAAAAAAAAAAAAA");
}

void OnDeinit(const int reason) {
   Comment("");
}

Se eseguiamo 2 istanze dell'indicatore sullo stesso grafico e cambiamo il TF, cosa vediamo inComment?
Al 90% sarà "". (se diverse code in diversi thread con diversa priorità per impostareCommento da sottoOnInit eOnDeinit....)

 

Errore di compilazione

template<typename T>
string ETS( T t ) { return ( typename( t ) == "int" ? "OK" : ::EnumToString( t ) ); }
enum ENUM {     ENUM__ };
void OnStart()
{
        ENUM i1 = ENUM__;       Print( ETS( i1 )); //нормально
        int  i2 = 0;            Print( ETS( i2 )); //ошибка компиляции
}
Perché calcolare ::EnumToString( int ) nel secondo caso se il tipo è noto al momento della compilazione?
 
ALXIMIKS:

Al 90% sarà "".

Cosa ci si aspettava? Uno scrive, l'altro cancella.
 
A100:
Cosa ci si aspettava? Uno scrive, l'altro cancella.
Hai dimenticato la seconda scrittura.

Ci sono due scritture e due cancellazioni. Sono molto probabilmente asincroni.
La cancellazione dovrebbe avvenire prima della scrittura, ma ahimè non è così...
 

Il compilatore non riesce a rilevare l'errore (cosa che fa - almeno il secondo #endif manca), con il risultato di non rilevare errori più significativi

#property library
#define __MQL5
#ifdef  __MQL5
#ifndef __MQL5
#else
#else
#endif


Motivazione: