Questions sur la POO dans MQL5 - page 76

 
awsomdino:

L'exemple devrait être pris de Saber, je ne sais pas le vrai but de celui-ci, mais j'ai vu son si autre) arbres là pour obtenir ce dont vous avez besoin. Quand je suis venu ici, j'avais une question, comment le faire tout de suite, et chercher comment le mettre en œuvre, tout relire - vraiment perdu que du temps, il n'y a pas de mise en œuvre correcte, des tas d'articles et partout son propre. Je suis vraiment déçu lorsque vous ne comprenez pas grand-chose au code et que vous vous trouvez au carrefour de 5 routes et que vous vous demandez quel chemin emprunter. La question n'est même pas de savoir si vous trouverez un système de trading rentable ici, la question est de savoir si vous trouverez le bon chemin optimal ici) - C'est notre cher MQL5.

Eh bien, il dit ouvertement que vous devez toujours chercher un TS rentable, chercher des instruments où vous pouvez appliquer le TS, et vous devez chercher rapidement.

Et dans les signaux, son TS a montré des résultats, puis a cessé de fonctionner, puis il a rallumé le TS (je soupçonne qu'il l'a rouvert avec de nouveaux paramètres), le TS est remonté, puis a cessé de fonctionner à nouveau...

Si cette fonctionnalité est flexible et vous permet d'optimiser rapidement et de rechercher des outils à appliquer - alors vous avez tout ce dont vous avez besoin.

mais recherchez un seul EA, qui sera testé sur tout l'historique disponible sur un outil spécifique..... Eh bien, je l'ai déjà fait, je ne pense pas qu'il y ait quoi que ce soit là.

 

Igor, on parle de code ici).

et je n'aime pas non plus ses systèmes, ils sont à moitié trichés.

Je devrais m'intéresser à l'escrime, ou au kendo.

 
awsomdino:

Igor, on parle de code ici).

Je n'aime pas non plus ses systèmes, ils trichent.

Je suis en train de lire un livre ici))) ("Programming Without Fools")

je ne connais pas ses systèmes, mais j'utilise les codes de QB - c'est un vrai gain de temps, je dirai même - il a créé une infrastructure robuste que je peux prendre et utiliser, d'autant plus qu'il maintient ses codes en permanence.

 
awsomdino:

Les classes, l'héritage, la virtualisation, les modèles, il était très difficile pour moi de comprendre tout cela en tant qu'autodidacte, j'ai compris un peu et j'ai abandonné la POO, je ne peux même pas imaginer comment les gens s'embêtent dans leurs robots - que vous devez utiliser tout cela, c'est juste une frime. Structures au maximum.

Semka est parti avec son dessin, qui a besoin de ce dessin, ici ils sont venus pour gagner de l'argent pour eux et leurs proches, bien sûr les développeurs n'ont pas eu pitié de lui. Peter, tout sauf le commerce). Les programmeurs sont déconcertés par leur fonctionnalité inutile.

#define  LOG(dText) CLog::Get().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   CLog() {}
public:
   static CLog* Get() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}

Ici, vous avez la POO et la macrosubstitution et même un loner douteux (pour ceux qui apprécient la rapidité). Ceci a été écrit à titre d'exemple, mais naturellement, vous pouvez créer un fichier de journalisation dans le constructeur, y écrire dans Log(...) et le fermer dans le destructeur. Voici un exemple de ce dont il s'agit. Bien sûr, vous pouvez travailler sur les fonctions, mais dans le cas de votre propre fichier, vous aurez plus de code, et vous aurez plus de variables globales, et ce n'est pas très orthodoxe)))).

 
Vladimir Simakov:

Ici, vous disposez de la POO et de la substitution de macro et même d'un simple singleton (pour les amateurs de vitesse). Il a été écrit à titre d'exemple, mais naturellement, vous pouvez créer un fichier de journalisation dans le constructeur, y écrire dans Log(...), et le fermer dans le destructeur. Voici un exemple de ce dont il s'agit. Bien sûr, vous pouvez travailler avec des fonctions, mais dans le cas de votre propre fichier, vous aurez plus de code, et vous aurez plus de variables globales, et ce n'est pas très orthodoxe)))).

Merci, je vais enregistrer l'exemple

 
awsomdino:

Merci, je vais enregistrer l'exemple.

Le plus drôle, c'est que vous n'avez pas besoin de le sauvegarder, vous devez le comprendre. Une personne qui comprendra écrira immédiatement qu'un solitaire n'est pas nécessaire ici, et que tout peut être réduit à

#define  LOG(dText) CLog::Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
public:
   static void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}
 
Vladimir Simakov:

Le plus drôle, c'est que vous n'avez pas besoin de le sauvegarder, vous devez le comprendre. Une personne compréhensive écrira tout de suite que le solitaire n'est pas nécessaire ici, et que tout peut être réduit à

merci, c'est un code que j'ai compris depuis longtemps)

d'ailleurs, écrivez mieux le code dans le format par défaut, c'est sur ces nuances que je suis resté bloqué

_Symbol
Symbol();

symbolinfo et d'autres choses sans intérêt qui ont vraiment gâché mon attention et mon temps.

Que puis-je dire, je n'ai toujours pas d'information à 100% et je me pose des questions sur ce que je vais en faire.

 
Vladimir Simakov:

Le plus drôle, c'est que vous n'avez pas besoin de le sauvegarder, vous avez besoin de le comprendre. Toute personne qui comprendra écrira que nous n'avons pas besoin du singleton ici, et que tout peut être réduit à

un incompris écrira que nous n'avons pas besoin de la POO ici, nous pouvons la remplacer par un appel de fonction

et puis à nouveau se diviser en deux camps et s'embrouiller pendant plusieurs pages ;)))

 
Igor Makanu:

une personne compréhensive écrira que la POO est inutile ici, vous pouvez la remplacer par un appel de fonction

puis à nouveau en deux camps et un désordre pendant plusieurs pages)))

Bien joué ! C'est vrai ! Et ça ?

#define  LOG(dText) CLog::Ptr().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   int cHndl;
   CLog():cHndl(FileOpen(MQLInfoString(MQL_PROGRAM_NAME)+_Symbol+(string)(int)TimeCurrent()+".log",FILE_TXT|FILE_WRITE)){}
  ~CLog() {FileClose(cHndl);}
public:
   static CLog* Ptr() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text){
      string _text=StringFormat("Line: %s. Signature: %s. %s",line,sig,text);
      PrintFormat(_text);
      FileWrite(cHndl,_text);}
};

Vous conviendrez que c'est plus compliqué))))

 
Vladimir Simakov:

Bien joué ! C'est vrai ! Et ça ?

Vous devez admettre que c'est un peu plus compliqué))))

Là où il y a des classes, il y a des buggys partout).

* et & peuvent vous surprendre.

Code pas compliqué, la seule classe pratique, constructeur avec un destructeur, je ne vois pas encore d'autres plus,

les structures sont plus pratiques et moins compliquées à apprendre).

Beaucoup ne connaissent même pas ou ne comprennent pas les capacités des structures. Il n'y a pas si longtemps qu'il a commencé publiquement à les utiliser largement dans son code.