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
Existe alguma ligação para a utilização correcta do iCustom() tendo em conta estas nuances ??? Porque estou cansado de o verificar e de procurar o que está errado.
Dê uma vista de olhos ao artigo Indicador por Indicador na MQL5:
É necessário inicializar os amortecedores indicadores?
As matrizes em MQL5 não são inicializadas por defeito com qualquer valor, e isto aplica-se certamente às matrizes que são atribuídas a buffers indicadores usando SetIndexBuffer(). Se um array for um tampão indicador, o seu tamanho dependerá do parâmetro rate_total no manipulador OnCalculate().
Pode haver uma tentação de inicializar todos os amortecedores indicadores com o valor EMPTY_VALUE vazio usando a função ArrayInitialize(), por exemplo, uma vez no início de OnCalculate().
...
Caro Rosh - Li este artigo, mas não o pude aplicar, porque uso a segunda forma de chamada OnCalculate, porque preciso do tempo de cada bar, e não apenas do preço.
A razão realmente é que há lixo no tampão indicador. E a inicialização do buffer com valores vazios não dá nada, porque no testador, quando aparecem novos dados, o buffer indicador cresce automaticamente e no início contém realmente lixo, e se o buffer não for preenchido em cada barra, o lixo fica lá.
O meu EA funciona com temporizador - é muito mais rápido do que o OnTick() por alguma razão. E posso testá-lo ao fim-de-semana.
Estou a tentar descobrir o que se encontra em cada tampão indicador. A complexidade é que um indicador chama outro com base nos seus valores.
Vou tentar seleccionar um período claro e definir o tamanho dos amortecedores. Determinarei a causa dos falsos positivos no testador. Eh - é uma pena que o testador não tenha um depurador - toda a gente tem estado à espera dele.
Tenho um EA a funcionar com um temporizador, que é muito mais rápido do que OnTick() por alguma razão. Pode testá-lo também aos fins-de-semana.
Existe um artigo básico de ensaio no MetaTrader 5 onde é mostrado:
Medimos o tempo de teste a diferentes valores do parâmetro temporizador (o período do evento temporizador). Um gráfico mostrando a dependência do tempo de teste T do valor da Periodicidade foi traçado com base nos dados obtidos.
É evidente que o parâmetro menor do temporizador na inicialização da função EventSetTimer(temporizador), o menor período (Período) entre as chamadas do manipulador OnTimer() e o maior tempo de teste T sob as mesmas e as mesmas condições.Se o verdadeiro lixo aparece no iCustom(), o problema está definitivamente na inicialização.
Inicializar o buffer com zero em vez de Vazio_Valor. Quando cada nova barra aparecer, não se esqueça de zerar a célula tampão correspondente.
Se o verdadeiro lixo aparece no iCustom(), o problema está definitivamente na inicialização.
Inicializar o buffer com zero em vez de Empty_Value. Quando cada nova barra aparecer, não se esqueça de zerar a célula tampão correspondente.
Sim, eu fiz. Em todos os indicadores certifico-me de zerar primeiro os valores - ajudou a livrar-me do lixo.
for(i=first;i<rates_total-1 && !IsStopped();i++)
{EnterBuffer[i]=0;
EditBuffer[i]=0;
ExitBuffer[i]=0;
....
}
Agora estou a testá-lo na tabela de minutos. No gráfico horário tudo está a funcionar como um relógio)))) Tenho algumas perguntas sobre a EA no gráfico de 1 minuto.
Como esperado - sem inicialização. No indicador FB.
Em primeiro lugar, no início da função OnCalculate, devemos acrescentar a inicialização das matrizes
Porque a inicialização que tem, nem sempre funciona
Em segundo lugar, no ciclo principal de cálculo, logo no início do ciclo, adicionar inicialização dos elementos zero das matrizes (pois quando uma nova barra é adicionada ao gráfico, as matrizes indicadoras são automaticamente aumentadas, e estes novos elementos não são inicializados de forma alguma, nem explicitamente porque pré_calculados>0, nem implicitamente)
Além disso, em CustomOptimisation.mqh na classe TBalanceSlopeCriterion deve ser adicionado um destruidor (não afecta o resultado, mas leva a fugas de memória durante os testes)
Também tive um milagre com o testador.
EA testada com um nome: o testador desenha objectos
...salvei e compilei a EA com outro nome::sem objectos
Mas reparei que mudei o terminal para outra unidade