Discussion de l'article "Migration de MQL4 vers MQL5" - page 2

 
Article intéressant, merci.
 
Quantum:

Des erreurs peuvent être commises, le matériel est assez volumineux.

Le sujet du portage (plus précisément, le sujet de l'écriture d'une classe d'émulateur avec des méthodes MQL4) a été abordé dans un autre article (nous espérons qu'il sera terminé). Au cours de la lecture du matériel, nous avons demandé à l'auteur d'écrire un article sous la forme d'un livre de référence pour couvrir toutes les fonctions MQL4 (à l'exception du trading - vous verrez bientôt l'une des solutions pour ces fonctions), de fournir un analogue pour chacune d'entre elles dans MQL5, en général, de tout rassembler pour que ceux qui réécrivent des programmes MQL4 puissent rapidement trouver un analogue. En ce qui concerne le désir effréné, si nous parlons du nombre de sections considérées, nous avons insisté pour couvrir toutes les fonctions (qui se sont avérées être plus de 250).

Quant à la comparaison des fonctions dans certaines sections, il ne s'agissait pas exactement d'une comparaison. Il était nécessaire de donner un analogue, même si c'est la même chose. Pour toutes les fonctions. Il semble donc qu'il y ait une comparaison, mais la comparaison permet de dire que, par exemple, les fonctions mathématiques sont les mêmes. D'ailleurs, en guise de recommandation, il serait sans doute utile de le mentionner au début de chaque section, ce à quoi il faut faire attention.

Pour cette raison (architecture des fonctions de l'émulateur), l'auteur a mis en œuvre des éléments non évidents (par exemple pour iLowest/iHighest global Open[]...High[]..., qui ont été déclarés globalement au préalable et transformés en AsSeries dans OnInit), qui étaient implicites comme dans l'émulateur ; naturellement, pour l'universalité des fonctions, il est préférable d'utiliser des tableaux locaux.

En ce qui concerne le travail avec les indicateurs techniques, il peut y avoir de nombreuses questions, le travail avec eux ne devrait pas être comme dans MQL4 - il est préférable de les créer manuellement dans OnInit et de se référer aux descripteurs, au lieu de les créer à chaque fois dans les fonctions locales. Mais l'approche suggérée par l'auteur fonctionne également, car le terminal ne détruit pas immédiatement les indicateurs. Il y a donc beaucoup de subtilités.

L'important est qu'il y ait maintenant matière à discussion, si vous trouvez des erreurs (y compris celles causées par la structure proposée des fonctions) - proposez vos variantes.

s'il s'agit d'un livre de référence, qu'il soit un livre de référence !!!

ou ce n'est pas du poisson et de la viande


pourquoi les tableaux globaux sont utilisés pour les calculs intermédiaires !

Il est possible d'allouer de l'espace pour de tels calculs à l'intérieur d'une fonction. pourquoi mettre une référence ?

dans certaines fonctions ils sont modifiés tes atas.

encore le même yahigest !!! modifier le global buffer à l'intérieur d'une fonction c'est atas !

Bon, bien que cela ait déjà été corrigé pendant que j'écrivais, mais je suis sûr que ce style sera tracé tout au long de l'article.

Lorsque la construction de prix mcl4 accède à ces tableaux, elle trouve.....


nous avons ensuite 6 sections de comparaisons !

fonctions mcl4 vers mcl4

uniquement des comparaisons.


Puis, tout d'un coup, il commence

tableau de remplacement des fonctions.

2 sections


puis à nouveau une comparaison

3 sections


puis les substitutions

des fonctions !

puis à nouveau....

D'abord dans le tableau il y a la fonction µl4 et ensuite 2 types de cellules.

qui contient un substitut réécrit en mcl5.

ou, 2 types de cellules, juste une fonction identique.

et ceci tout au long de l'article... donc est-ce un transfert vers µl4 ou un livre de référence.

laissez une chose tranquille !


Il y a aussi beaucoup de défauts qui mèneront à un état non fonctionnel.

car j'ai déjà beaucoup appris sur les particularités du stockage des données dans les tableaux de µl5.

et dans de nombreuses fonctions il sera nécessaire, je dirais même qu'il est nécessaire de déterminer la taille du tableau,

certaines d'entre elles devront déterminer le sens de l'indexation.

à cause de la différence de traitement des données dans l'environnement mcl4 et mcl5.

parce que je sens déjà que ça va compiler, mais que ça ne démarre pas.


Bien entendu, le guide dont vous parlez serait très utile.

Il y a quelques points intéressants dans l'article

mais ce n'est ni du poisson ni de la chair.


Laissez sans remplacement juste une fonction et son analogue sur mql5.

Cela sera utile pour une réécriture complète de l'indicateur mql4 vers mql5.

avec toutes les références à la documentation !

au diable ces substituts grossiers.


Bien sûr, je suis désolé pour une critique aussi sévère, mais publier un article aussi brut au moment où il est le plus attendu.

avec des erreurs aussi critiques.

qu'en tirerons-nous ? ....

clairement une hérésie...


Enfin, pourquoi n'y a-t-il pas de pièces jointes ???

Si tant de fonctions ont été déplacées, pourquoi n'y a-t-il pas de fichier .mqh ?

où toutes les fonctions seraient rassemblées... surtout 250 d'entre elles... copier 1 par 1 pour transférer mqh4 ....

suggère à nouveau que l'auteur essaie délibérément de cacher quelque chose.


Cordialement, Vasily.

 
CoreWinTT:
...

parce que je sens déjà qu'il compile, mais il ne démarre pas.

...

En effet, écrire une fonction qui se compile sans erreur ne signifie pas que vous pouvez l'inclure en toute sécurité dans votre code. Le plus gros problème est de traduire la logique du programme. C'est comme traduire une poésie : vous l'avez traduite mot pour mot, mais elle ne rime pas. C'est pourquoi il ne suffit pas de traduire les fonctions. La conversion d'une langue à l'autre n'est pas aussi simple qu'il n'y paraît.

Je vois une solution sous la forme d'un émulateur avec un mécanisme simple et clair pour transférer des indicateurs, des scripts et des Expert Advisors vers MQL5. J'y travaille actuellement.

 
yep cool emule le sera =)
 
