Discussion de l'article "MQL5 Cookbook : Expert Advisor multi-devises - Approche simple, nette et rapide" - page 3

 
//+------------------------------------------------------------------+
//|| Calcule le niveau du Trailing Stop |
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Variables pour les calculs
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Valeur basse pour l'achat
   double    sell_point  =high[symbol_number].value[1]; // Valeur élevée pour Vendre

Il ne sera pas correct de le faire. Si la position et le prix de la barre s'ouvrent sur un écart, le StopLoss ne sera pas défini correctement.

 
Jose:

L'article est clair et facile à suivre, et fournit les paramètres dans les fichiers .set. J'ai eu un problème avec les modes d'exécution des symboles, en particulier la condition vérifiant s'il s'agissait d'un instantané ou d'un marché, et seulement après cela permettant l'ouverture d'ordres, que j'ai dû supprimer, mais tout a bien fonctionné .

J'ai une question à poser. J'ai vu de nombreuses approches avancées, comme celle-ci, qui sont construites à partir de la base en négligeant la structure Expert, ExpertSignal, ExpertTrade.... fournie, même si elles passent beaucoup de code (et de temps, je suppose) à reproduire certaines de ses caractéristiques. Quelqu'un pourrait-il me justifier cela, s'il vous plaît ?

Bonjour à tous !

J'essaie de tester cet EA mais je viens d'obtenir le message suivant dans Strategy Tester : "Erreur d'ouverture de la position : 4753 - 1 The position not found". Je ne comprends pas pourquoi. Cela se produit lorsque la fonction "trade.PositionOpen" est exécutée à la ligne 159 du fichier "TradeFunctions.mqh". Quelqu'un peut m'aider s'il vous plaît ?

 

Pourriez-vous me dire où se produit l'inversion de position telle que décrite par l'auteur ? Voici son code avec la description

//--- S'il y a une position
   else
     {
      //--- Obtenir le type de position
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Si la position est opposée au signal et que l'inversion de position est activée
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Obtenir le volume de la position
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Régler le volume
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Inversons la position
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

regardez la fonction OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) ;

//+------------------------------------------------------------------+
//|| Ouvre une position|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Fixer le numéro majeur dans la structure commerciale
   trade.SetExpertMagicNumber(MagicNumber);
//--- Fixer la taille du slippage en points
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Mode d'exécution instantanée et mode d'exécution du marché
// *** À partir de la version 803, niveaux de Stop Loss et Take Profit ***
// *** peut être défini lors de l'ouverture d'une position en mode SYMBOL_TRADE_EXECUTION_MARKET ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Si la position n'est pas ouverte, imprimer un message à ce sujet
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Erreur lors de l'ouverture d'une position : ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
C'est juste un blocage ! Il n'y a pas d'inversion... même chose avec l'incrémentation du lot ! Pouvez-vous m'expliquer, je me trompe peut-être ?
 
Tango_X:

Pourriez-vous me dire où se produit l'inversion de position telle que décrite par l'auteur ? Voici son code avec la description

regardez la fonction OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);

C'est juste un blocage ! Il n'y a pas d'inversion... même chose avec l'incrémentation du lot ! Pouvez-vous m'expliquer, peut-être que je me trompe ?

Il y a deux types de comptes de trading : netting et hedge.

Il y avaitActionC'était sur Netting.C'est en hausse sur Hedge.
Acheter 1,0Vente 2.0Vendre 1.0Acheter 1.0 et vendre 2.0
 
Vladimir Karputov:

Il existe deux types de comptes de négociation : les comptes de compensation et les comptes de couverture.

Il y a euActionDevenir sur la compensationDevenir sur Hedge
Achat 1.0Vendre 2.0Vente de 1,0Acheter 1.0 et vendre 2.0

Je l'ai eu ! Nous vous remercions de votre attention.

 
"TimeframeToString" n'existe pas et n'est pas déclaré dans l'article, merci de le remplacer par "EnumToString".