Errori, bug, domande - pagina 439

 
Aiuto per favore, sto facendo un EA in MEditor5, compilando e mettendo su un grafico, ed esso (l'EA) si blocca, cioè, l'icona appare e scompare.
 
cokfx:
Aiuto, plz fare un EA nel Wizard in MEditor5, compilare, mettere su un grafico ed esso (l'EA) si apre, cioè, l'icona appare e scompare.

Su quale simbolo e su quale TF impostiamo il gufo? Cosa c'è scritto nel registro?
 
Renat:

Significa che non c'è un errore del tester o dell'ambiente di esecuzione MQL5, ma c'è un errore esplicito del programmatore.

Il programmatore ha rilevato un comportamento inaspettato del programma, ha rilevato l'essenza di questo comportamento, lo ha riprodotto esplicitamente, ha dato un semplice esempio portandolo all'assurdo(Sonno con valori negativi) e il programmatore dice che è un errore del programmatore :) Anche se "errore del programmatore" significa, per esempio, una dichiarazione esplicita che la funzione Sleep nel tester non funziona.

Dalle spiegazioni di cui sopra risulta che gli sviluppatori credono che sia accettabile usare valori negativi nella funzione Sleep(). Anche se dalla descrizione della funzione ("...ritarda l'esecuzione dell'Expert Advisor o dello script corrente per un particolare intervallo") non si può supporre che l'intervallo di ritardo possa essere calcolato con numeri negativi. Parlando di errori, considerate la mia affermazione che il terminale avrebbe dovuto impedire l'uso di valori negativi nella funzione Sleep() come tale.

 
Yedelkin:

Il programmatore ha rilevato un comportamento inaspettato del programma, ha rilevato l'essenza di questo comportamento, lo ha riprodotto esplicitamente, ha dato un semplice esempio portandolo all'assurdo(Sonno con valori negativi) e il programmatore dice che è un errore del programmatore :) Anche se "errore del programmatore" significa, per esempio, una dichiarazione esplicita che la funzione Sleep nel tester non funziona.

Dalle spiegazioni di cui sopra risulta che gli sviluppatori credono che sia accettabile usare valori negativi nella funzione Sleep(). Anche se dalla descrizione della funzione ("...ritarda l'esecuzione dell'Expert Advisor o dello script corrente per un particolare intervallo") non si può supporre che l'intervallo di ritardo possa essere calcolato con numeri negativi. Parlando di errori, considerate la mia affermazione che il terminale avrebbe dovuto impedire l'uso di valori negativi nella funzione Sleep() come tale.

E probabilmente vi aspettavate che sareste usciti da Sleep prima di entrarci se il ritardo era negativo?
 

Yedelkin, come immagini che il compilatore controlli i parametri delle funzioni? E ci sono decine di queste funzioni che devono avere i valori dei parametri sotto controllo.

C'è una delle due cose qui: o la velocità di compilazione o il controllo paranoico totale.

Abbiamo scelto il primo modo. In questo caso il sottosistema runtime non salta i parametri sbagliati in fase di esecuzione generando un codice di errore, che possiamo ottenere utilizzando la funzione GetLastError.

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
Saresti così gentile da calcolare il risultato del tuo valore negativo, metterlo in relazione con 32 bit di int, poi leggere l'overflow aritmetico e trovare i tuoi 17 giorni.

Benvenuti nel mondo della vera programmazione.
 
uncleVic:
Si sarà aspettato di uscire da Sleep prima di entrarci con un valore negativo?

Il presupposto delle aspettative è sbagliato.

Lavorare con valori negativi non era affatto previsto. Vedi il mio post sopra:"dalla descrizione della funzione ("...ritarda l'esecuzione dell'EA o dello script corrente per un certo intervallo") è difficile supporre che l'intervallo di ritardo possa essere contato in numeri negativi". E non si tratta di quello che "potrei aspettarmi", ma del fatto che, di fatto, la funzione SLeep permette di lavorare con valori negativi. Quando questo è stato scoperto - ha inviato un messaggio. Se considerate accettabile tale funzionamento della funzione Sleep(), rimarrà tale.

 
Yedelkin:

ma che, in effetti, la funzione SLeep permette di lavorare con valori negativi.

Cosa suggerisce? Per interrompere il programma in caso di emergenza?
 
Yedelkin:

Il presupposto delle aspettative è sbagliato.

Non è stato pensato per funzionare con valori negativi. Vedi il mio post sopra:"dalla descrizione della funzione ("...ritarda l'esecuzione dell'EA o dello script corrente per un certo intervallo") è difficile supporre che l'intervallo di ritardo possa essere contato in numeri negativi". E non si tratta di quello che "potrei aspettarmi", ma del fatto che, di fatto, la funzione SLeep permette di lavorare con valori negativi. Quando questo è stato scoperto - ha inviato un messaggio. Se ritenete che tale operazione di Sleep() sia accettabile, rimane tale.

Naturalmente, la rappresentazione interna è senza segno.

Potete cambiare il tipo di parametro in uint.

 
stringo:

Yedelkin, come immagini che il compilatore controlli i parametri delle funzioni? E ci sono decine di queste funzioni che devono avere i valori dei parametri sotto controllo.

Qui ci sono due cose: o la velocità di compilazione o il totale controllo paranoico.

Abbiamo scelto il primo modo. In questo caso il sottosistema di runtime non salta i parametri sbagliati nella fase di esecuzione, generando un codice di errore, che possiamo ottenere utilizzando la funzione GetLastError.

Sì signori, sono sempre dalla vostra parte! :) E io conosco nella programmazione solo una piccola parte di quello che sapete (sono guidato solo da MQL5 Reference). Ma se vedo alcuni punti che non sono chiari per me personalmente - lo scrivo. Cerco di dare un esempio vivido di "punti poco chiari", se possibile. Di conseguenza, se si pensa che "l'allarme è falso", allora si scopre che o ho frainteso i materiali di riferimento, o i materiali di riferimento non riflettono tutte le informazioni necessarie per capire il momento. In questo caso, mi basterebbe avere un'indicazione (avvertimento) nella sezione "Funzione Sleep" che (1) "il compilatore non controlla il valore del parametro della funzione, quindi la funzione può funzionare con valori negativi" e (2) "la funzione Sleep() è pienamente supportata dal tester".

Non ho idea di come funzioni il compilatore. Procedendo dal paradigma descritto del lavoro del compilatore, ho un impulso: riflettere nelle note di decine di funzioni che i valori dei loro parametri non sono controllati dal terminale.

Motivazione: