Discussion de l'article "Better Programmer (Partie 02): Arrêtez de faire ces 5 choses pour devenir un programmeur MQL5 performant"

 

Un nouvel article Better Programmer (Partie 02): Arrêtez de faire ces 5 choses pour devenir un programmeur MQL5 performant a été publié :

Il s'agit de l'article incontournable pour tous ceux qui souhaitent améliorer leur carrière en programmation. Cette série d'articles vise à faire de vous le meilleur programmeur possible, quelle que soit votre expérience. Les idées discutées fonctionnent aussi bien pour les débutants en programmation MQL5 que pour les professionnels.

J'utilise beaucoup le mot noob dans cette série d'articles pour décrire quelqu'un avec moins d'expérience en programmation MQL5 (ne soyez pas offensé par cela). Cela facilite la relation. Cela ne veut pas dire que cet article est réservé aux noobs. Absolument pas ! C'est pour tout le monde, quelle que soit votre expérience en programmation, car ce qui fait de vous un noob ou non, ce sont vos habitudes et vos comportements de codage... pas des années de codage.

codeur noobs_vs_professionnel 


Le premier article est ici pour ceux qui ne l'ont pas lu, alors laissez-moi poursuivre cette mission de transformer les débutants en professionnels.

Auteur : Omega J Msigwa

 
Merci pour votre article ...
 

Bonjour à tous,

Je suis un noob. J'ai beaucoup d'expérience en programmation mais je commence seulement à coder en MQL5 - c'est mon premier langage similaire au C++. J'ai lu la documentation de référence mais je n'arrive pas à trouver mon erreur - la valeur que je m'attends à recevoir d'expoMA est imprimée/commentée sur mon graphique comme 0.0 - est-ce que je fais une erreur de syntaxe ? Je ne reçois aucun problème/erreur lors de la compilation. Tout commentaire de votre part serait le bienvenu.

void OnTick(
  {   
   int days = 3; 
   
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
  
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   double movingAverageValues[];
   
   double bidAskAverage = (Ask + Bid)/2;
   
   int exponentialMovingAverage = iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);
      
   ArraySetAsSeries(movingAverageValues,true);
   
   CopyBuffer(exponentialMovingAverage,0,0,3,movingAverageValues);

   double alpha = expoMA(days);
   
   double dEMA = bidAskAverage - movingAverageValues[1]; // l'indice 1 représente ici l'EMA de la valeur t - 1
      
   Comment("The ask price is: " +     DoubleToString(Ask,5) + "\n"
           "The bid price is: " + DoubleToString(Bid,5) + "\n" 
           "The average price is: " + DoubleToString(bidAskAverage,5) + "\n"
           "The custom expoMA value is: " + DoubleToString(alpha,5) + "\n"
           "The dEMA value is: " + DoubleToString(dEMA,5)) ;   
   }

double expoMA(int days=2)
   {   
    double alpha = 2 / (days + 1);   
    NormalizeDouble(alpha,5);
    return(alpha);
   }
 
spinner461:

Bonjour à tous,

Je suis un noob. J'ai beaucoup d'expérience en programmation mais je commence seulement à coder en MQL5 - c'est mon premier langage similaire au C++. J'ai lu la documentation de référence mais je n'arrive pas à trouver mon erreur - la valeur que je m'attends à recevoir d'expoMA est imprimée/commentée sur mon graphique comme 0.0 - est-ce que je fais une erreur de syntaxe ? Je ne reçois aucun problème/erreur lors de la compilation. Tout commentaire de votre part serait le bienvenu.

double expoMA(int days=2)
   {   
    double alpha = 2.0 / (days + 1);

    //...
   }

Vous divisez 2/4 en entiers (0), qui sont ensuite analysés en doubles. Au lieu de cela, vous devriez faire en sorte que le dividende ou le diviseur soit un double (de sorte que la division soit effectuée dans le type de données "le plus détaillé").

D'autres options pourraient être (étant des jours un int) :

double alpha = double(2) / (days + 1);
double alpha = 2 / (days + 1.0);
double alpha = 2 / double(days + 1);
C'est probablement une erreur de python.
 

Manuel Alejandro Cercos Perez:

Vous divisez 2/4 en entiers (0), qui sont ensuite analysés en doubles. Au lieu de cela, vous devriez faire en sorte que le dividende ou le diviseur soit un double (de sorte que la division soit effectuée dans le type de données "le plus détaillé").

D'autres options pourraient être (étant des jours un int) :

C'est probablement une erreur de python heheh


Hey Manuel,

Merci beaucoup ! L'astuce ci-dessus a fonctionné comme un charme. Vous m'avez évité de passer de nombreuses heures à trouver la cause première.

 
Oh là là, vraiment !
 
Comment puis-je créer une fonction qui n'autorise qu'un seul trade ou une seule position ouverte par bougie, non seulement au début de la bougie mais jusqu'à ce qu'une nouvelle bougie se forme. La fonction newbar n'autorise qu'au début de la nouvelle bougie.
 
Il y a beaucoup de sacs d'escroquerie
 
S'il s'agit de MQL5, vous devez initialiser l'iMA dans OnInit.

Sinon, vous le ferez à chaque tick reçu.

Votre dernière question : prenez l'heure d'ouverture et ajoutez-y
Period seconds()/2, vous êtes alors à la moitié de la période.





 
Dominik Egert:
S'il s'agit de MQL5, vous devez initialiser l'iMA dans OnInit.

Sinon, vous le ferez à chaque tick reçu.

Votre dernière question : prenez l'heure d'ouverture et ajoutez-y
Period seconds()/2, vous êtes alors à la moitié de la période.





Toute question concernant l'aide au codage doit être postée sur le forum en tant que sujet indépendant.
 

Bravo aux traducteurs.

Après le premier article, j'ai eu des doutes, mais maintenant je suis sûr que l'auteur veut expliquer aux programmeurs crétins qu'ils sont des crétins. Auteur, ne vous vexez pas, mais l'article est écrit pour vous. En outre, l'arrogance avec laquelle vous vous adressez à vos lecteurs réduit votre travail à néant.