Bug no Compilador (Build 4885)? Erro Falso '[' - invalid index value após sequência de CopyBuffer em M1
Felipe Raymundo De Oliveira:
double m1_volume_history[MA_Volume_Period];
Não pode usar uma variável na declaração, deixa só "[]" e quando for pedir com CopyBuffer pode colocar quantos quiser que ele aloca dinamicamente. Aqui ambos códigos falharam no compilar nessa parte.
double m1_volume_history[MA_Volume_Period];

Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Ambiente:
Descrição do Problema:
Ao desenvolver um Expert Advisor que opera baseado em dados de M1, encontrei um erro de compilação persistente e aparentemente incorreto: '[' - invalid index value .
O erro ocorre dentro de um bloco if que detecta uma nova barra M1. Dentro deste bloco, faço várias chamadas CopyBuffer para obter dados de indicadores (MAs, ATR) e do indicador iVolumes .
O problema específico surge quando tento acessar ou calcular valores usando os dados copiados logo após a sequência de chamadas CopyBuffer . A mensagem de erro "invalid index value" é reportada em linhas onde ou não há acesso a índice, ou o acesso deveria ser válido (pois a cópia foi checada). A linha exata reportada varia ligeiramente dependendo da estrutura do código, mas sempre ocorreapósas chamadas CopyBuffer eantes ou duranteo uso dos dados copiados.
O erro NÃO ocorre se:
O erro OCORRE consistentemente quando:
Isso sugere fortemente um bug no parser ou no compilador da build 4885, que se confunde com essa sequência específica de operações, reportando um erro incorreto. A limpeza do código (copiar/colar via Bloco de Notas) e recompilação total ( Rebuild ) não resolveram o problema.
Código MRE - Passo 1 (Compila SEM ERROS):Este código inclui todas as chamadas CopyBuffer , mas não tenta usar os dados (exceto por um Print simples no final). Ele compila com sucesso.
Código MRE - Passo 2 (Falha na Compilação):Este código é idêntico ao Passo 1, mas com a adição das linhas de cálculo e atribuição de variáveisapóso bloco de CopyBuffer . Este código falha ao compilar.
Erro Exato Obtido ao Compilar o Código MRE - Passo 2:
'[' - invalid index value BugTestInvalidIndex_Step2.mq5 67 31
(Observação: O número da linha '67' pode variar ligeiramente dependendo da formatação exata, mas o erro ocorre consistentemente na linha if(!data_ok) ou imediatamente após ela,antesdas linhas de cálculo/atribuição que parecem ser o gatilho real para o bug do compilador).
Erro Exato Obtido ao Compilar o Código MRE - Passo 2:
A única diferença entre o Código 1 (que compila) e o Código 2 (que falha) é a adição do bloco de código que processa os dados copiados pelos CopyBuffer . Isso indica que o compilador está tendo problemas em analisar corretamente o acesso aos arrays ( ma_fast_1[0] , vol_bar1_buffer[0] , etc.) ou as chamadas de função ( MathMean )logo apósa sequência de chamadas CopyBuffer dentro do mesmo escopo de função/bloco if . A mensagem de erro "invalid index value" parece ser um sintoma incorreto do problema real de parsing do compilador.