Répondre

Demander à l'EA d'arrêter le trading pour ce jour si un Profit ou une Perte en Pips est atteint ?

14 réponses

oiseau70

Abonné, bbp_participant, communauté, 25 réponses.

Visiter le profil

il y a 11 ans #112314

Bonjour Mark,

 

Dans quel bloc de stratégie pourrais-je taper la règle, quand je veux arrêter le trading pour ce jour, si le profit ou la perte journalière est atteint +/- 100 Pips par exemple ?

 

Merci pour vos commentaires,

Birdy70

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

il y a 11 ans #125178

Bonjour,

 

EA Wizard n'a pas de fonction qui renvoie le PL pour un jour courant, mais vous pouvez l'ajouter.

 

1. Ouvrez {Assistant AE}/code/CustomFunctions.mq4 et ajoutez-y le code suivant :

 
double sqGetPLInPipsToday() {
   string todayTime = TimeToStr( TimeCurrent(), TIME_DATE) ;
   double plToday = 0 ;
 
   for(int i=0;i<OrdersHistoryTotal();i++) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
 
         if(OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP) {
            // Sauter les ordres en cours
            continuer ;
         }
 
         if(TimeToStr( OrderOpenTime(), TIME_DATE) == todayTime) {
            if(OrderType() == OP_BUY) {
               plToday += sqGetBid(OrderSymbol()) - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - sqGetAsk(OrderSymbol()) ;
            }         
         }
      }
   }
 
   for (int cc = OrdersTotal() - 1 ; cc >= 0 ; cc-) {
      if (OrderSelect(cc, SELECT_BY_POS) && OrderSymbol() == Symbol()) {
 
         if(OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP) {
            // Sauter les ordres en cours
            continuer ;
         }
 
         if(TimeToStr( OrderOpenTime(), TIME_DATE) == todayTime) {
            if(OrderType() == OP_BUY) {
               plToday += sqGetBid(OrderSymbol()) - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - sqGetAsk(OrderSymbol()) ;
            }         
         }
      }
   }
   
   return(plToday*gPointPow) ;
}
 
 
2. dans votre règle, vous pouvez appeler cette nouvelle fonction, la règle pourrait être :
IF(vos autres règles)
et (Custom Function : sqGetPLInPipsToday() < 100) <- cela signifie que le PL d'aujourd'hui est inférieur à 100 pips
 
ALORS

Marque
StratégieArchitecte de Quantités

0

oiseau70

Abonné, bbp_participant, communauté, 25 réponses.

Visiter le profil

il y a 11 ans #125205

Bonjour Mark,

 

où je dois taper ce code ? Si j'ouvre sur mon PC le dossier C:StrategyQuant/SQEAWizard/Code, je trouve un fichier appelé CustomFunctions.mql4. Si j'ouvre ce fichier, l'éditeur de MT4 s'ouvre avec la fenêtre CustomFunctions. Lorsque je copie votre code dans cette fenêtre, j'obtiens 6 messages d'erreur après avoir compilé ce code !

 

Aidez-moi s'il vous plaît.

 

Birdy70

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

il y a 11 ans #125244

Bonjour,

 

vous devez copier cette fonction dans ce fichier, mais ne la compilez pas, ce n'est pas un EA complet.

Le contenu de ce fichier est ajouté à chaque EA généré par EA Wizard, et c'est donc un endroit où l'on peut placer des fonctions personnalisées.

 

Il suffit donc d'ouvrir EA Wizard, de charger votre stratégie, d'y ajouter la fonction personnalisée et d'exporter vers EA. La compilation devrait alors se faire sans problème.

Marque
StratégieArchitecte de Quantités

0

oiseau70

Abonné, bbp_participant, communauté, 25 réponses.

Visiter le profil

il y a 10 ans #126130

Bonjour Marc,

 

Je suis désolé, mais je ne comprends pas ! Dans mon dossier EAW, je trouve le fichier CustomFunctions.mql4. J'ai pu ouvrir ce fichier avec MT4 Editor (dans MT4) et j'ai pu coller les conditions de trading que vous m'avez indiquées au début. Si j'ouvre les détails de ma stratégie EAW, je peux voir dans la boîte de dialogue sous "Fonctions" le fichier "Custom Function" ! Mais comment taper votre règle de trading dans cette fenêtre. 

 

