Errori, bug, domande - pagina 446

 
voix_kas:

Codice di errore: 4756. Potete vederlo nello screenshot.

1. Ancora una volta ripeto la mia domanda - Elenco dei simboli che si suppone siano selezionati selettivamente (cioè per tutti i simboli che stanno per scambiare mult è stato eseguito il comando SymbolSelect con il secondo parametro true)?

Consiglio nel blocco di inizializzazione di selezionare tutti i simboli che sono richiesti da SymbolSelect e controllare questo errore dopo questa modifica.

2. Agli sviluppatori:

a) Perché l'elenco dei simboli terminali dovrebbe includere esplicitamente i simboli che non sono stati selezionati usando SymbolSelect (supponendo che non siano state eseguite azioni su di essi, tranne che per raccogliere alcune informazioni)?

b) non pensate che cose apparentemente innocue come SymbolsTotal(false) e SymbolName(index,false) portino alla visualizzazione esplicita dei simboli nella finestra di visualizzazione.

Per quanto ho capito, dovrebbe essere così - No SymbolSeleziona nessun simbolo tra quelli visualizzati in MarketWatch.

c) Per quanto ho capito, il tester dovrebbe scaricare tutti i simboli che vengono interrogati, e visualizzare solo quelli che sono selezionati in SymbolSelect o per i quali l'utente cerca di ottenere i prezzi o qualsiasi altra informazione rilevante.

Per esempio, se sto cercando di determinare se un simbolo è sincronizzato o quanto è profonda la sua storia sul server, perché dovrebbe essere immediatamente inserito in MarketWatch con il segno di selezione?

 
voix_kas:

E come faccio a prendere il codice di errore nel punto che indicate? Registro l'errore nell'ultima riga del codice di cui sopra.

Questo errore non appare se il seguente termine viene aggiunto subito prima di questo codice:

Per esempio così:

double price=SymbolInfoDouble(Instrumet, SYMBOL_ASK);
if(price==0.0)
  {
   Print("Ай-яй-яй. Ошибка ",GetLastError());
   return(false);
  }
TradeRequest.price = price;
 
Interesting:

2. La domanda agli sviluppatori - Perché i simboli che non sono stati selezionati usando SymbolSelect (supponendo che non siano state eseguite azioni su di essi oltre alla raccolta di certe informazioni) entrano nella lista dei simboli terminali in una forma esplicita (si può vedere nello screenshot qui sopra)?

Il tester MT5 utilizza una simulazione molto accurata delle condizioni di trading, compresa la più accurata conversione dei profitti nella valuta di equilibrio.

Significa che quando si lavora con i cross, dobbiamo simulare la coppia di valute di base per ricalcolare il profitto. Cioè, quando si lavora su alcuni strumenti (croci) c'è un doppio volume di modellazione, in modo che in qualsiasi secondo il calcolo sia assolutamente preciso e ripetibile.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

Interessante
Naturalmente. Questo codice viene prima di tutte le azioni successive:

if (SymbolInfoInteger(Instrumet, SYMBOL_SELECT) || SymbolSelect(Instrumet, true))
{
  ...
}

Se la condizione non è soddisfatta, non viene eseguita nessuna ulteriore azione su questo strumento.

A proposito di"SymbolSelect " durante l'inizializzazione... Quindipensi che la prima chiamata ( SymbolSelect(Instrumet, true) ) non carichi lo strumento?

È solo che prima passo attraverso i simboli di presenza (inizializzare). E poi in OnTick|OnTimer seleziono esplicitamente se lo strumento non era selezionato prima.

zioVic

Grazie. Ecco come sto gestendo questo errore.
Se puoi, per favore, spiega cosa fa apparire il prezzo nullo? E può accadere nella vita reale (cioè in tempo reale, non solo durante i test)?

 
voix_kas:

Interessante
Naturalmente. Questo codice viene prima di tutte le azioni successive:

Se la condizione non è soddisfatta, non viene eseguita nessuna ulteriore azione su questo strumento.

A proposito di"SymbolSelect" durante l'inizializzazione... Quindipensi che la prima chiamata ( SymbolSelect(Instrumet, true) ) non carichi lo strumento?

È solo che prima passo attraverso i simboli di presenza (inizializzare). E poi in OnTick|OnTimer faccio una selezione esplicita se lo strumento non è stato precedentemente selezionato.


È strano, o non capisco qualcosa o c'è del codice da qualche parte che non funziona come mi aspetto.

Per quanto ne so SymbolSelect è sufficiente per essere usato una volta, nel blocco di inizializzazione (è meglio controllare il risultato).

Nel mio tester, ho semplicemente formato MarketWatch da un array preparato in via preliminare come questo

  //Forming list of symbols
  for(int f=0;f<ArraySize(ArrSymbolsEA);f++)
  {
  SymbolSelect(ArrSymbolsEA[f],true);
  }

Di solito è sufficiente rendere tutti i simboli disponibili per il trading nel tester.

Ma, in questo caso, se manca un simbolo nel giornale, ci sarà un errore come questo

2011.07.06 18:47:57     symbol NZDUSD does not exist

Se tutto funziona correttamente, la finestra del tester dovrebbe apparire così


 
voix_kas:

Grazie. Questo è esattamente il modo in cui sto aggirando questo errore ora.
Potresti spiegare cosa provoca il prezzo zero? E questo può accadere nella vita reale (leggi, in modalità "tempo reale", non solo durante i test)?


Qual è il codice di errore?
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 

Agli sviluppatori

Stavo per scrivere questo in SD, ma ho cambiato idea. Si prega di aggiungere la funzione bool SymbolExists(nome) / bool SymbolIsExists(nome)

Scopo: determina se un simbolo specificato si trova sul server. In caso di successo restituisce true.

Solo in questo modo, quel simbolo non sarà visualizzato in MarketWatch (il principio è lo stesso di SymbolIsSynchronized).

Tutto questo permetterà di sbarazzarsi di tali problemi

2011.07.06 18:47:57     symbol NZDUSD does not exist
 
uncleVic:
Qual è il codice di errore?

Per quanto riguarda il tester di strategia, vengono generati due errori allo stesso tempo. Solo l'ultimo può essere intercettato.
Come faccio a saperlo? Ho dato il codice sopra. Dove devo mettere le informazioni sul codice di errore?

 
Interesting:

È strano, o non capisco qualcosa o c'è del codice da qualche parte che non funziona come penso.

...

Se tutto ha funzionato come previsto, la finestra del tester dovrebbe apparire così

Si prega di eseguire il tester con la vostra multicurrency dal 2011.01.03 00:00:00.

Fino al 2011.01.03 00 :59:59 solo 3 coppie di valute sono disponibili (che sono visualizzate in marketwatch, si può vedere nella schermata). A partire da 2011.01.0301:00:00 - tutto è normale.

P.S.

Stiamo parlando di conti demo MQ (per prepararsi al campionato).

 
voix_kas:

Si prega di eseguire il tester con la vostra multicurrency dal 2011.01.03 00:00:00.

Ho fino al 2011.01.03 00 :59:59 solo 3 coppie di valute sono disponibili (che sono visualizzate in marketwatch, si può vedere sullo screenshot). A partire da 2011.01.0301:00:00 - tutto è normale.

P.S.

Stiamo parlando di conti demo MQ (per prepararsi al campionato).

La storia per simboli è sincronizzata?