Perché gli indicatori (linee, frecce, istogrammi) lampeggiano nel terminale MT5? - pagina 6

 
Andrey Khatimlianskii: Mi è venuto in mente un pensiero. Il ricalcolo completo (e il ridisegno) avviene se prev_calculato = 0. Provate a inserire una stampa OnCalculate all'inizio per questo caso e vedete se le stampe appaiono quando avviene il lampeggiamento. Se sì, devi scoprire cosa sta causando il terminale per resettare il contatore a 0 (e puoi scrivere al service-desk per questo). In caso contrario, si tratta ancora di più di un glitch e un semplice indicatore di test, condizioni di riproduzione e un breve video dimostrativo possono essere inviati al service-desk.

Hai suggerito una soluzione simile sopra - inserire la stampa nella funzione OnCalculate(), l'ho aggiunta, non è apparso nulla di inaspettato nel log, c'è un normale processo di nuove barre in arrivo e di elaborazione. I contatori non vengono azzerati, ma si verificano dei lampeggi.

 
Andrey Khatimlianskii:

È sorto un pensiero.

Il ricalcolo completo (e il ridisegno) avviene se prev_calculato = 0. Prova a inserire una stampa OnCalculate all'inizio per questo caso e vedi se le stampe appaiono quando lampeggiano.

Se sì, devi scoprire cosa sta causando il terminale per resettare il contatore a 0 (e puoi scrivere al service-desk per questo).

Se non è così, allora si tratta ancora di più di un glitch e un semplice indicatore di test, condizioni di riproduzione e un breve video dimostrativo possono essere inviati al service-desk.

Breve storia:

Tempo fa ho provato a riscrivere l'indicatore che raccoglie separatamente i tick up e i tick down in tempo reale da mql4 a mql5 ma non ha funzionato perché l'indicatore resetta periodicamente i dati già accumulati. Ho discusso questo problema con SD e mi hanno assicurato che il reset deriva dal fatto che prev_calculated viene azzerato a 0 e l'intero storico viene ricalcolato, e il reset avviene a causa della perdita di connessione con il server.

Gli esperimenti che ho fatto ieri:

Prima di tutto mettere Print() per condizione... Non ho aspettato e ho iniziato a creare artificialmente la perdita di connessione. Print() viene eseguito, ma l'indicatore non lampeggia.

Ho anche azzerato prev_calculated cliccando sul grafico e "Refresh" dal menu contestuale, ma l'indicatore non lampeggia. Ho deciso di vedere come ChartRedraw influisce sul ricalcolo dell'indicatore, ma il risultato è zero . Non ha alcun effetto , né nell'indicatore stesso, né nell'indicatore di lavoro parallelo con la chiamata ChartRedraw.

Ho cercato di trovare il sostituto di prev_calculated. Se viene chiamato qualche indicatore tecnico, prev_calculated può essere sostituito da BarsCalculated(handle), ma se non... non trovato. In caso di tale sostituzione, quando prev_calculated è azzerato, l'indicatore non viene ricalcolato e non perde i suoi calcoli.

Comunque, non sono riuscito a trovare niente di utile...

Questa è una supposizione delirante:

Non può essere che alcuni tick si perdano, poi vengono caricati con un certo ritardo e in quel momento avviene l'ammiccamento?

 

Questo indicatore di stock istogramma basato su ticks sfarfalla per qualcuno?

Sono riuscito a vedere l'indicatore costante sfarfallare solo una volta (all'apertura del mercato) e solo nel pannello CTRL+D, gli istogrammi stessi non hanno mostrato alcun sfarfallio (probabilmente a causa della mancanza di GPU). Non è stato possibile riprodurre per la registrazione video.


L'effetto di scambio dovrebbe essere osservato in un mercato veloce. Bisogna aspettare che la borsa cominci, poi, molto probabilmente, sarà possibile registrare lo sfarfallio. In alternativa, suggerisco di mettere il terminale su una registrazione continua di diverse ore. E poi tagliate il pezzo dove lo sfarfallio è particolarmente evidente.

 
Non bisogna fraintendere che l'azzeramento del contatore (o la modifica "retroattiva" del tick) è l'unico caso in cui il terminale ridisegna il grafico. La logica lì probabilmente tiene conto di un mucchio di altri fattori di cui non siamo a conoscenza. Ho inchiodato questo problema a causa della casualità della riproduzione e delle difficoltà di comunicazione che di solito sorgono nel service-desk.
 
Stanislav Korotky: Non si deve credere che l'azzeramento del contatore sia l'unico caso in cui il terminale ridisegna il grafico. La logica lì probabilmente tiene conto di un mucchio di altri fattori di cui non siamo a conoscenza. Ho inchiodato questo problema a causa della casualità del replay e delle difficoltà di comunicazione che di solito sorgono in un service-desk.

Sto arrivando alla stessa conclusione. Molto probabilmente, si tratta di una questione interna che non pubblicizzeranno e non sapremo mai il vero motivo. E gli sviluppatori hanno espresso implicitamente il loro atteggiamento sulla questione, ma non sono mai apparsi una volta in questo thread. Anche se avrebbero potuto chiarire...

 

L'indicatore ZZ della consegna è scomparso offline per un paio di secondi - quindi non si tratta di ticchettii.

 
Eugene Myzrov:

Hai suggerito una soluzione simile sopra - inserire la stampa nella funzione OnCalculate(), l'ho aggiunta, non è apparso nulla di inaspettato nel log, c'è un normale processo di ricezione ed elaborazione di nuove barre. I contatori non vengono azzerati, ma ci sono dei lampeggi.


Non ho letto le pagine precedenti, la tua domanda ha avuto risposta? Se no, ecco la soluzione, prova ad aumentare il numero di buffer, hai il numero sbagliato, ecco perché i lampeggi.
 
Roman Vashchilin:

Non ho letto le pagine precedenti, la tua domanda ha avuto risposta? Se no, ecco la soluzione, provate ad aumentare il numero di buffer, avete il numero sbagliato, ecco perché lampeggia.

Il numero di buffer è sbagliato anche nella zona standard?
 
Roman Vashchilin: Non ho letto le pagine precedenti, la tua domanda ha avuto risposta? Se no, ecco una soluzione, provate ad aumentare il numero di buffer, avete il numero sbagliato, ecco perché lampeggia.

Perché pensate che " ilnumero sbagliato di buffer è in piedi, ecco perché lampeggia"? Se uso 2 buffer e 2 array, allora lo specificherò di conseguenza.

#property   indicator_buffers 2
#property   indicator_plots   2

Perché dovrei specificare più buffer del necessario, cioè più di due?

 
Eugene Myzrov:

Perché pensate che " ilnumero sbagliato di buffer è in piedi, ecco perché lampeggia"? Se uso 2 buffer e 2 array, allora lo specificherò di conseguenza.

Perché dovrei specificare più buffer del necessario, cioè più di due?


E, se corrispondono, non c'è bisogno di cambiare.