Peut-être pourriez-vous m'expliquer, étape par étape, comment utiliser cette règle dans EAW ou m'indiquer une autre règle de trading qui indique à l'EA "d'arrêter le trading pour ce jour, après avoir atteint un profit ou une perte de 100 pips ou de 100 euros" !

 

Ce serait très bien.

 

Sous le bouton "Options de stratégie", je vois des règles comme :

Somme des P/L clôturés (Nombre magique / Nombre d'ordres)

Total des bénéfices 

Total des pertes

P/L fermé en Pips (Nombre magique et trades passés)

P/L fermé dans l'argent (nombre magique et transactions passées)

 

N'est-il pas possible de créer, avec ces options, une règle du type :

 

SI

La somme des ordres d'achat/vente fermés est > 100 Pips ou 100 Euro (par exemple)

 

Dans ce cas

Arrêt de la négociation pour cette journée

 

Merci pour votre aide ! J'espère qu'il est possible de créer une règle de trading comme celle-ci.

 

Meilleures salutations

Birdy70

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

il y a 10 ans #126137

Bonjour,

 

Lorsque vous avez copié cette fonction dans le fichier CustomFunctions.mq4, elle sera jointe à chaque nouvel EA, afin que vous puissiez l'utiliser dans vos conditions.

 

Comment faire - ouvrez normalement votre stratégie dans EA Wizard. Cliquez pour ajouter une nouvelle règle de trading, puis allez dans Fonctions -> Fonction personnalisée et dans le champ Fonction écrivez : sqGetPLInPipsToday()

Ajouter < 100 comparaison et cliquer sur OK pour fermer la boîte de dialogue.

 

C'est tout, enregistrez maintenant cette stratégie en tant qu'EA et elle devrait fonctionner.

Marque
StratégieArchitecte de Quantités

0

jastejp

Abonné, bbp_participant, communauté, 8 réponses.

Visiter le profil

il y a 10 ans #129459

Bonjour Marc,

 

Je viens d'acheter EA Wizard après l'avoir comparé à d'autres créateurs d'EA, et j'en suis très satisfait car il comprend de nombreuses fonctions préconstruites à utiliser - je pense que cela le distingue de vos concurrents, alors continuez à faire du bon travail.

 

Malheureusement, je n'arrive pas à faire fonctionner la fonction personnalisée sqGetPLInPipsToday() après y avoir passé toute la journée. Le problème est que le trading continue après que j'ai atteint mon objectif de profit quotidien et je ne sais pas pourquoi alors que j'ai suivi vos instructions très attentivement. Si vous regardez le graphique ci-joint, vous pouvez clairement voir que le premier trade a atteint l'objectif journalier de 20 pips, mais que l'EA continue à trader ce jour-là. Pourriez-vous s'il vous plaît jeter un coup d'œil aux fichiers joints pour déterminer le problème s'il vous plaît.

 

Merci beaucoup.

Voir aussi,

 

Jamie

Fichier : EURUSDM15.pngEURUSDM15.png
Fichier : CCI_MM_v4.sqw

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

il y a 10 ans #129552

ok, j'ai trouvé le problème, il y avait une erreur dans ma fonction, ci-dessous c'est la bonne.

 

 

double sqGetPLInPipsToday() {
   string todayTime = TimeToStr( TimeCurrent(), TIME_DATE) ;
   double plToday = 0 ;
 
   for(int i=0;i<OrdersHistoryTotal();i++) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
 
         if(OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP) {
            // Sauter les ordres en cours
            continuer ;
         }
 
         if(TimeToStr( OrderOpenTime(), TIME_DATE) == todayTime) {
         Log("Comparing ", TimeToStr( OrderOpenTime(), TIME_DATE), " = ", todayTime) ;
            if(OrderType() == OP_BUY) {
               plToday += OrderClosePrice() - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - OrderOpenPrice() ;
            }
         }
      }
   }
 
   for (int cc = OrdersTotal() - 1 ; cc >= 0 ; cc-) {
      if (OrderSelect(cc, SELECT_BY_POS) && OrderSymbol() == Symbol()) {
 
         if(OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP) {
            // Sauter les ordres en cours
            continuer ;
         }
 
         if(TimeToStr( OrderOpenTime(), TIME_DATE) == todayTime) {
            if(OrderType() == OP_BUY) {
               plToday += sqGetBid(OrderSymbol()) - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - sqGetAsk(OrderSymbol()) ;
            }
         }
      }
   }
 
   return(plToday*gPointPow) ;
}

