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

 
Vladimir Karputov:

ArrayMinimum renvoie l'INDEX de l'élément dont la valeur est la plus faible. Maintenant nous devons récupérer la valeur elle-même du tableauLow par l'indexlow:

Faible [faible]

Rien...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int do)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,do,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }
 
Top2n:

Rien...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }


Et qui dans votre code estLow ?
 
Vladimir Karputov:
Qu'est-ce qui estfaible dans votre code?
Low - Le tableau contient les prix bas de 0 à l'index.
 
Top2n:
Low - Le tableau contient les prix bas de 0 à do.

Où le voyez-vous ? Mettez un tableau dans votre fonction. Initialiser la variablel avec "-1". En général, veuillez utiliser le Stylizer - votre code est difficile à lire. De plus, vous retournez quand même quelque chose, même s'il y a eu une erreur. Ce n'est pas bon.

Ajouté : et pourquoi tu compares comme ça :

if(copied>0 && index<copied)

Vous n'obtiendrez jamais de résultat de cette manière.

//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(string symbol,ENUM_TIMEFRAMES timeframe,int bands)
  {
   double Low[];
   double result=-1;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,bands,Low);
   if(copied==bands)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
 

Vladimir Je pense que c'est plus universel

//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(
               string           symbol,          // символ
               int              timeframe,       // период
               int              count,           // число элементов
               int              start            // индекс
               )
  {
   double Low[];
   double result=-1;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,start,count,Low);
   if(copied==start)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
 
mais c'est l'analogue complet de la fonction des quatre
//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(
               string           symbol,          // символ
               int              timeframe,       // период
               int              type,            // идентификатор таймсерии
               int              count,           // число элементов
               int              start            // индекс
               )
  {
   double Low[];
   int copied=0.0;
   double result=-1;
   ArraySetAsSeries(Low,true);
   if(type==PRICE_CLOSE)copied=CopyClose(symbol,timeframe,start,count,Low);
   if(type==PRICE_OPEN)copied=CopyOpen(symbol,timeframe,start,count,Low);
   if(type==PRICE_HIGH)copied=CopyHigh(symbol,timeframe,start,count,Low);
   if(type==PRICE_LOW)copied=CopyLow(symbol,timeframe,start,count,Low);
   if(copied==start)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
//+------------------------------------------------------------------+
...
 
Vladimir Karputov:

Où le voyez-vous ? Mettez un tableau dans votre fonction. Initialiser la variablel avec "-1". En général, veuillez utiliser le Stylizer - votre code est difficile à lire. De plus, vous retournez quand même quelque chose, même s'il y a eu une erreur. Ce n'est pas bon.

Merci ! !!

 
Je n'arrive pas à comprendre comment ajouter une classe de trailing stop standard à un EA, montrez-moi un exemple si vous le voulez bien.
 
Kirill Andreev:
Je n'arrive pas à comprendre comment ajouter une classe de trailing stop standard à un EA, montrez-moi un exemple si vous le voulez bien.
Exemple : \MQL5\Experts\Examples\MACD\MACD Exemple.mq5
 
Vladimir Karputov:
Exemple : \MQL5\Experts\Examples\MACD\MACD Exemple.mq5
ça ne marche pas, c'est dommage.
Raison: