Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 709

 
Vladimir Karputov:

ArrayMinimum gibt den INDEX des Elements zurück, dessen Wert der niedrigste ist. Jetzt müssen wir den Wert selbst aus demLow-Array mit dem Indexlow holen:

Niedrig[niedrig]

Nichts...

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

Nichts...

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


Und wer in Ihrem Code istLow?
 
Vladimir Karputov:
Was istLow in Ihrem Code?
Niedrig - Array enthält Niedrigpreise von 0 bisIndex
 
Top2n:
Niedrig - Array enthält Niedrigpreise von 0 bis do

Wo sehen Sie sie? Fügen Sie ein Array in Ihre Funktion ein. Initialisieren Sie die Variablel mit "-1". Bitte verwenden Sie generell den Stylizer - Ihr Code ist schwer zu lesen. Außerdem geben Sie trotzdem etwas zurück, auch wenn ein Fehler aufgetreten ist. Das ist nicht gut.

Hinzugefügt: Und warum vergleichen Sie so?

if(copied>0 && index<copied)

Auf diese Weise werden Sie nie ein Ergebnis erzielen.

//+------------------------------------------------------------------+
//| Получим 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 Ich denke, es ist universeller

//+------------------------------------------------------------------+
//| Получим 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);
  }
 
aber es ist das vollständige Analogon der Funktion aus den vier
//+------------------------------------------------------------------+
//| Получим 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:

Wo sehen Sie sie? Fügen Sie ein Array in Ihre Funktion ein. Initialisieren Sie die Variablel mit "-1". Benutzen Sie bitte generell den Stylizer - Ihr Code ist schwer zu lesen. Außerdem geben Sie trotzdem etwas zurück, auch wenn ein Fehler aufgetreten ist. Das ist nicht gut.

Ich danke Ihnen!!!

 
Ich kann nicht herausfinden, wie man eine Standard-Trailing-Stop-Klasse zu einem EA hinzufügen, zeigen Sie mir ein Beispiel, wenn es Ihnen nichts ausmacht.
 
Kirill Andreev:
Ich kann nicht herausfinden, wie man eine Standard-Trailing-Stop-Klasse zu einem EA hinzufügen, zeigen Sie mir ein Beispiel, wenn es Ihnen nichts ausmacht.
Beispiel: \MQL5\Experts\Examples\MACD\MACD Sample.mq5
 
Vladimir Karputov:
Beispiel: \MQL5\Experts\Examples\MACD\MACD Sample.mq5
es funktioniert nicht, das ist schade
Grund der Beschwerde: