Testeur soutenant les scripts et les conseillers MG4 - page 4

 

Vous pouvez tous vous taper la tête contre le mur, ou inventer de l'eau chaude..... MaisInteger a raison.

Entier:

Exactement. Notamment en profitant de l'autorité de sa position supérieure.

Toutes les langues sont les mêmes, sauf les langues extravagantes. Tous ces éléments peuvent être appris en 21 jours par n'importe quel crétin. Tous les for, while, if, switch peuvent avoir une notation différente, mais cela ne fait pas de différence en principe. Ce n'est pas la façon dont les opérateurs sont écrits qui est importante, mais l'infrastructure avec laquelle le langage interagit. À cet égard, MT4 et MT5 sont deux mondes différents.

La différence en tout. En commençant par le petit - avec la numérotation des barres dans l'indicateur, dans MT4 de droite à gauche, dans MT5 de gauche à droite. Nous poursuivons avec le plus important - la position agrégée et l'organisation des données sur l'historique des échanges. La plus grande différence réside dans ce qui est souvent requis - dans la manière d'accéder aux données des cotations et des indicateurs, la copie des données nécessite une vérification, puis une indexation de gauche à droite, puis de droite à gauche, le moment de la barre est soit inclus dans la plage, soit non. Prenez seul la discussion de la fonction iBarShift() dans CodeBase.

Dans MT4, pour assurer le fonctionnement stable de l'EA il suffisait de vérifier la valeur de retour de OrderSelect(), mais dans MT5 il est nécessaire de faire des vérifications à chaque étape, même aux données du dernier tick. Il existe également certaines subtilités de la programmation MT5, que vous n'apprendrez qu'après avoir beaucoup souffert, car les pièges sont nombreux.


 
Renat:

Ce que vous ne voyez pas sur ce forum.

Pourquoi, il n'y a aucune responsabilité. Vous pouvez dire n'importe quoi.

Les langues sont encore différentes. Le code d'un indicateur pour cinq ne fonctionnera pas toujours pour quatre. La capacité est insuffisante
 
Vinin:
Les langues sont encore différentes. Le code indicateur pour cinq ne fonctionne pas toujours pour quatre. La capacité est insuffisante
Il est préférable que les codes indicateurs de la 4 fonctionnent toujours dans la 4. Et il n'y aura pas besoin de fonctionnalités
 
borilunad:
Il serait préférable que les codes indicateurs de la 4 fonctionnent toujours dans la 4. Et il n'y aurait pas besoin de fonctionnalités.
Ils fonctionnent. À moins qu'ils ne soient modifiés ou recompilés
 
Vinin:
Ils fonctionnent. Sauf si vous les modifiez ou les recompilez.
Je n'ai rien changé dans "Theme", mais quand le Terminal a été mis à jour de la 670ème à la 711ème build, il est devenu lent avec n'importe lequel d'entre eux dans le testeur, c'est pourquoi je l'ai signalé, mais j'ai commencé à expérimenter avec le MA standard et j'ai trouvé beaucoup de choses que je ne pouvais pas avant par inexpérience. Maintenant, je travaille avec elle et j'en suis heureux. Seulement insatisfait de mon achat d'un 8, qui s'appelle, l'a obtenu, et a prévu de travailler sur lui seulement, et sur Vista tout le reste. Je suppose que je vais devoir continuer sur Vista pendant qu'il survit et ensuite l'acheter sans faire confiance à personne et laisser cela 8-th pour le savon, les sites web, etc. :)
 
Renat:

MetaTrader 4 dispose d'une profondeur d'historique limitée, d'horizons temporels distincts et d'un accès direct à ses barres de symboles via Open/High/Low/Close/Time[xxx]. Un tel accès direct est très coûteux à mettre en œuvre en termes de ressources et de coût de l'unité centrale. Considérez que chaque conseiller expert possède sa propre copie locale de ces données pour éviter les conflits avec les autres conseillers experts et le terminal lui-même.

Ce n'est pas vraiment un problème d'utilisateur, c'est votre problème. En d'autres termes, on pourrait dire que vous transférez les problèmes d'accès aux données du terminal sur l'utilisateur.

C'est-à-dire qu'il faut soit élever le niveau des compétences en matière de codage, soit obtenir un grand nombre de codes invalides, ce qui peut être pire et plus inefficace qu'un accès direct pratique dans MT4.

En fait, certaines de vos solutions sont très controversées.

 
TheXpert:

Ce n'est pas vraiment un problème d'utilisateur, c'est votre problème. On peut donc dire que vous transférez les problèmes d'accès aux données du terminal sur l'utilisateur.

En d'autres termes, soit vous élevez le niveau des compétences en matière de codage, soit vous obtenez un tas de codes malhonnêtes qui peuvent fonctionner de manière bien pire et inefficace que l'accès direct et pratique dans MT4.

En général, certaines de vos solutions sont très controversées.


Lisez l'ensemble du texte - il y a un raisonnement direct qui explique pourquoi il est impossible de l'utiliser plus loin.

Pour que l'utilisateur ne nous reproche pas plus tard des freins ou une utilisation excessive des ressources, nous avons donné un contrôle plus efficace sur les données demandées.

Un exemple simple : un Expert Advisor sur l'Eurodollar M1 avec un historique de 10 ans, le graphique actuel prend environ 200 mb. Dans le modèle MT4, nous devrions répliquer (même avec parcimonie) à chaque tick 200 mb dans le shadow snapshot de l'expert et nous perdrions 200 mb de mémoire. Dans MT5, ce type de cache ne consomme aucune mémoire, et le conseiller expert ne demandera probablement qu'un petit morceau d'historique, le placera dans un tableau local et travaillera avec lui à la vitesse maximale.

 
Renat:

