HideYourRichess писал(а)>> Scambio con un ipod?! - Scusa per l'amor di Dio, avrei dovuto avvertirti subito. Per favore, scrivete, dichiarate qualsiasi sciocchezza - non dirò una parola. Ora che tutto è stato chiarito - lo prenderò con comprensione e pazienza. Scambio con un iPod! - aaaaaghit....
Grazie per la vostra simpatia e buona fortuna a voi, almeno non progredite
Ma l'errore avrebbe dovuto essere scoperto durante la compilazione. Trovare la causa in questi casi non è affatto facile (potreste non sapere che c'era un problema).
Il compilatore non può e non deve tenere traccia dei valori delle variabili per definizione.
E non è nemmeno chiaro perché tutto funzionava senza problemi nel modulo di vendita.
Perché un solo errore è più veloce da elaborare che due o più.
No, è un'altra cosa - ti ho detto che quando era rimasto solo il modulo vendite non c'era nessun problema, ma quando ho tolto le vendite e lasciato solo gli acquisti c'era un problema. La differenza era molto evidente, ed entrambi i moduli sono assolutamente identici, tranne che per alcune operazioni cambiate al contrario (>/<, High[]/Low[] ecc.).
Forse, non è la definizione delle variabili o degli array. Negli indicatori MT4, dovreste sorvegliare con cura e attenzione i momenti in cui iniziate ad aggiungere linee programmaticamente, e cambiare i nomi degli array riflessi. A volte c'è confusione e la linea può non essere riflessa o il calcolo può riagganciare, come in questo caso. C'è solo una cura, come nella barzelletta "Basta uscire e rientrare e tutto funzionerà".
Ho un'altra domanda. Non posso eseguire il debugger MQL5 sugli indicatori. Funziona su script e Expert Advisors ma non si ferma su nessun indicatore e non può passare attraverso i passi. Non sono sicuro che ci siano particolarità non documentate, se le conoscete, fatemelo sapere.
fwiq >> : Ho un'altra domanda. Non posso eseguire il debugger MQL5 sugli indicatori. Tutto funziona su script e Expert Advisors, ma non si ferma su nessun indicatore e non può passare attraverso i passi. Non ho lavorato con questo tipo di cose, ho iniziato a lavorare con questo tipo di cose.
Una settimana fa i gestori hanno scritto che questa era l'idea e il debugger sugli indici di debugger funzionerà più tardi
Si prega di aggiungere alle funzioni ObjectFind e ObjectDelete la possibilità di lavorare con maschere come : *,?
Inlinea di principio, ovviamente, si può usare solo ObjectFind .Se è necessario mantenere la compatibilità all'indietro, allora la prima funzione dovrebbe essere lasciata invariata, e l'insieme dovrebbe essere integrato con, per esempio ,ObjectFindM (ricerca multipla).
Esempio: abbiamo bisogno di trovare etichette di testo che iniziano con "Signal".
Attuazione: restituisce il nome del primo oggetto trovato (o l'handle, ma questo richiede altre funzioni che possano gestirlo).
Notazione: ObjectFindM("Signal*");
Esempio: dovete rimuovere dalla finestra "0" solo le etichette di testo che iniziano con "Signal".
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Scambio con un ipod?! - Scusa per l'amor di Dio, avrei dovuto avvertirti subito. Per favore, scrivete, dichiarate qualsiasi sciocchezza - non dirò una parola. Ora che tutto è stato chiarito - lo prenderò con comprensione e pazienza. Scambio con un iPod! - aaaaaghit....
Grazie per la vostra simpatia e buona fortuna a voi, almeno non progredite
Ho appena riscontrato un problema in MT4, per favore assicurati che questo non accada in MT5 (non ho controllato).
All'inizio (prima di init) gli array erano impostati:
xsell[3];
xbuy[3];
Prima una variabile esterna:
extern int Max_Array_Size = 13;
Nel ciclo start():
ArrayResize(xsell, Max_Array_Size);
ArrayResize(xbuy, Max_Array_Size);
E poi il ciclo for():
for(int kss= Max_Array_Size; kss>0; kss--) {
xbuy[kss] = . . . ;
. . .
}
Lo stesso schema è stato usato sia nel modulo delle vendite(indicatore personalizzato) che in quello degli acquisti - cioè le variabili sono diverse,
ma il principio è lo stesso. All'inizio ho scritto tutto per le vendite, l'ho compilato - tutto va bene, nessun problema. Poi ho copiato
La compilazione ha richiesto molto più tempo e il passaggio tra
Anche la commutazione temporale ha richiesto molto più tempo. Vendite disabili - non è cambiato nulla, la frenata.
Ha lasciato solo le vendite - corre veloce. Il compilatore non si è lamentato, ha solo richiesto molto più tempo per l'esecuzione.
Ho ricontrollato tutto ciò che mi sembrava sospetto, ho riscritto alcune parti in acquisti - lags!...
Si è scoperto che il problema era nella dimensione dell'array: 13 => 0-12, e nel ciclo for stavo cercando di alimentare anche 13!
Dopo la correzione:
ArrayResize(xsell, Max_Array_Size+1);
ArrayResize(xbuy, Max_Array_Size+1);
sia le vendite che gli acquisti sono stati compilati come dovrebbero essere e la commutazione temporale è diventata più veloce.
Ma l'errore sarebbe dovuto comparire durante la compilazione. Trovare la causa in questi casi
Non è affatto facile trovare la ragione (potreste anche non essere consapevoli del problema).
E non è chiaro perché tutto funzionava bene nel modulo di vendita.
Ma l'errore avrebbe dovuto essere scoperto durante la compilazione. Trovare la causa in questi casi non è affatto facile (potreste non sapere che c'era un problema).
Il compilatore non può e non deve tenere traccia dei valori delle variabili per definizione.
E non è nemmeno chiaro perché tutto funzionava senza problemi nel modulo di vendita.
Perché un solo errore è più veloce da elaborare che due o più.
Il compilatore non può e non deve tenere traccia dei valori delle variabili per definizione.
È brutto se lo è davvero.
Dopo tutto, è praticamente lo stesso che accedere a una variabile che non è stata predefinita.
Perché un solo errore è più veloce da gestire che due o più.
No, è un'altra cosa - ti ho detto che quando era rimasto solo il modulo di vendita non c'era nessun problema,
e quando ho rimosso le vendite e lasciato solo gli acquisti, c'è stato un problema. La differenza era molto evidente, anche se entrambi i moduli
sono assolutamente identici, tranne che per alcune operazioni cambiate al contrario (>/<, High[]/Low[] ecc.).
No, è un'altra cosa - ti ho detto che quando era rimasto solo il modulo vendite non c'era nessun problema, ma quando ho tolto le vendite e lasciato solo gli acquisti c'era un problema. La differenza era molto evidente, ed entrambi i moduli sono assolutamente identici, tranne che per alcune operazioni cambiate al contrario (>/<, High[]/Low[] ecc.).
Forse, non è la definizione delle variabili o degli array. Negli indicatori MT4, dovreste sorvegliare con cura e attenzione i momenti in cui iniziate ad aggiungere linee programmaticamente, e cambiare i nomi degli array riflessi. A volte c'è confusione e la linea può non essere riflessa o il calcolo può riagganciare, come in questo caso. C'è solo una cura, come nella barzelletta "Basta uscire e rientrare e tutto funzionerà".
Se letteralmente, anche il sovraccarico non ha aiutato.
Comunque, è stata la distinzione tra vendere e comprare che mi ha aiutato a capire che c'era un problema...
La felicità è stata una benedizione sotto mentite spoglie :)
Ho un'altra domanda. Non posso eseguire il debugger MQL5 sugli indicatori. Tutto funziona su script e Expert Advisors, ma non si ferma su nessun indicatore e non può passare attraverso i passi. Non ho lavorato con questo tipo di cose, ho iniziato a lavorare con questo tipo di cose.
Una settimana fa i gestori hanno scritto che questa era l'idea e il debugger sugli indici di debugger funzionerà più tardi
In MT4 c'erano sempre errori perché Ask o Bid o altro (Close, Open, ecc.) raccolti dopo la virgola
una quantità enorme di numeri (come 1,432311111111111111111111). Di conseguenza, abbiamo dovuto aggiungere "NormalizeDouble(Bid,Digits);".
E questo può essere risolto una volta a livello di MT.
Si prega di aggiungere alle funzioni ObjectFind e ObjectDelete la possibilità di lavorare con maschere come : *,?
Inlinea di principio, ovviamente, si può usare solo ObjectFind .Se è necessario mantenere la compatibilità all'indietro, allora la prima funzione dovrebbe essere lasciata invariata, e l'insieme dovrebbe essere integrato con, per esempio ,ObjectFindM (ricerca multipla).
Esempio: abbiamo bisogno di trovare etichette di testo che iniziano con "Signal".
Attuazione: restituisce il nome del primo oggetto trovato (o l'handle, ma questo richiede altre funzioni che possano gestirlo).
Notazione: ObjectFindM("Signal*");
Esempio: dovete rimuovere dalla finestra "0" solo le etichette di testo che iniziano con "Signal".
Notazione: ObjectDelete(0,"Signal*");