Répondre

Fonction TrailingStop - discutable

5 réponses

Mike H.

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

Visiter le profil

Il y a 9 ans #112526

Lorsque j'ai visualisé la fonction TrailingStop dans l'éditeur, j'ai remarqué que le code était identique

pour le type d'ordre BUY et le type d'ordre SELL.

 

Je me demandais pourquoi mes règles TrailingStop pour mes TRADES COURTS ne s'activaient pas...

 

Voici comment l'assistant EA écrit la fonction : (j'ai souligné les segments en question) (remarquez les différents nombres magiques)

 

double getOrderTrailingStop(int orderMagicNumber, int orderType, double price) {
   double valeur = 0 ;
   if(orderMagicNumber == 2456) {
      valeur = ( 11 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }

 

Il en va de même pour OrderBreakEven :
   }
   if(orderMagicNumber == 3798) {
      valeur = ( 11 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }
   }
   return(NormalizeDouble(value, Digits)) ;
}
 

Idem pour OrderBreakEven :

 

double getOrderBreakEven(int orderMagicNumber, int orderType, double price) {
   double valeur = 0 ;
   if(orderMagicNumber == 2456) {
      valeur = ( 7 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }
   }
   if(orderMagicNumber == 3798) {
      valeur = ( 7 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }
   }
   return(NormalizeDouble(value, Digits)) ;
}
 

Cher Mark, plutôt que d'attendre une mise à jour de l'assistant EA, pourriez-vous me montrer comment effectuer les changements dans l'éditeur ?

 

? ?? Changer BUY en SELL et valeur = ? ???

0

Mike H.

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

Visiter le profil

Il y a 9 ans #126086

Cher Mark, je n'ai pas pu attendre, j'ai donc déjà effectué les changements nécessaires...

 

   if(orderMagicNumber == 3978) {
      valeur = ( 11 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
            valeur = Demande + valeur ;
         } else {
            valeur = Offre - valeur ;
 

   if(orderMagicNumber == 3798) {
      valeur = ( 0 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
            valeur = Demande + valeur ;
         } else {
            valeur = Offre - valeur ;
 

 

Les fonctions TrailingStop et BreakEven fonctionnent bien maintenant...

 

Plus tard, Mike H.

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 9 ans #126096

Bonjour Mike,

 

Je suis désolée, mais jeSi je ne me trompe pas, ces sont fonctionnellement équivalents.

 

if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
   valeur = Demande + valeur ;
} else {
   valeur = Offre - valeur ;

}

 

est fonctionnellement identique à :

 

if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {

   valeur = Offre - valeur ;
} else {
   valeur = Demande + valeur ;
}

 

La condition If reconnaît si l'ordre est un ordre d'achat ou de vente et utilise la valeur appropriée. Ce que vous avez fait, c'est que vous avez seulement modifié la vérification, mais cela devrait fonctionner exactement de la même manière.

 

Donc, si cela fonctionne soudainement, c'est peut-être dû à autre chose.

Marque
StratégieArchitecte de Quantités

0

Mike H.

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

Visiter le profil

Il y a 9 ans #126108

Bonjour Mark, Le premier message de ce sujet montre comment l'EA Wizard génère le code...

L'assistant EA génère le code suivant :

 

double getOrderTrailingStop(int orderMagicNumber, int orderType, double price) {
   double valeur = 0 ;
   if(orderMagicNumber == 2456) {
      valeur = ( 11 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }

 

Il en va de même pour OrderBreakEven :
   }
   if(orderMagicNumber == 3798) {
      valeur = ( 11 * getPointCoef(orderMagicNumber)) ;
      if(value > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            valeur = Offre - valeur ;
         } else {
            valeur = Demande + valeur ;
         }
      }
   }
   return(NormalizeDouble(value, Digits)) ;
}

 

Ce que je vois, c'est qu'il n'y a pas de condition de vente... Les 2 IF sont identiques...

Ci-dessus, l'EA Wizard écrit le code >>> IFs identiques soulignés pour les différents nombres magiques...

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 9 ans #126147

Oui, mais la logique est correcte. Si l'ordre est un ordre d'achat, le prix est calculé d'une certaine manière, sinon (l'ordre doit être un ordre de vente) le prix est calculé d'une autre manière.

 

 

 if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {  

  cela signifie qu'il s'agit d'un ordre d'achat

  …

} else {

  cela signifie qu'il s'agit d'un ordre de vente

  …

}

 

Il ne semble pas y avoir d'erreur dans l'EA, qui a été testé des deux côtés.

Marque
StratégieArchitecte de Quantités

0

Mike H.

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

Visiter le profil

Il y a 9 ans #126157

Je vois et je comprends maintenant... Merci Mark ! !!

0

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