Pour éviter que l'utilisateur ne nous reproche plus tard des retards ou une consommation excessive de ressources, nous avons donné un contrôle plus efficace sur les données demandées.

J'ai lu tout le texte. Ce n'est pas impossible. Vous collectez les délais pour les graphiques, vous pourriez les collecter pour les conseillers experts de la même manière, et le faire de manière très efficace.

Qu'est-ce qui vous fait penser que l'utilisateur vous tuerait pour avoir freiné ?

Dans le modèle MT4, nous devrions répliquer (même avec parcimonie) à chaque tick 200 Mb pour shadow snapshot de l'EA et gaspiller 200 Mb de mémoire. MT5 n'a pas du tout besoin de mémoire pour un tel cache, et le conseiller expert ne demandera probablement qu'un petit fragment d'historique, le stockera dans un tableau local et travaillera avec lui à la vitesse maximale.

Faites un cache intelligent (il y a de l'expérience), ne gardez pas le reste en mémoire.
 

Écrivez votre propre moteur de terminal avec un écosystème interne efficace et une machine virtuelle, et ensuite nous parlerons. Nous avons écrit les quatre dernières plates-formes de cette manière, en améliorant l'architecture au fur et à mesure. Nos décisions sont donc justifiées par l'expérience pratique.

Sinon, il est impossible de répondre aux conseils "faites-le, cache intelligente, ils ne seront pas abusés, etc.

 
Integer:

Exactement. Notamment en profitant de l'autorité de sa position supérieure.

Toutes les langues sont les mêmes, sauf celles qui sont particulièrement extravagantes. Tous ces éléments peuvent être appris en 21 jours par n'importe quel crétin. Tous les for, while, if, switch peuvent avoir une notation différente, mais cela ne change rien fondamentalement. Ce n'est pas la façon dont les opérateurs sont écrits qui est importante, mais l'infrastructure avec laquelle le langage interagit. À cet égard, MT4 et MT5 sont deux mondes différents.

Il y a une différence dans tout. En commençant par un point mineur - la numérotation des barres dans l'indicateur, dans MT4 de droite à gauche, dans MT5 de gauche à droite.

...

La numérotation dans MT5 est inversée par rapport à MT4 uniquement par défaut. En fait, les tableaux peuvent être inversés dans n'importe quelle direction. Voir la documentation : Direction d'indexation dans les tableaux, les tampons et les séries chronologiques.

Entier:

...

Nous poursuivons avec les plus essentiels - la position globale et l'organisation des données sur l'historique des échanges.

...

Et sur MT4, il y avait beaucoup de problèmes car nous devions couvrir les positions opposées des instruments en envoyant un ordre supplémentaire au serveur via OrderCloseBy(), ce qui ne fonctionnait pas toujours pour diverses raisons. Par conséquent, nous avons dû vérifier et renvoyer les ordres en plus, sinon toute la logique du système de trading était rompue.

Dans MT5, en raison de la position agrégée, tout a été simplifié à un niveau acceptable. Maintenant, par exemple, nous n'avons même pas à nous soucier de ce que doit être le seuil de rentabilité - cette question stupide n'est pertinente que sur MT4. Après tout, le prix ouvert d'une position globale est le seuil de rentabilité. Tout est devenu plus simple avec les positions gagnantes, car elles sont automatiquement fermées sur le serveur sans envoyer d'ordres supplémentaires.

C'est-à-dire qu'au détriment de la pose globale, la quantité de code a été réduite au niveau nécessaire et suffisant, ainsi que la quantité d'ordres redondants et de vérifications requises pour ceux-ci.

Entier:

Dans MT4, il suffisait de vérifier la valeur de retour de OrderSelect(), alors que dans MT5 il est nécessaire de faire des vérifications à chaque étape, même aux données du dernier tick. Il existe d'autres subtilités de la programmation MT5, que vous n'apprendrez qu'après avoir beaucoup souffert, car les pièges sont nombreux.

Personne n'oblige à utiliser des contrôles supplémentaires dans MT5, vous pouvez espérer la même chose que dans MT4 et essayer de traiter tout ce qui n'est pas contrôlé, qui n'a pas été chargé correctement depuis le serveur ou qui n'a pas été chargé du tout, mais qui vient d'être initialisé. Dans ce cas, les performances correspondront également à celles de MT4, c'est-à-dire que tout ira bien seulement dans le testeur, et nous verrons des absurdités sur le compte démo et le compte réel.

L'augmentation du nombre de contrôles supplémentaires dans MT5 est destinée à garantir la qualité des informations obtenues. Dans MT4, un grand nombre de ces contrôles sont absents, de sorte que dans certains cas critiques, il est impossible de s'assurer que les informations reçues du terminal, qui doivent être traitées pour prendre une décision, sont fiables. Vous ne pouvez qu'espérer que le terminal a téléchargé correctement tout ce dont il a besoin depuis le serveur, mais il n'y a aucun moyen d'en être sûr - il n'y a rien pour vérifier l'exactitude.


De manière générale, une attaque contre MT5 - n'est qu'une excuse pourrie pour ceux qui ne veulent pas passer à un nouveau terminal ou une invention de ceux qui ont seulement entendu parler de MT5, mais ne savent pas où il se trouve.

MT4 est le terminal d'hier pour créer des algorithmes primitifs plus ou moins adaptés au "trading" dans le testeur pour dessiner de belles courbes d'équilibre. Si dessiner de belles courbes d'équilibre ne vous intéresse pas, parce que vous ne pouvez pas les mettre dans votre poche et sur votre pain, et que vous ne pouvez les utiliser que pour vous vanter dans le fil rustique, vous devez passer à MT5.