Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 709

 
Vladimir Karputov:

ArrayMinimum restituisce l'INDEX dell'elemento il cui valore è il più basso. Ora abbiamo bisogno di ottenere il valore stesso dall'arrayLow per l'indicelow:

Basso[basso]

Niente...

//+------------------------------------------------------------------+
//| Получим 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:

Niente...

//+------------------------------------------------------------------+
//| Получим 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);
  }


E chi, nel tuo codice, èLow?
 
Vladimir Karputov:
Cos'èLow nel vostro codice?
Low - Array contiene i prezzi Low da 0 aindice
 
Top2n:
Basso - La matrice contiene i prezzi bassi da 0 a fare

Dove lo vedi? Mettete un array all'interno della vostra funzione. Inizializza la variabilel con "-1". In generale, per favore usa lo Stylizer - il tuo codice è difficile da leggere. Inoltre si restituisce qualcosa comunque, anche se c'è stato un errore. Questo non va bene.

Aggiunto: e perché si paragona così:

if(copied>0 && index<copied)

Non otterrete mai un risultato in questo modo.

//+------------------------------------------------------------------+
//| Получим 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 penso che sia più universale

//+------------------------------------------------------------------+
//| Получим 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);
  }
 
ma è l'analogo completo della funzione dei quattro
//+------------------------------------------------------------------+
//| Получим 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:

Dove lo vedi? Mettete un array all'interno della vostra funzione. Inizializza la variabilel con "-1". In generale, per favore usa lo Stylizer - il tuo codice è difficile da leggere. Inoltre si restituisce qualcosa comunque, anche se c'è stato un errore. Questo non va bene.

Grazie!!!

 
Non riesco a capire come aggiungere una classe di trailing stop standard a un EA, mostrami un esempio se non ti dispiace.
 
Kirill Andreev:
Non riesco a capire come aggiungere una classe di trailing stop standard a un EA, mostrami un esempio se non ti dispiace.
Esempio: \MQL5\esperti\esperienze\MACD\MACD Sample.mq5
 
Vladimir Karputov:
Esempio: \MQL5\esperti\esperienze\MACD\MACD Sample.mq5
non funziona, è un peccato