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
Si possono commettere errori, il materiale è piuttosto grande.
L'argomento del porting (più precisamente, l'argomento della scrittura di una classe emulatore con metodi MQL4) è stato affrontato in un altro articolo (speriamo che venga terminato). Nel corso della lettura del materiale, abbiamo chiesto all'autore di scrivere un articolo sotto forma di libro di riferimento che coprisse tutte le funzioni MQL4 (tranne il trading - per il quale vedrete presto una soluzione), di fornire un analogo per ognuna di esse in MQL5, in generale, di mettere tutto insieme in modo che chi riscrive programmi MQL4 possa trovare rapidamente un analogo. Per quanto riguarda il desiderio sfrenato, se parliamo del numero di sezioni considerate, abbiamo insistito per coprire tutte le funzioni (che sono risultate essere più di 250).
Per quanto riguarda il confronto delle funzioni in alcune sezioni, non si trattava esattamente di un confronto. È stato necessario fornire un analogo, anche se è lo stesso. Per tutte le funzioni. Quindi sembra che ci sia un confronto, ma dal confronto si capisce che, per esempio, le funzioni di matematica sono le stesse. A proposito, come raccomandazione, sarebbe probabilmente utile menzionare questo aspetto all'inizio di ogni sezione, che è qualcosa da tenere d'occhio.
Per questo motivo (architettura delle funzioni dell'emulatore) l'autore ha inserito alcune cose non ovvie nell'implementazione (ad esempio per iLowest/iHighest globali Open[]...High[]..., che sono stati dichiarati globalmente in precedenza e resi AsSeries in OnInit), che erano implicite come nell'emulatore, naturalmente per l'universalità delle funzioni è meglio usare array locali.
Per quanto riguarda il lavoro con gli indicatori tecnici, ci possono essere molte domande, il lavoro con essi non dovrebbe essere come in MQL4 - è meglio crearli manualmente in OnInit e fare riferimento ai descrittori, invece di crearli ogni volta nelle funzioni locali. Ma anche l'approccio suggerito dall'autore funziona, perché il terminale non distrugge immediatamente gli indicatori. Quindi ci sono molte sottigliezze.
La cosa importante è che ora c'è qualcosa da discutere, se trovate errori (compresi quelli causati dalla struttura delle funzioni proposte) - proponete le vostre varianti.
se questo è un libro di riferimento, che sia un libro di riferimento!!!
o non è pesce e carne
perché si usano gli array globali per i calcoli intermedi!È possibile allocare spazio per tali calcoli all'interno di una funzione. perché mettere un riferimento?
in alcune funzioni vengono modificati gli atas.
lo stesso yahigest di nuovo!!! modificare il buffer globale all'interno di una funzione è atas!
Beh, anche se è già stato risolto mentre stavo scrivendo, ma sono sicuro che questo stile sarà rintracciato in tutto l'articolo.
Quando il costrutto prezzo di mcl4 accede a questi array, trova.....
abbiamo poi 6 sezioni di confronti!
funzioni mcl4 a mcl4
solo confronti.
Poi, di punto in bianco, inizia
tabella di sostituzione delle funzioni.
2 sezioni
poi di nuovo un confronto
3 sezioni
poi le sostituzioni
funzioni!
e poi ancora....
Prima nella tabella c'è la funzione µl4 e poi 2 tipi di celle.
che contiene un sostituto riscritto in mcl5.
oppure, 2 tipi di cellule, solo una funzione identica.
e questo per tutto l'articolo... quindi si tratta di un trasferimento a µl4 o di un libro di riferimento.
lasciate stare una cosa!
Ci sono anche molti difetti che porteranno ad uno stato non funzionante.
perché ho già imparato molto sulle peculiarità della memorizzazione dei dati negli array di µl5.
e in molte funzioni sarà necessario, direi addirittura necessario, determinare la dimensione dell'array,
alcune di esse dovranno determinare la direzione dell'indicizzazione.
a causa della differenza di elaborazione dei dati nell'ambiente mcl4 e mcl5.
perché sento già che si compila, ma non si avvia.
Naturalmente, la guida di cui parli sarebbe davvero molto utile.
Ci sono un paio di punti interessanti nell'articolo
ma non è né carne né pesce.
Lasciare senza sostituzioni solo una funzione e il suo analogo su mql5.
questo sarà utile per una completa riscrittura dell'indicatore mql4 in mql5.
con tutti i riferimenti alla documentazione!
al diavolo questi rozzi sostituti.
naturalmente, mi dispiace per una critica così dura, ma rilasciare un articolo così grezzo quando è più atteso.
con errori così critici.
cosa si impara da questo....
chiaramente un'eresia...
E infine, perché non ci sono allegati?
Se sono state spostate così tante funzioni, perché non c'è un file .mqh?
dove sarebbero state raccolte tutte le funzioni... soprattutto 250... copiare 1 per 1 per trasferire mqh4 ....
suggerisce ancora una volta che l'autore sta deliberatamente cercando di nascondere qualcosa.
Saluti a Vasily.
...
perché sento già che sta compilando, ma non parte.
...
In effetti, scrivere una funzione che si compila senza errori non significa che la si possa includere tranquillamente nel codice. Il problema maggiore è tradurre la logica del programma. È come tradurre una poesia: l'avete tradotta alla lettera, ma non fa rima. Ecco perché non basta tradurre le funzioni. Il compito di convertire da una lingua all'altra non è così semplice come può sembrare.
Vedo una soluzione sotto forma di emulatore con un meccanismo semplice e chiaro per trasferire indicatori, script ed Expert Advisor a MQL5. Attualmente ci sto lavorando.
Se è una guida, che sia una guida!!!
Non è un fish and chips.
....
Vasily, grazie per la tua critica costruttiva, spero che l'autore tenga conto dei desideri e fornisca varianti di funzioni autosufficienti senza l'uso di array globali.
L'articolo voleva essere un riferimento - per fornire corrispondenze tra le funzioni MQL4 e MQL5.
Questo è probabilmente il motivo dell'impressione che l'autore stia cercando di nascondere qualcosa: spiegazioni minime, molte tabelle, nessun esempio completo di utilizzo. Ma questa è una specificità del genere.
Ci sono molte sottigliezze nel lavorare con le funzioni, i dettagli dovrebbero essere considerati in modo approfondito e con esempi, ma questi sono argomenti di altri articoli - speriamo che appaiano. L'argomento della migrazione da MQL4 è lungi dall'essere esaurito da questo articolo, molti materiali interessanti sono in preparazione e saranno pubblicati presto.
.
Si dovrebbe intendere come segue: l'implementazione è troppo complicata e non giustificata. Dopo tutto, l'obiettivo è quello di abbandonare completamente le funzioni MQL4.
Esattamente. Il punto è spiegare quali (altri) mezzi dovrebbero essere usati ora, a causa di quali cambiamenti nell'architettura del sistema. Poiché questo materiale viene fornito sotto forma di libro di riferimento, è importante riempire tutte le celle con una "soluzione". Se non c'è un analogo, allora c'è un altro approccio.
È difficile leggere un libro almeno su ogni indicatore.
Nemmeno io posso vantarmi di questo.
... è importante riempire tutte le caselle con "soluzione". Nessun analogo significa che esiste un altro approccio.
La sezione 17 viene aggiunta con un riferimento alla "soluzione".
Suggerisci quali sono le caratteristiche "senza analoghi" a cui prestare attenzione per prime, perché non tutte sono così rilevanti e necessarie. Cercherò di apportare delle modifiche.
17 è buono. Per quanto riguarda il primo turno, non sta a me giudicare. Tutti coloro che convertiranno mql4 in mql5 avranno la loro coda. Per non perdere nulla, mi limiterei a compilare l'ordine dall'alto verso il basso, iniziando con AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension, ecc (ne rimangono solo 9).
Caro Vasily!
Grazie per le sue osservazioni, le funzioni della sezione 18 sono state aggiornate. Si prega di controllare la versione attuale.
L'autore ha fatto molto lavoro, potrebbero esserci degli errori, li correggeremo insieme.
La funzione TFMigrate(int tf) è necessaria per sostituire i valori corretti dei timeframe di MQL5. Ad esempio, in MQL4 il valore numerico della costante PERIOD_H1 è 60, mentre in MQL5 il valore numerico di PERIOD_H1=16385, quindi TFMigrate(60)=16385.
A mio parere, sono necessarie due funzioni per lavorare con TF in condizioni di migrazione:
1. Converte il numero di secondi in TF - diciamo ENUM_TIMEFRAMES SecondToPeriod (int Value);
2. Converte il periodo in secondi - diciamo int PeriodToSecond(ENUM_TIMEFRAMES Value).
Cosa che ho fatto con successo nel mio modulo di migrazione all'inizio (c'è anche un'opzione DLL).
PS
Per massimizzare la conformità con MQL4, personalmente mi sono sbarazzato di tutti i periodi non standard per esso