Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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*");