Il problema del trasferimento da MT4 a MT5. O, più precisamente, l'impossibilità di eseguire alcuni algoritmi in MT5 senza 'err.

 

Prima una citazione dalla guida linguistica di MQL5. Sotto il titolo Organizzare l'accesso ai dati.

"...Accessibilità dei dati

La disponibilità di dati in formato HCC o anche in formato HC ready non significa sempre l'accessibilità incondizionata di questi dati per la visualizzazione su grafici o per l'uso in programmi mql5.

Quando si accede ai dati dei prezzi o ai valori degli indicatori dai programmi mql5, bisogna ricordare che non è garantito che siano disponibili in un certo momento, o da un certo punto nel tempo...".

Immediatamente si prega di non dare consigli su come aggirare il problema descritto. Questo è scritto principalmente per gli sviluppatori MQL5.

Nello ZUP per MT4 è implementato l'algoritmo di filtraggio frattale. Nell'articoloZUP è uno zigzag universale con modelli Pesavento. L'interfaccia grafica è un po' scritta. Ma qui descriverò ancora una volta l'algoritmo.

Quando si visualizzano strumenti grafici su un grafico con il legame di strumenti grafici selezionati (ad esempio Pitchfork di Andrew, o qualsiasi altro) a zigzag estremi o modelli di onde utilizzando l'interfaccia grafica, l'algoritmo di filtraggio frattale è impegnato.

Il filtraggio frattale rimuove lo strumento grafico creato in quegli intervalli di tempo in cui l'output di questo strumento grafico perde il suo significato.

Per esempio, non ci sono quotazioni per l'estremo selezionato su alcuni timeframes (questo è rilevante per i timeframes più bassi) o due o più estremi appaiono nel corpo di una barra su timeframes più alti con varie variazioni di posizione all'interno della barra.

Non ha senso visualizzare uno strumento grafico creato in precedenza su questi tempi. Perde la sua funzionalità. In questi casi, il filtraggio frattale impedisce automaticamente la visualizzazione di strumenti grafici "in difficoltà". Aggiungerò per i networker neurali man mano che vado avanti... ci sono alcune idee molto interessanti sull'implementazione nelle reti neurali... ...ma questo è un altro argomento.

Il problema di MQL5 è che anche avendo generato serie temporali su tutti i timeframe per tutti gli estremi collegati a uno strumento di charting, ci sono momenti in cui l'accesso ad alcuni timeframe per l'estremo selezionato viene interrotto a causa di peculiarità di accesso ai dati (vedi sopra). Di conseguenza, vengono generati dati errati sui tempi per l'algoritmo di filtraggio frattale. Cioè, per esempio, quando si accede a tutti i timeframe, il cf superiore nei dati per il filtraggio frattale dà il valore del cf superiore del timeframe mensile. Ma nel momento in cui l'accessibilità non è garantita, il tf superiore per questo estremo è limitato al periodo attuale.

Un utente clicca sul simbolo a cui è collegato uno strumento grafico. Verrà visualizzato il simbolo del grafico. L'utente passa al periodo più vecchio. L'algoritmo del filtro frattale elimina lo strumento grafico. L'utente è perplesso. Gli estremi sono tutti visibili, ma lo strumento grafico scompare.

E qui è impossibile organizzare l'attesa per il legame del simbolo del grafico dopo che un utente clicca su un simbolo selezionato fino al momento dell'accesso alla serie temporale diversa dal timeframe corrente.

Non ci sono questi problemi in MT4.

Questa situazione è il problema che mi ha impedito, in questo caso, di sviluppare programmi per MT5. Questo problema era chiaro anche quando MT5 è stato introdotto sul mercato...

Il codice ZUP è stato tradotto in MT5. E l'ho messo nel mio Mercato. Ma il problema descritto sopra è presente lì. Non ho costruito stampelle per aggirare il problema. Se siete a conoscenza di questo problema, potete semplicemente cancellare lo strumento grafico creato. E mostrarlo di nuovo. Ma questo è, come posso dire in modo delicato....

Credo che il problema descritto sopra sia ancora un'imperfezione del linguaggio MQL5 o del terminale MT5. Dovrebbe essere un accesso garantito alle serie temporali già generate in qualsiasi momento!

Su una nota a margine. Quando si crea un partizionamento dell'onda in ZUP, il filtraggio frattale è abilitato. Qui abbiamo quanto segue. Quando ho accesso a tutte le serie temporali di tutti i timeframe i modelli d'onda sono corretti. Ma con la cessazione improvvisa dell'accesso alle serie temporali i modelli d'onda possono essere emessi in modo imprevedibile. Cioè, quando il partizionamento delle onde veniva creato, tutto era in ordine. E in qualche momento successivo, quando il partizionamento dell'onda è stato creato nella transizione ad altri timeframes, è stato visualizzato in modo imprevedibile. E non è facile creare stampelle per eliminare il funzionamento errato del terminale.

 
Dimenticate gli oggetti grafici. È molto scomodo e limitato. Con kanvas, tutto funzionerà più facilmente, più velocemente e con possibilità grafiche illimitate.
 

