Questions des débutants MQL5 MT5 MetaTrader 5 - page 35

 
alxm:
La documentation dit qu'il ne faut pas se fatiguer.
OK, alors.
 
alxm:
La documentation indique qu'il n'y a pas lieu de s'inquiéter.

Mais la phrase"Pour les objets contenant des chaînes de caractères et des tableaux dynamiques, ZeroMemory() est appelé pour chaque membre" est un peu ambiguë. Soit la fonction ZeroMemory effectue elle-même cette mise à zéro, soit le programmeur doit faire l'appel lui-même pour chaque membre contenant un tableau dynamique.

..bien que. Les cas d'inapplicabilité sont clairement spécifiés.

 
Yedelkin:
Mais la phrase"Pour les objets contenant des chaînes de caractères et des tableaux dynamiques, ZeroMemory() est appelé pour chaque membre" est ambiguë. Soit cette remise à zéro est effectuée par la fonction ZeroMemory elle-même , soit le programmeur doit remettre à zéro chaque tableau dynamique lui-même.
Et la phrase"pour les tableaux d'objets complexes, ZeroMemory() est appelé pour chaque élément" doit-elle être comprise comme un appel pour remettre à zéro chaque élément séparément ?
 
alxm:
Et la phrase"Pour les tableaux d'objets complexes, ZeroMemory() est appelé pour chaque élément" doit également être comprise comme un appel pour mettre à zéro chaque élément séparément ?
Bien, et en dernier recours, il peut être facilement vérifié. :)
 
alxm:
Et la phrase"Pour les tableaux d'objets complexes, ZeroMemory() est appelé pour chaque élément" doit également être comprise comme un appel pour mettre à zéro chaque élément séparément ?
Eh bien, oui, comparez le sens du verbe russe "produit" avec le sens du verbe russe "se produit" :) Réponse : non, ça ne devrait pas.
 
Yedelkin:
Oui, comparez le sens du verbe russe "produit" avec le sens du verbe russe "se produit" :) La réponse est non, ça ne devrait pas.
Je suis d'accord. La documentation doit être rédigée de telle sorte qu'il n'y ait pas de risque de double interprétation.
 

Bonjour ! Supposons que je ferme une partie d'une position en ouvrant une position inverse. Quels stop loss et profit dois-je fixer ? Probablement que ce sera celui que j'ai défini, et non celui que j'avais ? Non, c'est impossible, je vais ouvrir une transaction inverse pour réduire la position et les profits et pertes sont les mêmes que dans la transaction précédente. En général, je me suis embrouillé. S'il vous plaît, aidez-moi à clarifier.

En outre, la structure a une erreur

 MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
      request.deviation=30* Point(symb);
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);  

déviation' - un opérateur attendu htghtgfhthf.mq5 103 15 opérateur calculé.... Eh bien, calculé.

Point - mauvais nombre de paramètres htghtgfhthf.mq5 103 30

Je pense que tout est correct ? En bref, dites-moi ce qu'il faut mettre dedans pour ne pas jurer ?

 
Dimka-novitsek: De plus, la structure est maudite par

C'est ce qui est écrit :

Point(symb);

Aucun argument n'est fourni pour cette fonction.

Voir également la description du champ de déviation. Il n'est pas nécessaire de lui attribuer des valeurs doubles.

 

Maintenant, voici la situation. Je veux définir le lot pour la position opposée, pour cela je trouve le lot de la transaction, qui a participé à cette position combinée, et définir la position opposée, c'est-à-dire, je voudrais essayer de définir. Je reconnais ce lot avec la fonction HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME).

Quoi qu'il en soit, voici la fonction et son appel

    if ( HistoryDealGetInteger( TicetTojSdelki,DEAL_TYPE)== DEAL_TYPE_BUY){
     OrderSendSELL( Symbol(),"OP_SELL",  HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME), 10,10, 300,  300, " com " , 600, 600,0)
  ;}
  
  
                                                          }
 
   
   }
   
   
   
   
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+     
 ulong OrderSendSELL(string symb, string OP_POZA, double Lot, double BIDd,int slip, double  s,  double  t, string com, int MagicNumber, datetime expiration,color c){
  
         ENUM_ORDER_TYPE   type;
         if(OP_POZA=="OP_SELL"){type=ORDER_TYPE_SELL;}
        double BID =BID( symb);
          if(OP_POZA=="OP_BUY"){type=ORDER_TYPE_BUY;}
            BID =ASK( symb);
          

      MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
     
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);    
      
        return (result.   deal );       }
 
 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double BID(string symbol) 
  {
   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double BID=last_tick.bid;
   return(BID);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ASK(string symbol) 
  {

   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double ASK=last_tick.ask;
   return(ASK);  
  }

Volume - un opérateur attendu htghtgfhthf.mq5 104 15

Lot" - l'expression n'a pas d'effet htghtgfhthf.mq5 104 22

C'est la structure elle-même qui est réprimandée. Dowble variable... Le lot équivaut au lot... Je ne comprends pas !

 
Merci ! !!