Erro de compilação CopyHigh e CopyLow

 
//+------------------------------------------------------------------+
//| Calcula suporte e resistência com base nos últimos N candles     |
//+------------------------------------------------------------------+
void CalculateSupportResistance(double &support, double &resistance)
{
    // Verifica se NumCandlesForSR é válido
    if (NumCandlesForSR <= 0)
    {
        Print("Erro: NumCandlesForSR deve ser maior que zero.");
        support = 0;
        resistance = 0;
        return;
    }

    // Declara os arrays para armazenar os valores de alta e baixa
    double highArray[], lowArray[];

    // Redimensiona os arrays para armazenar os valores
    ArrayResize(highArray, NumCandlesForSR);
    ArrayResize(lowArray, NumCandlesForSR);

    // Copia os valores de alta (high) das últimas NumCandlesForSR barras
    int copiedHighs = CopyHigh(_Symbol, SignalTimeframe, 0, NumCandlesForSR, highArray);
    if (copiedHighs != NumCandlesForSR)
    {
        Print("Erro ao copiar altas. Código de erro: ", GetLastError());
        support = 0;
        resistance = 0;
        return;
    }

    // Copia os valores de baixa (low) das últimas NumCandlesForSR barras
    int copiedLows = CopyLow(_Symbol, SignalTimeframe, 0, NumCandlesForSR, lowArray);
    if (copiedLows != NumCandlesForSR)
    {
        Print("Erro ao copiar baixas. Código de erro: ", GetLastError());
        support = 0;
        resistance = 0;
        return;
    }

    // Obtém o índice do maior valor de alta e do menor valor de baixa
    int maxIndex = ArrayMaximum(highArray);
    int minIndex = ArrayMinimum(lowArray);

    // Verifica se os índices são válidos
    if (maxIndex < 0 || minIndex < 0)
    {
        Print("Erro ao calcular suporte/resistência.");
        support = 0;
        resistance = 0;
        return;
    }

    // Define os valores de suporte e resistência
    resistance = highArray[maxIndex];
    support = lowArray[minIndex];

    PrintFormat("Resistência: %f | Suporte: %f", resistance, support);
}
'CopyHigh' - no one of the overloads can be applied to the function call
could be one of 3 function(s)
   built-in: int CopyHigh(const string,ENUM_TIMEFRAMES,int,int,double&[])
   built-in: int CopyHigh(const string,ENUM_TIMEFRAMES,datetime,int,double&[])
   built-in: int CopyHigh(const string,ENUM_TIMEFRAMES,datetime,datetime,double&[])
'CopyLow' - no one of the overloads can be applied to the function call
could be one of 3 function(s)
   built-in: int CopyLow(const string,ENUM_TIMEFRAMES,int,int,double&[])
   built-in: int CopyLow(const string,ENUM_TIMEFRAMES,datetime,int,double&[])
   built-in: int CopyLow(const string,ENUM_TIMEFRAMES,datetime,datetime,double&[])

Alguém sabe como corrigir esse erro na compilação?


Valeu!

[Excluído]  
O seu tópico foi movido para a secção: Expert Advisors e Negociação Automatizada.
Por favor ter em conta a secção adequada quando criar tópicos — https://www.mql5.com/pt/forum/421109/page6#comment_49385139 
[Excluído]  

Mostre as declarações para as variáveis "SignalTimeframe" e "NumCandlesForSR".

  • A declaração para "SignalTimeframe" deverá ser do tipo ENUM_TIMEFRAMES
  • e a declaração para "NumCandlesForSR" deverá ser do tipo int.

Se mesmo com as correctas declarações anteriores, o compilador continuar com a mesma mensagem, poderá ser também necessário declarar explicitamente o tipo do terceiro parâmetro ...

int copiedHighs = CopyHigh( ..., ..., (int) 0, ..., ... );