CoreWinTT:

Si c'est un guide, qu'il soit un guide !!!

Ce n'est pas du fish and chips.

....

Vasily, merci pour votre critique constructive, j'espère que l'auteur prendra en compte les souhaits et fournira des variantes de fonctions autosuffisantes sans l'utilisation de tableaux globaux.

L'article était destiné à servir de référence - à fournir des correspondances entre les fonctions MQL4 et MQL5.

C'est probablement la raison pour laquelle on a l'impression que l'auteur essaie de cacher quelque chose : un minimum d'explications, beaucoup de tableaux, pas d'exemples complets d'utilisation. Mais il s'agit là d'une spécificité du genre.

Il y a beaucoup de subtilités dans le travail avec les fonctions, les détails devraient être examinés en détail et avec des exemples, mais ce sont les sujets d'autres articles - nous espérons qu'ils apparaîtront. Le sujet de la migration depuis MQL4 est loin d'être épuisé par cet article, de nombreux documents intéressants sont en cours de préparation et seront publiés prochainement.
.

 
DC2008:

Il faut comprendre que la mise en œuvre est trop compliquée et n'est pas justifiée. Après tout, l'objectif est d'abandonner complètement les fonctions MQL4.

Exactement. Il s'agit d'expliquer quels (autres) outils doivent être utilisés maintenant, en raison de quels changements dans l'architecture du système. Étant donné que ce matériel est donné comme un livre de référence, il est important de remplir toutes les cases avec une "solution". S'il n'y a pas d'analogue, il existe une autre approche.
 
marketeer:
Exactement. Il s'agit d'expliquer quels (autres) moyens doivent être utilisés maintenant, en raison de quels changements dans l'architecture du système. Étant donné que ce matériel est fourni sous la forme d'un ouvrage de référence, il est important de remplir toutes les cases avec une "solution". S'il n'y a pas d'analogue, il existe une autre approche.

Il est difficile de lire un livre sur chaque indicateur au moins.

Même moi, je ne peux pas m'en vanter.

 
marketeer:
... il est important de remplir toutes les cases avec "solution". L'absence d'analogue signifie qu'il existe une autre approche.

La section 17 est ajoutée avec une référence à la "solution".

Suggérez quelles sont les caractéristiques "sans analogues" auxquelles il faut prêter attention en premier, car elles ne sont pas toutes aussi pertinentes et nécessaires. J'essaierai d'apporter des modifications.

 

Le 17 est bon. En ce qui concerne le premier tour, ce n'est pas à moi d'en juger. Tous ceux qui convertiront mql4 en mql5 auront leur propre file d'attente. Afin de ne rien oublier, je remplirais simplement l'ordre de haut en bas, en commençant par AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension, etc (il n'en reste que 9).

[Supprimé]  
Quantum:

Cher Vasily !

Merci pour vos commentaires. Les fonctions de la section 18 ont été mises à jour. Veuillez consulter la version actuelle.

L'auteur a fait beaucoup de travail, il peut y avoir des erreurs, nous les corrigerons ensemble.

La fonction TFMigrate(int tf) est nécessaire pour substituer les valeurs correctes des délais de MQL5. Par exemple, dans MQL4 la valeur numérique de la constante PERIOD_H1 est 60, et dans MQL5 la valeur numérique de PERIOD_H1=16385, c'est-à-dire TFMigrate(60)=16385.

A mon avis, deux fonctions sont nécessaires pour travailler avec TF dans des conditions de migration :

1. Convertit le nombre de secondes en TF - par exemple ENUM_TIMEFRAMES SecondToPeriod (int Value) ;

2. Convertit la période en secondes - disons int PeriodToSecond(ENUM_TIMEFRAMES Value).


Ce que j'ai fait avec succès dans mon module de migration au tout début (il y a aussi une option DLL).


PS

Pour maximiser la conformité avec MQL4, je me suis personnellement débarrassé de toutes les périodes non standard.