Discussion sur la mise en place des conseillers.

 

Bonjour, j'étudie le mql5 et cela fait longtemps que je n'ai pas pu décoller. Comme chacun écrit ses programmes différemment, chacun est sûr de son approche, et il est difficile pour les débutants de comprendre laquelle est optimale.

J'aimerais moi-même comprendre et je pense que la communauté bénéficierait d'une discussion publique sur la mise en œuvre de solutions optimales pour les blocs EA typiques. Par exemple, quelqu'un n'écrit presque rien dans l'initialisation, et quelqu'un remplit très largement ce bloc. Les contrôles qu'un EA doit ou ne doit pas effectuer. Prises et arrêts virtuels ou non, etc. Les modalités mêmes de mise en œuvre de la stratégie sont également intéressantes.

Donc, ma suggestion est que si quelqu'un veut partager ses connaissances. Ensuite, nous pouvons discuter de la mise en œuvre, par exemple, sur l'exemple de nettler, ou un simple Expert Advisor basé sur la moyenne mobile, comme s'il y a un écart par rapport à la moyenne, puis attendre le retour à la moyenne. Ou toute autre stratégie que vous souhaiteriez montrer. Affichez le code avec des commentaires sur les raisons pour lesquelles vous avez décidé de l'écrire de cette façon.

Merci d'avance à ceux qui décident de contribuer à l'éducation et à l'amélioration de la qualité du code dans la communauté open source.

 
Ivan_Invanov:

Bonjour, j'étudie mql5 et cela fait longtemps que je n'ai pas pu décoller. C'est parce que chacun écrit ses programmes différemment, chacun est sûr de son approche, et il est difficile pour les débutants de comprendre laquelle est optimale.

J'aimerais moi-même comprendre et je pense que la communauté bénéficierait d'une discussion publique sur la mise en œuvre de solutions optimales pour les blocs EA typiques. Par exemple, quelqu'un n'écrit presque rien dans l'initialisation, et quelqu'un remplit très largement ce bloc. Les contrôles qu'un EA doit ou ne doit pas effectuer. Prises et arrêts virtuels ou non, etc. Les modalités mêmes de mise en œuvre de la stratégie sont également intéressantes.

Donc, ma suggestion est que si quelqu'un veut partager ses connaissances. Ensuite, nous pouvons discuter de la mise en œuvre, par exemple, sur l'exemple de nettler, ou un simple Expert Advisor basé sur la moyenne mobile, comme s'il y a un écart par rapport à la moyenne, puis attendre le retour à la moyenne. Ou toute autre stratégie que vous souhaiteriez montrer. Affichez le code avec des commentaires sur les raisons pour lesquelles vous avez décidé de l'écrire de cette façon.

Merci d'avance à ceux qui choisissent de contribuer à l'éducation et à l'amélioration de la qualité du code dans la communauté open source.

vous avez lu tous les articles sur le développement de l'EA sur ce site et vous ne pensiez pas que c'était suffisant ? et vous êtes un littéraliste)

 
Aleksey Mavrin:

vous avez lu tous les articles sur le développement de l'EA sur ce site et vous ne pensez pas que c'est suffisant ? et vous êtes un littéraliste)

Je trouve difficile de former un paradigme pour l'exécution des programmes. Oui, j'ai vu cet article sur la réduction du temps, il est très utile. Mais à quoi bon réduire le temps d'exécution d'une seule pièce. Lorsque, par exemple, l'approche de la solution elle-même ralentit considérablement par rapport à une autre approche de la solution. Êtes-vous sûr qu'il n'y a pas de meilleur moyen d'écrire des EA que vous. Félicitations, vous devez être du plus haut niveau. Peut-être pouvez-vous nous montrer un exemple de code ?
 
Ivan_Invanov:
Je trouve difficile de former un paradigme pour la gestion d'un programme. Oui, j'ai vu cet article sur la réduction du temps, il est très utile. Mais à quoi bon réduire le temps d'exécution d'une seule pièce. Lorsque, par exemple, l'approche de la solution elle-même ralentit considérablement par rapport à une autre approche de la solution. Êtes-vous sûr qu'il n'y a pas de meilleur moyen d'écrire des EA que vous. Félicitations, vous devez être du plus haut niveau. Peut-être pouvez-vous me montrer un exemple de code alors ?
Tu fais ce que tu fais. Et vous développerez votre propre paradigme avec le temps.
 
