Il problema del trasferimento da MT4 a MT5. O, più precisamente, l'impossibilità di eseguire alcuni algoritmi in MT5 senza 'err. - pagina 12
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
fxsaber è corretto - c'è un'opzione
È un po' kitsch - EXPR sarà calcolato due volte, ma è comunque più flessibile. Non si può dire che sia universale (solo per i tipi aritmetici. Il valore dell'errore deve essere uguale, il che è spiacevole. Ho cercato di aggirare il problema tramite la specializzazione esplicita della struttura/funzione, ma non è possibile.
Saluti!
Vorrei aprire un nuovo topic, non riesco a formulare il problema... Ho problemi con esso )))) Ma il materiale è abbastanza fresco e interessante
Hai fatto un ottimo lavoro, vorrei finalizzarlo - l'usabilità (@fxsaber ha tutto il suo lavoro una volta collegato con un inluder) è pratico!
E per far sembrare il tutto professionale, dovresti usare la sintassi C++ / C# (o avvicinarti il più possibile)
Posso darvi la mia opinione:
Facciamo tranquillamente con quello che abbiamo al momento, non lamentatevi, aiutate a trovare i bug e chiedete con l'aspettativa di correzioni - vengono risolti e appaiono nuove belle caratteristiche.
Sono d'accordo con questo approccio.
---------
In parte ho già avuto una sorta di cache dalle prime versioni. Cioè, ho creato degli array con il tempo, i valori dei minimi e i valori dei massimi per i primi 10 zigzag estremi.
Nella versione per MT5, ho anche aggiunto un array contenente i numeri delle barre. Per i primi 10 estremi. Questo aiuta nella maggior parte dei casi. Solo gli attacchi non standard sono interessati in MT5.
Non creerò una cache completa per la storia disponibile per tutti i 21 intervalli di tempo. La memoria del vostro computer non sarà sufficiente con questo approccio.
Per capire: alcuni appassionati visualizzano fino a 9 indicatori per MT4 su un grafico. Ci sono molti grafici per varie coppie di valute aperti allo stesso tempo. E tutti hanno 9 copie dell'indicatore. Questa applicazione dell'indicatore è implementata per il sistema DML&EWA creato da Putniuk. Lui stesso ha prodotto fino a 72 istanze dell'indicatore. Cioè su 8 coppie di valute.
Quando si usa in questo modo, una cache addizionale di 21 TF insieme a 28 buffer caricherà molto la memoria.
Questo tiene conto solo del carico di memoria. È troppo noioso ridisegnare un grande codice per usare la cache invece delle funzioni iTime, iLow, iHight, iClose, iBarShift
=================
Ho vissuto queste maratone diverse volte.
1. Una maratona sull'inclusione di diversi indicatori esterni a zig zag nel corpo del programma principale. Si è sbarazzato degli indicatori esterni affinché il mercato accetti il programma.
2. Conversione di tutti gli zigzag a buffer singolo in zigzag a doppio buffer. Questo ha richiesto circa mezzo anno.
3. Creazione dell'interfaccia grafica. Ci sono voluti in totale più di 2 anni. Circa 3 anni. E ci sono altre idee interessanti per l'interfaccia grafica. Ma non ho ancora abbastanza coraggio per implementarli.
4. Originariamente ha cercato di tradurre da MT4 a MT5 un anno fa. Allora non ci sono riuscito. Ora posso farlo. Ma non sono soddisfatto della qualità della traduzione.
C'erano anche altre maratone.
Creare una cache può portare a un vicolo cieco. È pericoloso scherzare con...
------------
Artem, il tuo approccio (citato sopra) è pienamente condiviso.
...citazione dalla guida al linguaggio MQL5. Sotto la voce Organizzazione dell'accesso ai dati.
"...Accessibilità dei dati
La disponibilità di dati in formato HCC o anche in formato HC ready non significa sempre la disponibilità incondizionata di questi dati per la visualizzazione su un grafico o per l'uso in programmi mql5.
Quando si accede ai dati dei prezzi o ai valori degli indicatori da programmi mql5, si dovrebbe tenere presente che non è garantito che siano disponibili in un certo momento, o da un certo punto nel tempo...".
--------------
Il problema rimane.
Il programma ha diverse centinaia di accessi alla storia delle citazioni in diverse parti del programma. L'elenco del programma contiene circa 50 000 stringhe.
A volte, a causa delle specificità di accesso alla storia, viene restituito il valore -1. La conseguenza di ciò è un errore - un superamento dell'array. Ci sono anche altri errori. In alcuni frammenti del programma ho controllato se viene restituito -1 quando si accede alla storia. Quando si riceve -1 in questo caso i singoli elementidelle costruzioni grafiche non vengono disegnati. Se aggiungiamo un paio di centinaia di controlli al codice, causerà dei ritardi che già esistono a causa delle peculiarità di accesso alla storia.
È possibile creare un programma anche per MT5. Ma richiede di cambiare l'intera architettura. Non ho tempo per questi exploit.
Ho deciso che non c'è bisogno di un compito così inutile. Il programma funziona in MT4. Non ho intenzione di passare a MT5. Ho reso ZUP per MT5 gratuito.
Ho reso ZUP gratuito per MT5. Chiunque voglia può scaricarlo e vedere come funziona su MT5. E anche confrontarlo con la mia versione su MT4.
Ora ho finito con MT5. È solo una perdita di tempo.
Ho postato messaggi simili in altri forum.
E può dimostrare in modo riproducibile l'inaccessibilità dei dati?
Il servicedesk descrive come riprodurre il problema. C'è anche il codice sorgente per riprodurre il problema.
==========
Testo dalla documentazione MQL5 https://www.mql5.com/ru/docs/series/timeseries_access :
Disponibilità dei dati
La disponibilità di dati in formato HCC o anche in formato HC pronto all'uso non significa sempre la disponibilità incondizionata di questi dati per la visualizzazione su un grafico o per l'uso in programmi mql5.
Quando si accede ai dati dei prezzi o ai valori degli indicatori dai programmi mql5, dobbiamo ricordare che non è garantito che siano disponibili in un certo momento, o da un certo punto nel tempo. Questo è dovuto al fatto che MetaTrader 5 non memorizza la copia completa dei dati necessari per il programma mql5, ma dà accesso diretto al database del terminale per risparmiare risorse.
Questo testo, tradotto in russo, significa quanto segue. Non importa quello che fai, in qualsiasi momento l'accesso ai dati potrebbe non essere disponibile.
Cioè, non c'è modo di evitare errori dovuti all'interruzione dell'accesso ai dati.
Ecco come capisco questo testo.