Marque
StratégieArchitecte de Quantités

0

jastejp

Abonné, bbp_participant, communauté, 8 réponses.

Visiter le profil

il y a 10 ans #129560

Bonjour Mark,

 

Merci beaucoup.

Je vais essayer le nouveau code et je vous ferai part des résultats. J'espère que des tests rétrospectifs montreront que l'excès de transactions est le problème et que le script y remédiera.

 

Jamie

0

jastejp

Abonné, bbp_participant, communauté, 8 réponses.

Visiter le profil

il y a 10 ans #129888

Bonjour Mark,

 

Désolé d'avoir tardé à revenir ici. 

 

Il fonctionne et fait exactement ce que je veux. C'est du bon travail !

 

Puis-je vous suggérer de placer des codes utiles comme celui-ci et d'autres dans un fil de discussion du forum, afin qu'ils puissent être facilement trouvés.

 

Nous vous remercions,

Jamie

0

Toiture de Brignac

Abonné, bbp_participant, communauté, client, 91 réponses.

Visiter le profil

il y a 10 ans #130754

J'ai essayé votre chaîne ci-dessus et j'ai fait exactement comme vous l'avez expliqué mais il continue à trader après que le nombre de pips ait été atteint. Je ne sais pas ce que je fais de mal avec cette simple création d'ea.

0

Toiture de Brignac

Abonné, bbp_participant, communauté, client, 91 réponses.

Visiter le profil

il y a 10 ans #130768

Les gars,

  J'ai littéralement travaillé toute la nuit comme vous pouvez le voir par mes quelques posts et je n'y arrive pas. Je n'arrive pas à comprendre ce que j'ai fait de mal, mais je n'y arrive pas.

 

Tout ce que je cherche, c'est une stratégie simple pour apprendre. Disons qu'il faut être long quand EMA 10> EMA 20 et court quand EMA10 < EMA 20.... Tout ce que je veux c'est faire un stop profit à $10 et commencer le jour de trading suivant... Je suis épuisé d'avoir travaillé toute la nuit et j'apprécierais que cela soit fait le plus rapidement possible....

0

boraucak

Abonné, bbp_participant, communauté, 14 réponses.

Visiter le profil

Il y a 9 ans #135674

Bonjour, 

Tout d'abord, je vous remercie pour tout le soutien que vous apportez à l'EA Wizard,

 

cette fonction est géniale et j'en avais désespérément besoin. 

Mais une petite correction est nécessaire pour ce code. 

 

        if(OrderType() == OP_BUY) {
               plToday += OrderClosePrice() - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - OrderOpenPrice() ;
 
ce code doit être :
 
        if(OrderType() == OP_BUY) {
               plToday += OrderClosePrice() - OrderOpenPrice() ;
            } else {
               plToday += OrderOpenPrice() - OrderClosePrice() ;
 
Corrigez-moi si je me trompe car je ne suis pas un codeur et j'ai trouvé cela en essayant (quelques heures) :/
 
merci encore pour votre soutien. 
meilleur 

0

tomas262

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 9 ans #135684

Oui, c'est exact. Celui-là Prix d'ouverture de la commande() doit être remplacé par Prix de clôture de la commande()

0

Jack Archer

Client, bbp_participant, community, sq-ultimate, 6 réponses.

Visiter le profil

Il y a 8 mois #287831

Hello, is there some way to set a daily profit target or daily stop loss in StrategyQuant.  I can’t seem to figure a setting or a custom block that might do this for me.  Thank you!

0

Affichage de 14 réponses de 1 à 14 (sur un total de 14)