Oh, a proposito, proprio ieri stavo scrivendo un indicatore in cui dovevo copiare periodicamente i dati in pezzi della durata di un anno da W1. Molto spesso accadevano tentativi di copiatura senza successo. Alla fine non ha funzionato, ho dovuto fare tutto secondo un altro principio.

 
Eugeni Neumoin:

...

Anche non abituato e scomodo con l'accesso ai dati dopo il 4.

L'accesso ai dati in 5 è limitato a TF.

Se si disegna una linea di tendenza abbastanza lunga su TF D1 o su W1 poi andando a M1 o M5 non la si vedrà a causa della limitazione di accesso al punto di tendenza lontano.

Si può controllare facilmente.

Dobbiamo occuparci della tela. Ma è possibile che anche lì ci sia un'imboscata.

 
Puoi dimostrare in modo riproducibile l'indisponibilità dei dati?

Lei afferma senza prove riproducibili.
 
Grande! Volevo preparare l'indicatore, rimuovere il superfluo per mostrare la cosa principale. L'ho fatto. Ma all'improvviso ha funzionato come un orologio svizzero.
 
Uladzimir Izerski:

È anche poco abituato e scomodo con l'accesso ai dati dopo il 4.

L'accesso ai dati in 5 è limitato al TF.

Se tracciate una linea di tendenza abbastanza lunga su TF D1 o su W1 poi andando su M1 o M5 non la vedrete a causa della limitazione di accesso al punto di tendenza lontano.

Si può controllare facilmente.

Dobbiamo occuparci della tela. Ma forse anche lì c'è un'imboscata che aspetta.

È una storia completamente diversa. Il punto lontano dovrebbe avere la storia sui piccoli prezzi per mostrare la tendenza.

Disegniamo con la forcella W1 in riferimento ad essa. Il tempo minimo è m20. Questo è dimostrato dall'algoritmo di filtraggio frattale. In questo caso è mostrato nel tooltip. Non ha senso costruire qualcosa con riferimento al primo punto della forca su tf inferiore.

Il punto indicato dalla freccia verso l'alto nella prossima immagine su m20 è segnato da una linea verticale. Tutto viene visualizzato bene. Ma su fotogrammi più superficiali quei forconi non saranno mostrati dal filtraggio frattale. La storia va oltreTERMINAL_MAXBARS su frame più superficiali. Ecco perché non sarà mostrato su TF inferiore a m20.

Tutto è perfettamente esposto. Nessun turno. E funziona bene in MT5. Tuttavia, per poterlo visualizzare in questo modo, si dovrebbe impostare il tempo esatto dell'estremo sul timeframe più piccolo, nel nostro caso su m20, quando si visualizzano le forchette.

A proposito, potete vedere che la linea SLM318 (linea tratteggiata) ha funzionato bene il 09-11-2018. È come la tecnica del cecchino, che l'accademia forex di Minsk promuove. Ma qui il mercato ha "visto" la linea SLM318 e ha lavorato magistralmente...

 
Renat Fatkhullin:
Puoi dimostrare in modo riproducibile l'inaccessibilità dei dati?

Lei afferma senza prove riproducibili.

Non ho salvato la foto. Ma posterò le foto quando si presenterà la situazione. Non sarò in grado di riprodurlo con del codice di prova. È troppo codice da creare.

Mi limiterò a descrivere com'era. Ho disegnato il forcone su H3. L'ho legato agli estremi disponibili anche su fotogrammi più alti. Mi sono trasferito in H4. I forconi sono scomparsi. Ho cominciato a capire perché è successo. Ho controllato il tooltip su cui si trova il confine TF della filtrazione frattale. Sembrava che illimite superiore fosse su H3. Ho eliminato il forcone dal grafico. Ricollegato il forcone agli stessi estremi. Ho controllato il limite superiore. Si è rivelato un periodo di un mese. E tali situazioni si ripetevano. Ma non frequentemente.

Il programma accede a tutte le casseforti per i primi 10 estremi quando visualizza uno zigzag. Ogni volta lo zigzag viene ridisegnato. Lo zigzag viene ridisegnato solo quando il prezzo lascia la barra zero. Non su ogni zecca.

Sto chiudendo il terminale. Lo scarico dalla memoria del computer. Accedo alla cartella con la cronologia dove si trovano i file *.hc. I file delle serie temporali per tutti gli intervalli di tempo hanno la data e l'ora del momento in cui il terminale è stato scaricato dalla memoria del computer. Cioè, tutte le serie temporali sono formate.

 
Non mi interessa l'immagine, è derivata dal vostro codice.

È il rifiuto di fornire dati con registri chiari che è interessante.
 
Renat Fatkhullin:
Non è l'immagine che mi interessa, è derivata dal tuo codice.

È il rifiuto di fornire dati con registri chiari che è interessante.

Questo deve essere modellato. Per creare registri. Penserò a come farlo.

 
Renat Fatkhullin:
Puoi dimostrare in modo riproducibile l'inaccessibilità dei dati?

Lei afferma senza prove riproducibili.

Se è una domanda per me?

Allora ecco la riproduzione di un semplice esempio.

D1.

v1

Vai a H4

H4


Vai a H1

H1


Ci sarà un grafico chiaro su un piccolo TF.

Gli oggetti sono nelle liste, ma non sono sul grafico.

m1