array out of range - página 2

 

Bom dia pessoal,

Pesquisando no forum e seguindo esse tópico,não consegui resolver meu problema,o problema mensagem : array out of range

Alguém conseguiria me dar uma ajudar.

o problema está nesta linha abaixo:

double result_three =(candle[2].open+candle[3].open+candle[4].open+candle[4].open)/3;
Fórum MQL5
Fórum MQL5
  • www.mql5.com
MQL5: Fórum sobre sistemas de negociação automatizados e testes de estratégia
 
Douglas Betiol #Bom dia pessoal, Pesquisando no forum e seguindo esse tópico,não consegui resolver meu problema,o problema mensagem : array out of range Alguém conseguiria me dar uma ajudar. o problema está nesta linha abaixo:

Bom dia!! Por favor, poste os trechos do código onde você declara e onde inicializa a variável candle[]...

 

boa tarde pessoal,

tentei seguir especificação das ajuda,mas não consegui,está dando erro ARRAY OUT OF RANGE"  no trecho do codigo abaixo:

alguém

 if (CountPositions(iMagic, _Symbol) == 0) {
      if (new_bar && (!iUseSession  || Session(session)) && CountOrders(iMagic, _Symbol) == 0) {
         if (CopyBuffer(hma, 0, 0, 1, ma) != 1) return;
         if (CopyRates(_Symbol, 0, 0, MathMax(iCandleOne, iCandleTwo) + 2, candle) != MathMax(iCandleOne, iCandleTwo) + 2) return;

         double X1= candle[1].high-candle[2].high;
         
      double result_one= candle[1].close -X1;

          ResetLastError();
            double open = NormalizePrice(result_one);
            double sl = NormalizePrice(open - NormalizeSize(iStopLoss, iTargetsMeasure));
           double tp = NormalizePrice(open + NormalizeSize(iTakeProfit, iTargetsMeasure));
           if (!Trade.BuyLimit(iLot, open, _Symbol,sl,tp, ORDER_TIME_GTC, 0, iSetupName))
           // if(trade.buy(iLot, _Symbol, PRC,TKP,STL, "NOVO SETUP"))
             logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");
   }
   }


poderia me dar uma luz onde está o problema.

 
Douglas Betiol #:

boa tarde pessoal,

tentei seguir especificação das ajuda,mas não consegui,está dando erro ARRAY OUT OF RANGE"  no trecho do codigo abaixo:

alguém

poderia me dar uma luz onde está o problema.

Não poste duplicado no forum, se estiver em dúvida de onde postar crie um topico seu. Seria possível falar em qual local poderia estar dando esse erro (cole a mensagem dada)? Além disso, poderia colocar como foi declarado a variável candle?
 
Douglas Betiol #:

boa tarde pessoal,

tentei seguir especificação das ajuda,mas não consegui,está dando erro ARRAY OUT OF RANGE"  no trecho do codigo abaixo:

alguém


poderia me dar uma luz onde está o problema.

Você está inicializando o array candle com 'N' valores, porém está acessando valores além da quantidade inicializada no array.


Nesse código 

double result_three =(candle[2].open+candle[3].open+candle[4].open+candle[4].open)/3;

você acessa até o índice quatro (quinto elemento dentro do array). Certifique-se de que ao chamar a função

if (CopyRates(_Symbol, 0, 0, MathMax(iCandleOne, iCandleTwo) + 2, candle) != MathMax(iCandleOne, iCandleTwo) + 2) return;

ou a variável iCandleOne ou a variável iCandleTwo seja maior ou igual a 3 (já que você já está adicionando dois a elas) para que a quantidade de dados copiados para o array seja suficiente para você acessar até o quinto elemento (index 4).

Razão: