Règles de structure. Apprendre à structurer des programmes, explorer les possibilités, les erreurs, les solutions, etc. - page 16

 
Comme vous pouvez vous y attendre, chacun a sa propre structure et sa propre compréhension de la façon dont les choses doivent être faites. ))
 
tol64:
Comme vous pouvez vous y attendre, chacun a sa propre structure et sa propre compréhension de la façon dont les choses doivent être faites. ))
Exactement, c'est pourquoi je propose d'abandonner cet argument, car nous n'arriverons pas à un consensus de toute façon. Je propose que nous revenions à la discussion sur les principes généraux de la programmation des grands projets.
 
C-4:
Non, non et encore non !!!!!!!!!!!!!!!! Dans cette logique, une simple stratégie de retournement sur une moyenne mobile est également MM. Pourquoi, c'était un contrat de +1 et c'est devenu -1.

:)

Mon collègue a essayé de vous expliquer comment l'EA peut être structurée de manière pratique (les noms des modules sont conventionnels, bien sûr). Au lieu de jouer avec la terminologie (qui n'est pas importante), essayez de vérifier cette division structurelle. C'est assez pratique et productif.

Image. Les flèches montrent le mouvement de l'information :


 
C-4:
Exactement, donc je suggère que nous arrêtions de nous disputer à ce sujet, car nous n'arriverons pas à un consensus de toute façon. Je propose que nous revenions à la discussion sur les principes généraux de la programmation des grands projets.
Il semble que l'un de ces principes soit discuté, lorsqu'il est appliqué aux projets d' échange (à la logique de base de leur création).
 
MetaDriver:

...

Kartinko. Les flèches indiquent le mouvement de l'information :

C'est une façon beaucoup plus claire d'envisager les pensées. Tout est clair, même sans paroles. Sinon, ces interminables bla-bla-bla sont parfois très difficiles à digérer. )) Et après le programme, vous pouvez poser des questions de qualification. Je ne les ai pas encore. ))

 
MetaDriver:

:)

Mon collègue a essayé de vous expliquer comment l'EA peut être structurée de manière pratique (les noms des modules sont conventionnels, bien sûr). Au lieu de jouer avec la terminologie (qui n'est pas importante), essayez de vérifier cette division structurelle. C'est assez pratique et productif.

Les flèches indiquent le mouvement de l'information :

Oui, je peux voir ça. Seule la complexité n'est donnée nulle part mais déléguée au correcteur de recommandation et au moteur du marché. Dans ce schéma, le correcteur doit fouiller dans l'historique des transactions de la TS et comprendre pour elle quel est son état réel. Le pilote du marché doit encore identifier correctement la position actuelle de la stratégie et la corriger, et en compensation, ce n'est pas facile.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64:

C'est une façon beaucoup plus claire de penser les choses. Tout est clair, même sans paroles. Sinon, ces interminables bla-bla-bla sont parfois très difficiles à digérer. )) Et après le programme, vous pouvez poser des questions de qualification. Je ne les ai pas encore. ))

Voici la réponse, même si vous devez faire un dessin pour comprendre la tâche :)

MetaDriver:

:)

(Les noms des modules sont bien sûr relatifs.) Au lieu de jouer avec la terminologie (qui n'est pas importante), essayez de vérifier cette division structurelle. C'est assez pratique et efficace.

Les flèches indiquent le mouvement de l'information :


Où est le chalut là-bas ? Je suppose que c'est dans le bloc MM, car il a besoin d'un prévisionniste directionnel.

Ou est-ce qu'il est toujours dans le conducteur du marché? parce que vous avez besoin de la pose actuelle pour chaluter.

J'ajouterais un prédicteur de volatilité et un bloc supplémentaire pour corriger les stops de protection, à savoir les stops de protection car (imho) la sortie par TP ou SL est une force majeure pour un TS normal.

 
Urain:

C'est la réponse à la question de savoir si vous avez besoin de faire un dessin pour comprendre la tâche :)

Où se trouve le chalut ? Je crois que c'est dans le bloc MM, n'est-ce pas ?

ou dans le moteur du marché? Après tout, la position actuelle est nécessaire pour le chalut.

J'ajouterais un prédicteur de volatilité et un bloc supplémentaire pour corriger les stops de protection, exactement de protection car (imho) la sortie par TP ou SL est une force majeure pour un TS normal.

Et puis quelques blocs de plus et la stratégie commencera à cogner... Si, au tout début, il y a des questions absolument raisonnables pour savoir dans quel bloc décrire une partie de la stratégie et dans quel autre, cela signifie que le schéma n'est pas sans ambiguïté, et cela conduit à quels problèmes connus.
 

Maintenant que nous avons commencé à dessiner des schémas, voici mon schéma amélioré. J'espère qu'il sera plus clair que le précédent :

AVANTAGES

  • Il n'y a que deux modules.
  • Les liens sont clairement définis et sans ambiguïté
  • Toute classe qui décrit 4 méthodes peut être une stratégie de trading.
  • La description de toutes les règles est toujours stockée à un seul endroit : la classe de stratégie de trading. Il n'est pas nécessaire de chercher dans l'ensemble du projet un quelconque "module de volatilité".
  • Le nombre d'états stratégiques est une constante. En vertu d'aucune règle du TS, il ne peut être plus grand. Il ne peut y avoir de modules supplémentaires et ils sont tout simplement inutiles.
  • Toutes les entités communes peuvent et doivent être décrites dans la classe de base du contrôle*.

*Ainsi, la règle "Sortir à la fin de la session de négociation", qui est universelle pour toutes les stratégies, peut être décrite dans la classe de base. Si cette règle est définie, la classe de base appellera la méthode de support de fermeture de la position à la fin de la journée au lieu de l'appeler une nouvelle fois. Et la position sera fermée au bon moment, même si cela n'est pas spécifié dans les règles de la stratégie de base.
 
C-4:

Oui, je peux voir ça. Seule la complexité n'est donnée nulle part, mais déléguée à l'ajusteur de recommandation et au moteur du marché.

C'est bien. Le but n'était pas d'éliminer les difficultés objectives, mais de ne pas en créer de nouvelles.


Selon ce schéma, l'expert doit fouiller dans l'historique des transactions du TS et comprendre pour lui quel est son état réel.

Je pense que nous avons déjà découvert que TS n'a pas d'état (mémoire). Le correcteur n'a pas non plus à creuser l'histoire. Il a été inséré dans le schéma à dessein, à votre demande - je m'en passe parfaitement bien... ))


Le pilote du marché doit encore identifier correctement la position stratégique actuelle et l'ajuster, et dans la compensation, ce n'est pas facile.

:)

Dois-je vous croire sur parole ?

double CMarketDriver::GetCurrentPos(string Sym)
  {
   if(!PosInfo.Select(Sym)) return 0; // DBL_MIN;
   double v=PosInfo.Volume();
   return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
  }
bool CMarketDriver::Synhronize(const SymbolPos  &sp,int  &Err)
  {
   Err=0;
   bool res=true;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
      double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
      double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
      if(pos>0.000001)
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
      if(pos<-0.000001)
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }