Errori, bug, domande - pagina 1631

 
fxsaber:
mt5, 1375, è successo dopo l'aggiornamento. vinhp32

Aggiornamenti su cosa e su cosa? Per favore, se state segnalando un possibile difetto - non risparmiate il vostro inchiostro e dichiarate le circostanze nel modo più dettagliato possibile.

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

Errori, bug, domande

Karputov Vladimir, 2016.08.07 14:11

  1. Qual è la build di MetaEditor?
  2. Lo fai funzionare da MT4 o MT5?
  3. Hai già aperto dei file in questo MetaEditor?
  4. Qual è la situazione dei diritti del file di MetaEditor?
  5. È successo di recente o subito dopo l'installazione del terminale?
  6. In quale sistema operativo lo avvii (Windows, sotto Wine)?

 

Errore nell'esecuzione

Sequenza delle operazioni:

1. Esegui l'esperto Test.ex5, che visualizza lo stesso tipo di testo sul grafico riga per riga finché non si verifica un errore

2. Sullo stesso grafico esegui lo script semplificato che dimostra l'errore

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

Otteniamo il risultato

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... e dovrebbe essere "OK"

File:
Test.ex5  13 kb
 
A100:

Errore nell'esecuzione

Sequenza delle operazioni:

1. Esegui l'esperto Test.ex5, che visualizza lo stesso tipo di testo sul grafico riga per riga finché non si verifica un errore

2. Sullo stesso grafico esegui lo script semplificato che dimostra l'errore

Otteniamo il risultato

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... e dovrebbe essere "OK"

Non vedo un errore, tra le chiamate ChartGetString, il commento del grafico è stato cambiato, ecco perché c'è una differenza di 16 caratteri tra le linee, solo la dimensione della linea aggiunta al commento del grafico.
 
Ilyas:
Non vedo nessun errore, tra le chiamate ChartGetString, il commento del grafico è stato cambiato, ecco perché c'è una differenza di 16 caratteri tra le linee, solo per la dimensione della linea aggiunta al commento del grafico.

L'esperto è scaricato (cioè non può più influenzare il grafico). Caricate lo script di test (10 righe). Domanda: quale delle linee date cambia il commento del grafico?

Non c'è codice tra le chiamate di ::ChartGetString()

File:
Test.ex5  6 kb
 

Cosa c'è di sbagliato nella versione mobile del forum?

Quando premo "Rispondi", appare una citazione con coccodrilli di codice htlm. E non si può togliere il cursore.

Android 2.3.4


 
A100:

L'esperto è scaricato (cioè non può più influenzare il grafico). Caricate lo script di test (10 righe). Domanda: quale delle linee date cambia il commento del grafico?

Non c'è codice tra le chiamate di ::ChartGetString()

Per azione (per le operazioni del grafico sono sincrone/sequenziali, EA e script lavorano nei loro propri thread):

  1. lo script chiama il primo ChartGetString
  2. l'Expert Advisor chiama ChartSetString
  3. l'Expert Advisor termina
  4. lo script chiama il secondo ChartGetString
 
Ilyas:
Per azioni (per un grafico, le operazioni sono sincrone/sequenziali, Expert Advisor e script lavorano nei loro thread):

  1. lo script chiama prima ChartGetString
  2. l'esperto chiama ChartSetString
  3. Finiture esperte
  4. lo script chiama il secondo ChartGetString

L'esperto Test.ex5 non può chiamare nulla (punto 2), poiché quando lo script viene eseguito, è già stato scaricato in precedenza,

cioè il passo 3 è ovviamente prima del passo 1

Ecco il risultato dello script Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...e dovrebbe essere "OK".

 
A100:

L'esperto Test.ex5 non può chiamare nulla (punto 2), perché quando lo script viene eseguito, è già stato scaricato in precedenza,

cioè il passo 3 è ovviamente prima del passo 1

Ecco il risultato dello script Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...e dovrebbe essere "OK".

ExpertRemove non rimuove l'Expert Advisor dal grafico istantaneamente, ma solo al completamento di OnTick. E non è analogo alla funzione exit()

La citazione nel log illustra solo il fatto di chiamare la funzione ExpertRemove(). Il fatto di rimuovere l'Expert Advisor si rifletterà nel log del terminale del cliente come "esperto rimosso".

Mostra il codice sorgente dell'Expert Advisor

 
Slawa:

La citazione nel log illustra solo il fatto di chiamare la funzione ExpertRemove(). L'Expert Advisor sarà rimosso dal log del terminale del cliente come "expert removed".

Sequenza dettagliata di azioni:

  1. Aprire un nuovo grafico
  2. Esegui Test.ex5 sul grafico dell'Expert Advisor (in pochi secondi apparirà il seguente messaggio nella scheda Experts: 2016.08.08 15:40:47.267 Test (EURUSD,M15) Funzione ExpertRemove() chiamata' e l'EA viene scaricato dal grafico
  3. Assicuratevi che la scheda Log visualizzi un messaggio della seguente forma: '2016.08.08 15:40:47.286 Esperto esperto Test (EURUSD,M15) rimosso'
  4. Esegui lo script Script1.ex5 sullo stesso grafico (il nome dello script qui non corrisponde al nome dell'Expert Advisor)

Come risultato, un messaggio della seguente forma apparirà nella scheda Experts: '2016.08.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'
Dovrebbe essere:'2016.08.08 15:52:43.173 Script1 (EURUSD,M15) OK'

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
File:
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

Dovrebbe essere:'2016.08.08 15:52:43.173 Script1 (EURUSD,M15) OK'

Questo può essere facilmente visto sostituendo la linea (*) in Script1.mq5 con

               text1 = ChartGetString( 0, CHART_COMMENT );
Motivazione: