Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 534
![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
Vladimir, grazie per la risposta alla prima domanda, mi mancavano queste caratteristiche.
Ho messo uno stesso indicatore in MT4 e in MT5 (naturalmente, il codice è adattato ad ogni piattaforma).
Fino a zero bar i loro valori sono gli stessi, quindi apparentemente da un'estremità ... :)
E quando si disabilita il calcolo sulla barra corrente in MT4 non viene disegnato nulla sotto la barra corrente, in MT5 - valori sbagliati.
Forum sul trading, sistemi di trading automatico e test di strategia
Domande dai principianti
Karputov Vladimir, 2016.03.08 15:13
... Per il debugging impostate il controllo - quale valore è contenuto nell'array delle serie temporali time[i] - in modo da capire a quale fine si inizia il calcolo delle barre e dove si ha una barra "zero".
E come mettere un tale controllo?
In MetaEditore aggiungete un punto di interruzione e iniziate il debugging. Quando il punto di interruzione viene fermato, aggiungere time[0] all'osservazione:
In MetaEditore aggiungete un punto di interruzione e iniziate il debugging. Quando il punto di interruzione viene fermato, aggiungere time[0] all'osservazione:
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00:00
MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00
Inserito nel codice MT5ArraySetAsSeries(time,true);
Ora output:
MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 2010.01.04 00:00:00
E anche gli array di prezzi?
Ho già messo l'output nel codice
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00
Cosa devo fare adesso?
In entrambe le versioni dell'indicatore aggiungeteArraySetAsSeries- per quegli array che usate per i vostri calcoli: high[], low[] e temporaneamente per l'array time[] - vi aiuterà a capire dove si trova la barra "zero". Così, la barra "zero" in entrambe le versioni sarà sullo stesso lato del grafico (destra o sinistra - a seconda di ciò che si imposta in ArraySetAsSeries), e si otterrà la stessa parte di calcolo dell'indicatore.
Aggiunto: mentre stavo scrivendo, avete annaspato nel modo giusto :)
Aggiunto: mentre stavo scrivendo, hai trovato il modo giusto :)
L'ho incollato nel codice di MT5:
Sta uscendo:
Emette soloExtCalcVlBuffer, ma la media e la deviazione non contano...
E continua a produrre sulla barra corrente, anche se non dovrebbe.
...
E viene ancora visualizzato sulla barra corrente, anche se non dovrebbe.
Perché non dovrebbe?
L'ho spento i<rates_total-1
PERCHE'?!
Non c'è bisogno di usare il valore attuale, caricherà solo il processore invano e semplicemente non avete bisogno di questo valore.
Quindi, è necessario specificare subito una tale richiesta :) .
La situazione è la seguente: se c'è una barra nel grafico, corrisponde a una cella nel buffer dell'indicatore. Finché non scrivete qualcosa in questa cella, questa cella memorizzerà dei rifiuti.