Aide au codage - page 662

 
techmac:
Pourquoi ne pas utiliser quelque chose d'ici https://www.mql5.com/en/forum/178566
Merci pour vos conseils, mais ce serait quand même bien si quelqu'un pouvait coder les alertes comme la ligne verticale, qui se déplace tout le long de la page donne une vue précise du croisement des prix sur tous les indicateurs dans les fenêtres secondaires ou ultérieures, un avantage supplémentaire pour trouver le prochain point d'entrée.
 
mladen:
C'est, plus ou moins, un zigzag. Les alertes sur celui-ci seraient presque les mêmes que les alertes en zigzag (et souffriraient des mêmes problèmes).

Merci pour votre réponse Mladen --- Je suis d'accord avec votre commentaire mais que diriez-vous si les alertes pouvaient être programmées de telle manière que l'alerte 1 soit activée sur la formation de la ligne verticale à la clôture de la bougie, vous rendant conscient du changement potentiel de direction de la tendance et que l'alerte 2 (la ligne horizontale) soit activée à la clôture de la deuxième ou troisième bougie après l'alerte de la ligne verticale et en dessous du point le plus haut atteint - lorsque l'alerte 2 est alors activée, elle devrait fournir un bon point d'entrée - si non alors ne tradez pas. Et oui, le prix peut sortir même après l'alerte 2, mais depuis le temps que je fais du trading et que j'observe, je ne pense pas qu'un tel événement se produise plus de 20%-30%, un risque acceptable. Quoi qu'il en soit, c'est juste une idée pour un codeur qui pourrait passer un peu de temps dessus et jouer avec.

Mais pendant que j'ai un peu de votre attention, je voudrais vous demander pourquoi les indicateurs HMA/Hull ne sont pas programmés pour changer de couleur ou donner des alertes lorsqu'ils traversent le prix (bougie) - de nombreux pips sont perdus au moment où l'on entre dans le trade sur le changement de couleur de la HMA/Hull ou de tout autre indicateur MA. Voir ma pièce jointe pour un visuel : Merci pour votre temps Mladen - respectueusement, un collègue trader :)

Dossiers :
HMA.jpg  188 kb
 

bonjour mladen

J'ai trouvé un indicateur appelé "NON LINEAR ATR" qui est écrit en langage simple (tradestation).

est-il possible de le convertir en mql4 ?

merci

 
lbubu:

bonjour mladen

J'ai trouvé un indicateur appelé "NON LINEAR ATR" qui est écrit en langage simple (tradestation).

est-il possible de le convertir en mql4 ?

Merci

Cela devrait être possible

Je vais vérifier

 
lbubu:

bonjour mladen

J'ai trouvé un indicateur appelé "NON LINEAR ATR" qui est écrit en langage simple (tradestation).

est-il possible de le convertir en mql4 ?

Merci

C'est la partie qui gère les entrées


Dossiers :
 

Cher mladen

Je teste un EA en Trading qui utilise le code simple suivant pour vérifier si un ordre a été ouvert. Mais lorsque je change de cadre temporel, il ouvre un nouvel ordre. Le problème vient-il du code ou ai-je besoin d'un EA à plusieurs horizons temporels ?


   int OpenOrder = 0;
   for (int i=OrdersTotal()-1; i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber
         && (OrderType() == OP_BUY || OrderType() == OP_SELL)) OpenOrder++;
        }
     }
   return(OpenOrder);


Meilleur,

 
IXI:

Cher mladen

Je teste un EA en Trading qui utilise le code simple suivant pour vérifier si un ordre a été ouvert. Mais lorsque je change de cadre temporel, il ouvre un nouvel ordre. Le problème vient du code ou bien j'ai besoin d'un EA à trames temporelles multiples ?!



Le meilleur,

Vous n'avez pas besoin d'un EA multi-trames temporelles

Comment utilisez-vous cette partie du code (je veux dire, comment empêchez-vous l'EA d'ouvrir un nouvel ordre si l'OpenOrder est > 0) ? Il doit y avoir une partie du code qui fait cela (le code que vous avez posté renverra un nombre correct indépendamment de la période).

 
lbubu:

bonjour mladen

J'ai trouvé un indicateur appelé "NON LINEAR ATR" qui est écrit en langage simple (tradestation).

est-il possible de le convertir en mql4 ?

merci

La version avec les sorties(stop0 pertes) ajouté aussi

 

Chers amis !
Voici un expert Universal MA Cross bien connu. Il fonctionne bien avec les bons paramètres et offre de grandes options de gestion de l'argent et de filtrage des signaux, mais je voudrais demander aux codeurs professionnels d'ajouter une option permettant d'utiliser les moyennes mobiles d'une période supérieure définie par l'utilisateur pour les signaux de croisement. La capture d'écran montre l'idée d'utiliser des moyennes mobiles d'une période plus élevée (moyennes mobiles 1 heure tracées sur un graphique 5 minutes).

Les fichiers mql des indicateurs Universal MA Cross EA et MTF MA sont joints.

Je serai reconnaissant pour toute aide et tout conseil.

Dossiers :
 

Cher mladen

Merci pour votre réponse.

Il est intéressant que l'EA vérifie seulement si OpenOrder == 0, pour envoyer un nouvel ordre. Je ne sais pas si c'est suffisant ou s'il faudrait vérifier si OpenOrder est > 0 ?

Vous avez également mentionné que l'historique de MetaTrader n'est pas classé par heure de clôture des ordres, du moins en manuel. Comment les résultats consécutifs des ordres doivent-ils être vérifiés pour un EA ? J'ai une idée mais je ne suis pas sûr qu'elle soit pratique. Quelque chose comme le code suivant utilisant des tableaux pour les quelques derniers ordres :

int ConsecutiveResults()
  {
   int Results[] ;
   int Orders = 0;
   ArrayResize (Results,OrdersHistoryTotal()); 
   datetime CloseTime  = 0;   
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() > CloseTime)
      Results[i] = TimeCurrent()-OrderCloseTime();
     }
   ArraySort(Results);
   for(int j=5; j>=0 ; j--)
     {
      for(int k=OrdersHistoryTotal()-1; k>=0; k--)
        {
         if (OrderSelect(k,SELECT_BY_POS,MODE_HISTORY))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() > CloseTime)
         if (TimeCurrent()-OrderCloseTime() == Results[j] && OrderProfit() > 0) Orders++;
         if (TimeCurrent()-OrderCloseTime() == Results[j] && OrderProfit() < 0) Orders--;
        }
     }
   return(Orders);
}
Le meilleur,