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
Quando si cambia ilf.
Se gli indicatori hanno spazzatura nei loro buffer dal vecchio timeframe, questo può influenzare anche i timer.
Forum sul trading, sistemi di trading automatico e test di strategia
Nuova versione di MetaTrader 4 build 1065
Sergey Klimov, 2017.04.14 16:34
Quando si passa da un conto all'altro, la variabile _Digits nell'indicatore non cambia.
È più bello.
È più bello.
Questo è per coloro che parlano di una corretta coerenza in MT4.
Guarda e comprendi che non tutto è così bello in MT4.
La coda è inequivocabile.
Beh, dove è inequivocabile?
Provate questo esempio primitivo. Capirete l'"unicità" quando cambierete il TF.
In questo esempio, un oggetto con le coordinate dell'ora e del prezzo correnti viene creato in OnInit. In OnCalculate questo oggetto si muove insieme al prezzo.
In OnDeinit viene semplicemente (logicamente) cancellato.
Quando cambiamo il TF, l'oggetto appare e poi scompare.
Perché succede questo?
Perché a volte OnDeinit del vecchio TF cancella qualcosa che è già stato creato in OnInit del nuovo TF. Non è un bug! Cosa dovrebbe pensare il programmatore che ha creato questo esempio e non ha letto questo ramo?
Beh, dov'è lei, in modo univoco.
Il timer è stato menzionato lì.
Qual è la differenza. Potete mettere EventSetTimer in Unite invece della creazione dell'oggetto, e mettere EventKillTimer in Deunite invece della cancellazione dell'oggetto. E questo non ridurrà l'incertezza, perché il timer impostato sarà ucciso da Deunite del vecchio TF, e a volte non lo farà. E sarà ancora peggio, perché almeno si può vedere l'oggetto, ma non si può vedere il timer - se funziona o no.
Forse l'hanno già inventato, non l'ho letto tutto. Se l'indicatore crea un pannello, potete usare la variabile globale del terminale, aumentare il suo valore di 1 in init e usarlo come additivo ai nomi degli oggetti grafici.
Il mio compito era diverso - salvare i parametri del pannello, per questo ho creato variabili globali del terminale in deinit. La soluzione è semplice - creare variabili globali del terminale nell'inite e aggiornare ciascuna di esse quando i parametri cambiano nel pannello grafico. Elimina le variabili in deinit solo se la deinizializzazione è causata dalla rimozione dell'indicatore.
Se l'indicatore crea un pannello, potete usare una variabile globale del terminale, aumentare il suo valore di 1 e usarlo come appendice ai nomi degli oggetti grafici.
Cosa deve pensare un programmatore che ha creato questo esempio e non ha letto questo thread?
Sono completamente d'accordo. I non lettori non sapranno di questa caratteristica e uccideranno il loro tempo cercando di capirla. E sarebbero centinaia di persone... ...specialmente quelli che sono principianti.
Tutto ciò di cui avete bisogno è di correggere un bug una volta ed è tutto.
Qual è la differenza. Potete mettere EventSetTimer in Unite invece della creazione dell'oggetto, e mettere EventKillTimer in Deunite invece della cancellazione dell'oggetto. Questo non ridurrà l'incertezza, perché il timer impostato sarà ucciso da Deunite del vecchio TF, e a volte non lo farà. E sarebbe anche peggio, perché almeno si può vedere l'oggetto, ma non si può vedere se il timer funziona o no.
Sono tutte stampelle. Dovete solo fare l'ordine corretto nel terminale e questo è tutto. Prima deinite l'istanza precedente, e solo dopo inizializzate quella nuova.
Sono completamente d'accordo. I non lettori non sapranno di questa caratteristica e uccideranno il loro tempo cercando di capirla. E sarebbero centinaia di persone... specialmente per i principianti.
Tutto quello che dovete fare è correggere il bug una volta e questo è tutto.
Ecco di cosa sto parlando!
Personalmente sono su un rotolo, perché sento di avere un vantaggio sulla maggior parte delle persone perché so come affrontare tutto questo, non solo a parole, ma anche con i fatti. Ho già fatto delle toppe e aggiunto delle stampelle ai miei programmi.
Non capisco perché gli sviluppatori si rifiutano ostinatamente di considerare questa "caratteristica" un bug.
Per esempio:
Gli indicatori dovrebbero essere usati per lo scopo previsto.
In altre parole, la sequenza di adempimenti dell'indicatore OnInit e OnDeinit quando il simbolo-periodo delgrafico è cambiato non dovrebbe interessare nessuno
Ma nel mio esempio con la gif animata qui sopra, c'è un bug definitivo per un programmatore che non ha letto questo topic! Cosa non viene fatto secondo il suo scopo?