Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 495

 

Le terminal est passé de 509 à 600 et l'EA donne cet avertissement lors de la compilation :

la déclaration de 'ErrNum' cache la déclaration globale à la ligne 81

et une partie du code :

string ErrorDescription(int ErrNum)
{
  switch(ErrNum)
  {

Pouvez-vous me dire quel est le problème ?

 
rustein:

Le terminal est passé de 509 à 600 et l'EA donne cet avertissement lors de la compilation :

la déclaration de 'ErrNum' cache la déclaration globale à la ligne 81

et une partie du code :

Pouvez-vous me dire quel est le problème ?

Vous avez déclaré ErrNum de manière globale. Une variable portant le même nom à l'intérieur de la fonction masque la valeur de la variable globale. Dans la fonction, donnez un nom différent
 

Merci, donc j'ai changé ErrNum en ErrNumber et c'est tout ? L'avertissement a disparu, tout va fonctionner correctement ?

string ErrorDescription(int ErrNumber)
{
  switch(ErrNum)
  {
    case 0: return("NO ERROR");
    case 1: return("NO RESULT");                                 
    case 2: return("COMMON ERROR");                              
    case 3: return("INVALID TRADE PARAMETERS");                  
    case 4: return("SERVER BUSY");                               
    case 5: return("OLD VERSION");                               
    case 6: return("NO CONNECTION");                             
    case 7: return("NOT ENOUGH RIGHTS");   
 
Super, merci beaucoup encore.

Et un dernier avertissement dans le code :

tous les chemins de contrôle ne renvoient pas une valeur

double FractalUp()
{
  if(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar) != EMPTY_VALUE)  
  return(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar));
}

Pouvez-vous me dire ce qui ne va pas ici aussi, s'il vous plaît.

 
rustein:
Super, merci beaucoup encore.

Et un dernier avertissement dans le code :

tous les chemins de contrôle ne renvoient pas une valeur

Pouvez-vous me dire ce qui ne va pas ici aussi, s'il vous plaît.

Si la condition est remplie, la fonction renvoie une valeur.

Sinon, il n'y a pas de retour de la fonction. Retourner une valeur par défaut de la fonction

 
hehe :),

l'a fait et l'avertissement a disparu :

double FractalUp()
{
  if(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar) != EMPTY_VALUE)
  {
    return(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar));
  }
  else return (0);
}

J'espère que c'est bon, la vie dans mt4 continue :), merci encore !

 
rustein:
hehe :),

l'a fait et l'avertissement a disparu :

J'espère que c'est bon, la vie dans mt4 continue :), merci encore !

Vous êtes les bienvenus.
 

Les gars, il y a 4 fonctions simples faites en interne qui ont apparemment un bug. Aidez un débutant !

(Le nom de chaque fonction parle de lui-même, ce que cette fonction doit faire)

extern double LOT =0.1;


double GetLastOrderProfit()
{
  int time = 0; double profit = 0; 
  for(int i = OrdersHistoryTotal()-1; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if(time<OrderCloseTime())
        {
          time=OrderCloseTime();
          profit=OrderProfit();
        }
      }
    }
  }
  return(profit);
}

//+------------------------------------------------------------------+
double GetLastLot()
{
  int time = 0; double Lot = 0; 
  for(int i = OrdersHistoryTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if(time<OrderCloseTime())
        time=OrderCloseTime();
        Lot = OrderLots(); 
      }
    }
  }

  if(Lot <= 0) Lot = LOT;

  return(Lot);
}

//+------------------------------------------------------------------+
double GetLastTenOrdersProfit()
{
  double profit = 0; int count = 0; 
  for(int i = OrdersHistoryTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if (count<10)
        {
          profit=profit+OrderProfit();
          count++;
        } 
      }
    }
  }

  return(profit);
}
//+------------------------------------------------------------------+
double GetLot()
{
  double Lot = 0; double n = GetLastLot();
  
  if (GetTotalProfit() < 0 || GetLastLotProfit() < 0)
  Lot = NormalizeDouble (n * MartinStep,2);
  
  if (GetTotalProfit() >= 0 || GetLastLotProfit() >= 0)
  Lot = LOT;
  
  return (Lot);
}

 

aidez-moi à comprendre

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Digits) ;

int shiftb=iBarShift(NULL,0,b) ;

Écrit un avertissement de perte possible de données due à la conversion de type se référant à la b sélectionnée, oui, ce n'est pas datetime, mais si vous le faites :

datetime b=ObjectGet("b",OBJPROP_TIME1) ;

int shiftb=iBarShift(NULL,0,b) ;

il y aura un avertissement sur datetime b pour une raison quelconque , il semble correct et il ne devrait pas y avoir d'avertissement.

 
Alexandr24:

aidez-moi à comprendre

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Digits) ;

int shiftb=iBarShift(NULL,0,b) ;

Écrit un avertissement de perte possible de données due à la conversion de type se référant à la b sélectionnée, oui, ce n'est pas datetime, mais si vous le faites :

datetime b=ObjectGet("b",OBJPROP_TIME1) ;

int shiftb=iBarShift(NULL,0,b) ;

il y aura un avertissement sur datetime b pour une raison quelconque , il semble correct et il ne devrait pas y avoir d'avertissement.

Et mettre int b