Errori, bug, domande - pagina 1661
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
È un bug o una domanda, ma qualcosa di incomprensibile ...sta succedendo nel tester e nel debugger... Tutto va bene su EURUSD, ma c'è un problema con USDJPY...
Parte del codice
Quello che mi interessa nel codice è chiaro dagli screenshot... È segnato nel codice.
C'è UN ordine Sell con una perdita di 7.39, ma il codice mostra una perdita di solo 0.93
La freccia verde nel seguente screenshot mostra che il debug è fermato a questa linea...
Cioè, la variabile sl è già stata impostata su PositionGetDouble(POSITION_PROFIT)
DOMANDA: Perché sta succedendo questo? È un bug o un modello, una caratteristica speciale del tester/debugger di mql5?
La variabile sp è stata introdotta un po' più tardi, inizialmente veniva controllata la variabile sellProfit, che veniva impostata a zero quando la funzione veniva inserita.
Che sia un bug o una domanda, ma c'è qualcosa di poco chiaro... succede nel tester e nel debug... Tutto va bene su EURUSD, ma c'è un problema su USDJPY...
C'era un problema nella costruzione di una dozzina di anni prima, quando il visualizzatore mostrava il futuro di un tick, mentre MQL funzionava normalmente - il futuro non veniva visto.
Prova a confrontare PositionGetDouble(POSITION_PROFIT) al prossimo tick. Se coincide con quello che il visualizzatore ha mostrato prima - il problema è lì. Slawa ha dato una spiegazione e ha promesso di correggerla.
Se no - un altro bug in questo caso.
Su una build di una dozzina o due prima di quella attuale, c'era un problema quando il visualizzatore mostrava il futuro su un tick, mentre MQL funzionava bene - il futuro non veniva visto.
Prova a confrontare PositionGetDouble(POSITION_PROFIT) al prossimo tick. Se coincide con ciò che il visualizzatore ha mostrato prima - il problema è lì. Slawa ha dato una spiegazione e ha promesso di correggerla.
Se no - un altro bug in questo caso.
Forse sì, ma il codice non prevede un controllo sul prossimo tick. Solo una volta al momento dell'apertura di un nuovo bar. E che garanzia c'è che questi valori siano del prossimo tick? Nessuno... Ho provato di nuovo; la perdita è di 2,55, ma il debugger mostra ancora 0,93.
Ma, incrociamo le dita... il tester 5 è molto meglio del tester 4... Solo glitch e funzionamento inadeguato... Come si può fare il debug di un Expert Advisor con questi difetti? In che altro modo la gente fa l'ottimizzazione? Infatti, l'ottimizzazione è un auto-inganno, e con tali giochetti, è un auto-inganno al grado di mentire 8.
Dovrò testarlo su una demo... per settimane...
Solo perché il visualizzatore mostra delle sciocchezze non significa che il tester stesso sia sbagliato. Al tester non interessano i problemi di visualizzazione, per niente.
Usa TickValue per calcolare la dimensione del profitto e confrontarla con POSITION_PROFIT. Vedrete che tutto è uguale. La visualizzazione sembra essere un bug.
Solo perché il visualizzatore mostra delle sciocchezze non significa che il tester stesso sia sbagliato. Al tester non interessano i problemi di visualizzazione, per niente.
Usa TickValue per calcolare la dimensione del profitto e confrontarla con POSITION_PROFIT. Vedrete che tutto è uguale. La visualizzazione sembra essere un bug.
Sì, l'ho ricalcolato prima di postare la domanda. Sembra essere vero, si può ricalcolare dagli screenshot. Non ho iniziato a controllare per un motivo. La perdita è calcolata in base alla dimensione del lotto che porterà al profitto previsto alla chiusura del take profit. Tutto è stato calcolato correttamente su EURUSD, ma improvvisamente le perdite non sono coperte su USDJPY... Ho iniziato a controllare la formula... e ha raggiunto questo bug. Si scopre che il visualizzatore non ha nulla a che fare con questo.
Sì, l'ho contato prima di postare la domanda. Sembra essere vero, si può ricalcolare dagli screenshot. Non ho iniziato a controllare per un motivo. La perdita è calcolata in base alla dimensione del lotto al quale il profitto previsto sarà chiuso all'incasso. Tutto è stato calcolato correttamente su EURUSD, ma improvvisamente le perdite non sono coperte su USDJPY... Ho iniziato a controllare la formula... e ha raggiunto questo bug. Si scopre che il visualizzatore non ha niente a che vedere con questo.
Errore nella compilazione di Script1.mq5
Errore #1. La chiamata h è inequivocabile per firma qui.
Errore #2. In A::f1() la chiamata di h( g ) nel senso di g - può sembrare ambigua, ma d'altra parte in A::f2() il compilatore d'altra parte non fa domande inutili riguardo a g() (e giustamente - almeno all'inizio i problemi esistenti di includere il file header con la dichiarazione della funzione nel modulo con la sua implementazione e ulteriore uso in questo modulo sono stati risolti molto tempo fa). E inoltre, è difficile riscrivere altrimenti, perché Script.mqh è un comune file di intestazione
Mi dispiace, ma non capisco il suo punto di vista. Chi pensi che abbia torto - il tester o il visualizzatore?
Se mostra valori simili alla verità, ma li calcola usando i dati sbagliati, allora il problema è in mql5, e non nel tester o nel visualizzatore.
Tutto sommato, grazie per il vostro contributo, batterò il problema a lungo termine. E oggi controllerà un altro pezzo di moneta simile. Forse è il problema delle zecche in quel luogo, hhz?
Perché l'avvertimento è alla pari?