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

 
Vict:

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)

 
Artyom Trishkin:

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.

 
Di nuovo, ecco una citazione dal primo post:

...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.

 
Renat Fatkhullin:
E può dimostrare in modo riproducibile l'inaccessibilità dei dati?

Lei afferma senza prove riproducibili.

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.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...