Errori, bug, domande - pagina 2617

 
Stanislav Korotky:

Controllate voi stessi il seguente bug. L'applicazione ha uno speciale indicatore minimalista il cui unico compito è quello di leggere lo stato del tasto "capslock". Viene visualizzato nel log e nel commento.

La sequenza delle azioni è la seguente.

  1. Compila l'indicatore, mettilo sul grafico e assicurati che venga stampato 0 ("capslock" non è abilitato).
  2. Passare a ME, abilitare il CapsLock e ricompilare. Torna al terminale. Controllate i registri per assicurarvi che il vecchio indicatore sia stato scaricato e che quello nuovo sia stato caricato. Tuttavia, lo stato "CapsLock" è ancora restituito come 0.
  3. Se rimuoviamo l'indicatore dal grafico e lo carichiamo di nuovo, il capslock viene riconosciuto normalmente - visualizza 1.

Qual è il miracolo? Quando si riavvia per compilazione alcune variabili d'ambiente non vengono pulite o cos'altro?

Il polling degli stati chiave è un'operazione specifica.

Lo stato effettivo dei tasti è dato solo per la finestra attiva. Questo è fatto di proposito in modo che la finestra inattiva non riceva interferenze quando si gestisce OnChartEvent

 

Simbolo personalizzato, uscita trovata nel registro Cosa significa questo?

2019.12.11 00:07:13.252 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.02 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.254 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.03 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.254 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.05 impostazioni del simbolo - cifre: 4, dimensione del tick: 0
2019.12.11 00:07:13254 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.06 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.255 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.07 impostazioni del simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.255 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.08 impostazioni del simbolo - cifre: 4, dimensione del segno di spunta: 0
2019.12.11 00:07:13.255 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.09 impostazioni del simbolo - cifre: 4, dimensione del segno di spunta: 0
2019.12.11 00:07:13.256 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.10 impostazioni del simbolo - cifre: 4, dimensione del tick: 0
2019.12.11 00:07:13.256 Storia 'DA6_CUSTOM' contenitore non valido 2014.01.12 impostazioni del simbolo - cifre: 4, dimensione del tick: 0


 
Slava:

Il polling dello stato delle chiavi è un'operazione specifica.

Lo stato attuale del tasto è dato solo per la finestra attiva. Questo è fatto intenzionalmente in modo che quando OnChartEvent viene elaborato, la finestra inattiva non riceve interferenze

Ci sono piani per aggiungere gli eventi di Windows a OnChartEvent? Ci sono volte - che alcuni dati provengono dall'esterno, e attraverso il dll è possibile generare immediatamente un evento per il grafico per raccogliere i dati, invece di interrogare i dati da timer. Potreste avere OnChartEvent in attesa di un evento di Windows per il suo nome.

In precedenza in MT4 ci siamo dilettati ad emulare un nuovo tick tramite PostMessage per attivare un EA su un grafico.

 
Slava:

Interrogare lo stato delle chiavi è un'operazione specifica.

Lo stato attuale del tasto è dato solo per la finestra attiva. Questo è fatto di proposito in modo che quando OnChartEvent viene elaborato, la finestra inattiva non riceve interferenze

Sì, questo è uno dei tanti casi in cui la documentazione incompleta è evidente. I dettagli vengono rivelati goccia a goccia, solo dopo che i problemi si sono verificati.

 

Forum sul trading, sistemi di trading automatico e test di strategia

Biblioteche: MultiTester

fxsaber, 2019.12.13 10:24

Controllato il contenuto dell'archivio KB ZIP. Sembra che gli sviluppatori abbiano risolto il problema, ora ci sono nuove versioni dei file nello ZIP. Solo le date dei file sono sbagliate. E i contenuti sono come dovrebbero essere.

 
Alain Verleyen:

Carattere personalizzato, uscita trovata nel diario di bordo Cosa significa questo?

2019.12.11 00:07:13.252 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.02 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.254 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.03 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.254 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.05 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.254 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.06 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.255 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.07 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.255 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.08 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.255 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.09 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.256 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.10 impostazioni simbolo - cifre: 4, dimensione tick: 0
2019.12.11 00:07:13.256 Cronologia 'DA6_CUSTOM' contenitore non valido 2014.01.12 impostazioni simbolo - cifre: 4, dimensione tick: 0


Significa che il tuo log riporta un errore: i caratteri sono ancora quattro, ma mancano ancora i tick.

 
Probabilmente si tratterà di contenitori. Ne hai bisogno?
 

Sfortunatamente, questo controllo è molto raro, ma a volte (due volte nell'ultima settimana, un centinaio di volte) fallisce. Non riesco a capire le ragioni - i dati provengono dallo stesso file/struttura (?).

   datetime time[],
            START_H=D'01.02.2018';
   double   close[];

   int t=CopyTime (_Symbol,0,TimeCurrent(),START_H,time);
   int c=CopyClose(_Symbol,0,TimeCurrent(),START_H,close);

   if(t!=c) 
    {Print("Arrays (time & close) are not equal!!!"); return(false);}
 

Si prega di controllare/confermare/verificare la situazione che cercando di aggiornare il grafico tramite il metodo raccomandatoChartSetSymbolPeriod(0, NULL, 0); il terminale si blocca per alcuni secondi (il mio è ~15). Si allega un indicatore semplificato per la riproduzione.

È stato richiesto quanto segue (prima funzionava bene): c'è una linea verticale (oggetto) nell'indicatore e dopo che l'utente la sposta l'indicatore si ricostruisce con il nuovo valore del parametro Offset preso dalla posizione della linea.

L'indicatore stesso è primitivo: visualizza la quotazione così com'è (con parametri predefiniti) in una sottofinestra. È calcolato istantaneamente.

Per risolvere il problema basta mettere l'indicatore sul grafico e spostare la linea gialla verticale indietro di qualche barra.

I messaggi sono mostrati nel registro:

- "Trascina" istantaneamente sul fatto.

- "Calc" dopo decine di secondi - viene visualizzato ad ogni OnCalculate.

Durante l'"hang" il terminale carica il core della CPU al 100%. Dopo questa sospensione, l'indicatore viene finalmente visualizzato con un nuovo offset. Ma l'intero punto era quello di visualizzare prontamente l'indicatore per le nuove impostazioni - non appena l'utente sposta la linea.

Qual è il problema? Come risolvere il problema?

Grazie in anticipo.

File:
FMA.mq5  4 kb
IndArray.mqh  5 kb
 
Denis Nikolaev:

MT5

Costruire 2280

La funzione di conteggio del numero di posizioni aperte con il simbolo e il numero magico specificati scatta ripetutamente.

cioè la prima chiamata restituisce il valore corretto, la seconda chiamata restituisce 0

Codice di esempio, per favore e descriva l'ambiente di trading. Descrivilo in modo che possa essere riprodotto.