Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 709

 
Vladimir Karputov:

ArrayMinimum devolve o ÍNDICE do elemento cujo valor é o mais baixo. Agora precisamos de obter o valor em si a partir da matrizbaixa pelo índicebaixo:

Baixo[baixo]

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);
  }


E quem no seu código éLow?
 
Vladimir Karputov:
O que ébaixo no seu código?
Baixo - Array contém Preços baixos de 0 aíndice
 
Top2n:
Baixo - Array contém preços baixos de 0 a fazer

Onde o vê? Coloque uma matriz dentro da sua função. Inicializar a variávell com "-1". Em geral, utilize o Stylizer - o seu código é difícil de ler. Também se devolve algo de qualquer forma, mesmo que tenha havido um erro. Isso não é bom.

Adicionado: e porque é que está a comparar dessa forma:

if(copied>0 && index<copied)

Nunca conseguirá um resultado dessa forma.

//+------------------------------------------------------------------+
//| Получим 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, acho que é mais 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);
  }
 
mas é o análogo completo da função dos quatro
//+------------------------------------------------------------------+
//| Получим 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:

Onde o vê? Coloque uma matriz dentro da sua função. Inicializar a variávell com "-1". Em geral, utilize o Stylizer - o seu código é difícil de ler. Também se devolve algo de qualquer forma, mesmo que tenha havido um erro. Isto não é bom.

Obrigado!!!

 
Não consigo descobrir como adicionar uma classe de paragem de percurso padrão a uma EA, mostre-me um exemplo, se não se importar.
 
Kirill Andreev:
Não consigo descobrir como adicionar uma classe de paragem de percurso padrão a uma EA, mostre-me um exemplo, se não se importar.
Exemplo: \MQL5Experts\\Exemplos\MACD\MACD Amostra.mq5
 
Vladimir Karputov:
Exemplo: \MQL5Experts\\Exemplos\MACD\MACD Amostra.mq5
não funciona, é uma pena