![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ver Propriedades do Programa (#propriedade):
tester_indicator
string
Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство
tester_file
string
Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда
tester_library
string
Имя библиотеки с расширением, заключенное в двойные кавычки. Библиотека может быть как с расширением dll, так и с расширением ex5. Необходимые для тестирования библиотеки определяются автоматически. Однако, если какая-либо библиотека используется пользовательским индикатором, то необходимо использовать данное свойство
Ver Propriedades do Programa (#propriedade):
No gráfico de tick (na visão geral do mercado) na conta de demonstração XAUUSD há um reset constante.
Também:
Abrir "detalhes" e passar o rato sobre o espaço vazio
No gráfico de tick (na visão geral do mercado) na conta de demonstração XAUUSD há um reset constante.
Também:
Abrir "detalhes" e passar o rato sobre o espaço vazio
Não tenho bem a certeza do que significa um reset permanente.
Que SO, que SO e capacidade terminal?
Aprender, pois diz na redacção da documentação - Indicadores Técnicos:
Isto significa que no primeiro início do indicador (ao mudar para um novo período de tempo pela primeira vez ), os valores do indicador ainda não foram calculados, portanto prev_calculados=0. Quando se regressa a este período de tempo, o indicador não é criado novamente, uma vez que o seu cabo ainda está vivo. Portanto, pré_calculado!=0Estava prestes a aceitar a sua palavra, mas mudei de ideias. Os resultados que obtive externamente quase dizem que nem sempre tudo é tão suave, há algumas excepções... mas ainda não percebo se elas, estas excepções, estão relacionadas com cabos ou é algum outro problema?
"Nota: se a função OnCalculate devolver um valor nulo, os valores indicadores não são mostrados na Janela de Dados do terminal do cliente. "Apresso-me a assegurar-vos: é muito pior, se consegui relacionar correctamente os resultados na minha cabeça com a documentação e interpretar eu próprio o efeito resultante. Não só os valores do indicador não são exibidos - todo o indicador deixa de funcionar, a fila de comandos congela e não se pode esperar que os próximos comandos sejam processados. De facto, foi isto que consegui vislumbrar em alguns dos meus posts anteriores.
Como já foi mencionado, o código tem muita cópia... ...que não envolve um cabo, (ou seja, tudo excepto CopyBuffer). Se o resultado da cópia <= 0, obtemos o retorno(0), após o qual"o indicador deixou de funcionar" e o indicador fica completamente paralisado.
Quero lembrar que o não-desenhar inicial com a paralisia do acompanhante ocorre no modo sem janela terminal (ou seja, aos fins-de-semana ou fora de linha). Não o considere sem importância, porque ninguém quer depurar os seus indicadores nos fins-de-semana, fazendo gestos desnecessários, correndo através de prazos e artificialmente - manualmente - iniciando o primeiro desenho. E não se trata apenas de depuração.
Honestamente, não tinha mente suficiente para ligar as ligações gentilmente fornecidas a exemplos da documentação, onde se diz sobre o aumento da referência contrária ao cabo já existente (bem como com outras respostas dadas) ao problema existente. Não creio que esteja a crescer a partir daí.
Tente reproduzir o código em anexo nas seguintes condições: o período de tempo predefinido no código é D1, o período de tempo actual no terminal é D1, o terminal está em modo offline. Quando o indicador é anexado ao gráfico com o período de tempo actual especificado, os resultados do registo aparecerão instantaneamente no separador Especialistas.
Agora descarregue completamente o terminal, reinicie-o e mude para um período de tempo diferente de D1 . Coloque o indicador - ele não mudará até mudar para qualquer outro (não necessariamente D1) período de tempo.
Devido a esta desagradável característica, uma boa ideia desaparece juntamente com o indicador subscrito.
Os programadores, estou certo, podem encontrar explicações para este comportamento do indicador, mas é injusto, quando os dados da TF master-defined na sua pega são perfeitamente exibidos, quando um utilizador está nesse momento, mas se ele está noutro, ele tem de fazer movimentos desnecessários. Sou a favor da igualdade de prazos na utilização de alças de indicadores externos, os outros TFs não são culpados de nada.
P.S.: Então... Espere. Verifiquei-o mais uma vez - acontece que CopyHigh não influencia sequer esta paralisia. Agora não compreendo nada. Todas as minhas suspeitas caíram de repente sobre um cabo no OnInit...
P.P.S.: adicionado segundo exemplo de código - mesmo que não responda.
Foi encontrado o limite do problema.
Comente-o:
- e o problema desaparece, mas depois é uma indicação clara de ligação tampão incorrecta ocasional através do SetIndexBuffer . E isso já aponta para a necessidade de abandonar a utilização doSetIndexBuffer e recorrer à manipulação manual do tamanho do tampão a ser monitorizado.
Além disso, o exemplo em anexo demonstra obviamente a incapacidade do BarsCalculated(handle )de calcular a tempo os valores do indicador chamado em qualquer TF actual, a menos que coincida com um pré-definido, ou a indisponibilidade em princípio para calcular qualquer coisa à primeira vez (muito provavelmente esta variante). Neste caso, o valor será <=0, retorno(0) e paragem como resultado.
Não é muito claro o que significa reinicialização permanente.
Que SO, que SO e bit terminal?
W7 e MT5 64 bit.
exemplo:
XAUUSD reinicia sempre para o início (XAGUSD é uma comparação)
Encontrar o limite do problema.
Comente-o:
- e o problema desaparecerá, mas será então uma indicação clara de uma ligação tampão ocasional incorrecta através do SetIndexBuffer . E isso já aponta para a necessidade de abandonar a utilização doSetIndexBuffer e recorrer à manipulação manual do tamanho do tampão a ser monitorizado.
Além disso, o exemplo em anexo demonstra obviamente a incapacidade do BarsCalculated(handle) de calcular a tempo o valor do indicador chamado em qualquer TF actual, a menos que este coincida com um pré-definido. Neste caso, o valor será <=0, retorno(0) e paragem como resultado.
Para o primeiro exemplo (não olhei para o segundo), o indicador paralich tem uma função
Portanto, imagine que o seu indicador está em D1 e tenta copiar os dados do período de tempo H1 para o seu buffer de indicadores. O número de elementos não coincidirá. Penso que é aqui que reside o seu problema - não há verificação antes de copiar os dados.
Exemplos de indicadores que tiram dados de outros prazos estão disponíveis na ajuda para cada indicador técnico. Por exemplo https://www.mql5.com/ru/docs/indicators/iama:
Tente reproduzir o código em anexo nas seguintes condições: o período de tempo predefinido no código é D1, o período de tempo actual no terminal é D1, o terminal está em modo off-line. Quando um indicador é anexado a um gráfico com o período de tempo actual especificado, os resultados do registo aparecerão instantaneamente no separador Especialistas.
Portanto, imagine que o seu indicador está em D1 e está a tentar copiar dados do período de tempo H1 para o seu buffer de indicadores. O número de elementos não coincidirá. Penso que é aqui que reside o seu problema - não há verificação antes de copiar os dados.
Antes de mais, vou esclarecer: os casos de transbordamento de matriz quando se copiam valores via Copy...-funções causando um erro de transbordamento"Array out of range" em Peritos do terminal do cliente? Lembro-me que tais mensagens são por vezes geradas após uma compilação bem sucedida, enquanto o indicador está a funcionar, mas não posso dizer exactamente. Penso que não está em Copiar...-função, mas sim numa referência a um índice inexistente ou algo do género.
Em segundo lugar, apresso-me a assegurar-lhe que a sua hipótese sobre a ausência de verificação não é totalmente correcta. Pode falar apenas da geração incorrecta do filtro if-else-filter, mas não da sua ausência completa. Já tropecei nela mais de uma dúzia de vezes. Recentemente fiz aqui ou em "Dummies" uma pergunta sobre análogo de taxas_total para prazos, diferente do actual, mas não recebi resposta de ninguém. A questão é que o rates_total é um dos parâmetros para o período de tempo actual, e é absolutamente inútil para mim, porque trabalho com muitos outros períodos de tempo, e se por acaso utilizar um dos pré-definidos, continuo a utilizar o universal calculated=BarsCalculated(handle) para os cálculos em vez do rates_total. Talvez eu esteja a cometer um grande erro, mas não vejo a utilidade das tarifas_total para esta tarefa.
Em terceiro lugar, há muito que sou capaz de conseguir isso, estando num TF elevado, posso copiar e redistribuir com sucesso valores de TFs mais baixos, e vice-versa. Os exemplos que dei há alguns dias são mínimos mas exaustivos, está tudo aí. A discrepância entre as quantidades de duas TFs diferentes pode ser de dois tipos: escassez e excesso. O primeiro caso não é terrível, mas vou verificar se o segundo está a transbordar e tentar limitá-lo, se algo estiver errado. Mas também se bloqueia se as barras copiadas de outro período de tempo forem menores do que o número de barras no actual.
Em quarto lugar, o indicador foi cozido e verificado já há cerca de uma semana, não mostra quaisquer erros óbvios (nem na compilação nem durante a operação), existem apenas alguns problemas implícitos, um dos quais é o não desenho inicial das barras em certas TFs e o acentuado aumento do tempo de cálculo no M1 quando se volta a ligar-lhe (durante a primeira vez, tudo é calculado dentro de 2-3 segundos). O indicador parece sufocar nos cálculos (fuga de memória da avalanche?) Limitei o número de elementos copiados usando CopyBuffer - a 200 em vez de toda a história, mas não alterou a situação. Notei, que offline no M1 e em todo o lado o cálculo é sempre rápido, pois pela primeira vez, online a situação muda drasticamente (provavelmente, o problema está naquele mesmo filtro, que salta alguma coisa em cada tick, embora não deva ser, porque a frequência de redesenho depende de redesenhar uma nova barra de zero e não pode ser anterior à mais jovem TF predefinida numa das pegas). Problemas pequenos mas desagradáveis: a menor tentativa de percorrer o gráfico com a roda do rato desmaterializa todos os fractais e temos de esperar que sejam recalculados e desenhados (embora não tenham chegado novas barras, parece não haver nada a recalcular).