Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 709

 
Vladimir Karputov:

ArrayMinimum devuelve el ÍNDICE del elemento cuyo valor es el más bajo. Ahora necesitamos obtener el valor mismo del arrayLow por el índicelow:

Bajo [bajo]

Nada...

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

Nada...

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


¿Y quién en su código esLow?
 
Vladimir Karputov:
¿Qué esLow en su código?
Bajo - La matriz contiene los precios bajos desde 0 hastael índice
 
Top2n:
Bajo - La matriz contiene los precios bajos de 0 a do

¿Dónde lo ves? Coloca un array dentro de tu función. Inicializar la variablel con "-1". En general, por favor, utilice el estilizador - su código es difícil de leer. También se devuelve algo de todos modos, incluso si hubo un error. Eso no es bueno.

Añadido: y por qué comparas así:

if(copied>0 && index<copied)

Así nunca conseguirás un resultado.

//+------------------------------------------------------------------+
//| Получим 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 creo que es más universal

//+------------------------------------------------------------------+
//| Получим 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);
  }
 
pero es el análogo completo de la función de los cuatro
//+------------------------------------------------------------------+
//| Получим 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:

¿Dónde lo ves? Coloca un array dentro de tu función. Inicializar la variablel con "-1". En general, por favor, utilice el estilizador - su código es difícil de leer. También se devuelve algo de todos modos, incluso si hubo un error. Esto no es bueno.

¡¡¡Gracias!!!

 
No puedo averiguar cómo agregar una clase de trailing stop estándar a un EA, muéstrame un ejemplo si no te importa.
 
Kirill Andreev:
No puedo averiguar cómo agregar una clase de trailing stop estándar a un EA, muéstrame un ejemplo si no te importa.
Ejemplo: \MQL5\N-Expertos\N-Estudios\MACD\N-Muestra.mq5
 
Vladimir Karputov:
Ejemplo: \MQL5\N-Expertos\N-Estudios\MACD\N-Muestra.mq5
no funciona, es una pena