Ivan_Invanov:
Je ne peux pas former un paradigme de l'exécution du programme. Oui, j'ai vu cet article sur la réduction du temps et il est très utile. Mais il n'y a aucun sens à diminuer la durée de fonctionnement d'un fragment séparé. Lorsque, par exemple, l'approche de la solution elle-même ralentit considérablement par rapport à une autre approche de la solution. Êtes-vous sûr qu'il n'y a pas de meilleur moyen d'écrire des EA que vous. Félicitations, vous devez être du plus haut niveau. Peut-être pouvez-vous nous montrer un exemple de code ?

Les liens vers les articles ici sont insérés automatiquement par mots-clés.

Et je veux dire beaucoup d'articles avec des conseillers experts prêts à l'emploi, où les auteurs expliquent le code spécialement pour les gens comme vous. Vous les avez regardés ? Il y a suffisamment d'exemples.

La manière optimale est une notion situationnelle.

Votre approche systémique est bonne.

Divisez le processus de création de l'EE en deux étapes :

1. algorithme

2. le code.

L'essentiel est d'apprendre à formuler l'algorithme. Et vous pouvez coder de plusieurs façons, selon ce qui vous convient le mieux.

Les automates finis avec plusieurs rétroactions sont-ils familiers ? Si ce n'est pas le cas, étudiez la théorie et vous aurez une meilleure idée de par où commencer.

 
Ivan_Invanov:

Bonjour, j'étudie mql5 et cela fait longtemps que je n'ai pas pu décoller. Comme chacun écrit ses programmes différemment, chacun est sûr de son approche, et il est difficile pour les débutants de comprendre laquelle est optimale.

J'aimerais moi-même comprendre et je pense que la communauté bénéficierait d'une discussion publique sur la mise en œuvre de solutions optimales pour les blocs EA typiques. Par exemple, quelqu'un n'écrit presque rien dans l'initialisation, et quelqu'un remplit très largement ce bloc. Les contrôles qu'un EA doit ou ne doit pas effectuer. Prises et arrêts virtuels ou non, etc. Les modalités mêmes de mise en œuvre de la stratégie sont également intéressantes.

Je ne comprends pas l'intérêt du sujet.

Il est clair que chaque codeur a ses propres préférences, ses propres principes, ses propres vues sur la structure du programme. Vous aurez les vôtres. Pour les développer, vous devez écrire le code et le tester. En découvrant les régularités et les erreurs, vous vous ferez une idée de la structure de programme qui vous convient le mieux.

Implémentations spécifiques - dans KodoBase, beaucoup d'options. Prenez n'importe lequel d'entre eux et explorez-le, utilisez-le et modifiez-le.

De quoi d'autre avez-vous besoin ?

 
Georgiy Merts:

Je ne comprends pas le but de ce sujet.

Il est clair que chaque codeur a ses propres préférences, ses propres principes, ses propres points de vue sur la structure du programme. Vous aurez les vôtres. Pour les découvrir, vous devez écrire du code et le tester. En découvrant les régularités et les erreurs, vous vous ferez une idée de la structure de programme qui vous convient le mieux.

Implémentations spécifiques - dans KodoBase, beaucoup d'options. Prenez n'importe lequel d'entre eux et explorez-le, utilisez-le et modifiez-le.

De quoi d'autre avez-vous besoin ?

Je regarde Kodobase, bien sûr. Je n'ai aucun doute sur le code d'un seul auteur, metaquotes, c'est le développeur officiel. J'apprends de lui. L'homme y écrit de manière logique et utilise au maximum les fonctions intégrées. Mais il a très peu de conseillers experts. En général, il y a beaucoup de code douteux écrit par différents auteurs, et il arrive souvent que l'on regarde le code et que l'on ne comprenne pas pourquoi il a été écrit de telle manière. Eh bien, je suis surpris de voir à quel point les gens sont confiants dans ces implémentations. Peut-être que je suis trop inquiet, bien sûr. Je devrais probablement l'écrire juste pour que ça marche, comme on dit ici.

 
Mais il me semble que tôt ou tard, il y aura une sorte de consensus dans l'open source. Après tout, les gens écrivent la même chose encore et encore, mais avec des variations. Alors pourquoi ne pas préparer des pièces et en discuter. Par exemple, nous avons ici la mise en œuvre d'un générateur de flux nets, qui a été porté à une vitesse et une fonctionnalité optimales. Je vais le faire. Je n'ai tout simplement pas assez de connaissances pour utiliser les solutions optimales. Je vais dessiner un schéma, et ce qui me vient à l'esprit en premier, ce sera ça. Ou je l'emprunterai à quelqu'un d'autre ayant le même niveau de connaissances. Mais si nous donnions des exemples de mise en œuvre, des personnes expérimentées et érudites se joindraient à nous, corrigeraient quelque chose, discuteraient entre elles et parviendraient à un consensus. Au final, tout le monde obtiendrait un code de qualité, ou au moins un exemple à suivre.
 
Ivan_Invanov:
Mais il me semble que, tôt ou tard, il y aura un consensus dans l'open source. Après tout, les gens écrivent la même chose de temps en temps, mais avec des variations. Alors pourquoi ne pas faire des pièces toutes faites et en discuter. Par exemple, nous avons ici la mise en œuvre d'un générateur de flux nets, qui a été porté à une vitesse et une fonctionnalité optimales. Je vais le faire. Je n'ai tout simplement pas assez de connaissances pour utiliser les solutions optimales. Je vais maintenant dessiner un schéma, et ce qui me vient à l'esprit, ce sera ça. Ou je l'emprunterai à quelqu'un d'autre ayant le même niveau de connaissances. Mais si nous donnions des exemples de mise en œuvre, des personnes expérimentées et érudites se joindraient à nous, corrigeraient quelque chose, discuteraient entre elles et parviendraient à un consensus. Au final, tout le monde obtiendrait un code de qualité, ou au moins un exemple à suivre.

L'idée est bonne. La base d'Igor Kim a été très utile à l'époque, merci beaucoup pour son travail :)

 
Ivan_Invanov:

En regardant la kodobase bien sûr. Je n'ai aucun doute sur le code d'un seul auteur, metaquotes, qui est le développeur officiel. J'apprends de lui. Cet homme écrit logiquement et utilise au maximum les fonctions intégrées. Mais il a très peu de conseillers experts. En général, il y a beaucoup de code douteux écrit par différents auteurs, et il arrive souvent que vous regardiez le code et que vous ne compreniez pas pourquoi il a été écrit de cette façon. Eh bien, je suis surpris de voir à quel point les gens sont confiants dans ces implémentations. Peut-être que je suis trop inquiet, bien sûr. Je vais peut-être devoir l'écrire juste pour que ça marche, comme on dit ici.

C'est une autre affaire.

Notez qu'il m'arrive de regarder mon propre code et de ne pas comprendre pourquoi il est écrit à tel ou tel endroit. C'est pourquoi j'essaie de commenter de tels fragments de manière très détaillée en essayant de mentionner toutes les subtilités. Mais je constate encore régulièrement que je n'ai pas envisagé certaines choses.

De plus, j'utilise le code suivant (pour déterminer le type d'exécution), qui a été écrit par un utilisateur du forum faisant autorité :

ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling(string strSymbol,ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
      return(otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = (ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(strSymbol, SYMBOL_TRADE_EXEMODE);
   const int iFillingMode = (int)::SymbolInfoInteger(strSymbol, SYMBOL_FILLING_MODE);

   return((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1)) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK)) :
          otfFilingType);
  
   #endif // __MQL5__
};

Je ne comprends pas comment cela fonctionne. D'ailleurs, ce forumer lui-même a dit, lorsqu'on lui a demandé, qu'il ne se souvient plus, c'est juste que ce code a déjà été testé de nombreuses fois et qu'on peut lui faire confiance.

Eh bien, si j'arrive à remplacer ces stupides "questions" par de vraies déclarations "si", je trouverai une solution... Pour l'instant...

 
Il est préférable de faire un schéma fonctionnel et d'écrire directement avec ces blocs, je l'ai fait au début, puis vous commencez à utiliser des fonctions, mais je n'utilise que la POO d'autres personnes. En général, vous devez écrire de manière à pouvoir facilement apporter des modifications à un morceau de code sans devoir tout réécrire.
Raison: