Verificação automática dos produtos no mercado (perguntas e sugestões) - página 6

 
Andrey Khatimlianskii:

Sim, de fato, esqueceu-se de "@global_initializações".

Acontece que as barras de desenho e os próprios amortecedores indicadores demoram tanto tempo?

E se você compila para liberar e executar o visualizador no mesmo intervalo, rolando diretamente até o final ("pular para..."), quanto tempo leva?

Bem, por quanto tempo?

 
Prostocar:
Olá Olá, perdi meu Mercado no terminal não posso instalar os Expert Advisors e os indicadores da reinstalação do terminal no Mercado não ajudaram, assim como os produtos previamente adquiridos no Mercado não estão atualizados quem sabe como resolver o problema

Você ainda não respondeu à minha pergunta:

Você pode verificá-lo no terminal, na janela Ferramentas, na guia "Log".


A segunda pergunta: a que servidor você está se conectando? Tente conectar-se à MetaQuotes-Demo.

 
MetaQuotes Software Corp.:

Os registros do autovalidador mostraram que o teste no M1 não pode passar o intervalo mensal em uma hora .

Enquanto no H1, o mesmo indicador passa no teste em alguns minutos.

Procure a razão em seu código.

A razão é mais provável que esteja no autovalidador. Consegui descobrir que o problema está de alguma forma relacionado ao processamento do histórico do tick.

Quando o primeiro evento OnCalculate é processado, o indicador tenta carregar o histórico de ticks para o último dia, executando a função CopyTicksRange. Se cada barra recebe pelo menos alguns carrapatos, o histórico recebido é traçado e então ele processa os carrapatos on-line. Se algumas barras do histórico não receberam nenhum carrapato, o manipulador OnCalculate retorna 0 e inicia um timer de 5 segundos. Nos próximos eventos OnCalculate, o indicador continua a tentar carregar o histórico de carrapatos. No manipulador OnTimer, o temporizador pára e se todas as chamadas OnCalculate não conseguirem carregar o histórico por 5 segundos, o pedido de atualização é feito usandoChartSetSymbolPeriod(0, NULL, 0)call.

Note que tudo é executado de forma assíncrona e não há pendências pela lógica. No pior dos casos, se assumirmos que o banco de dados de carrapatos não está disponível por algum motivo, teremos uma série de atualizações com um período de 5 segundos. Mas o indicador neste caso não é calculado de forma alguma, pois não há dados. A influência da atualização foi investigada, ela está ausente - veja o comentário abaixo.

Este código funciona bem para mim on-line em diferentes servidores, diferentes caracteres/tempo e no testador.

O mesmo código parece estar pendurado em algum lugar no autovalidador. Pelo método de intuição (que não deveria acontecer em caso de feedback normal, registros, etc.) descobri o seguinte.

Se você comentar o comentário para o histórico do tick, o indicador se autovalida normalmente.

Como há muitos fatores históricos solicitando, não posso dizer exatamente o que e em que combinação "pendura" o autovalidador:

  • CopyTicksRange na ausência de ticks do histórico (mas mesmo que estejam ausentes, o indicador não calcula e imediatamente devolve o controle ao ambiente, os ticks online continuam a "ticar" livremente, eu emulei tal situação - sem pendências);
  • temporizador;
  • ChartSetSymbolPeriod (como um teste de estresse eu executei o indicador com esta atualização em modo extremo (em cada tick) e não resulta em nenhuma desaceleração ou carga perceptível da CPU, esta solicitação também é assíncrona);
  • Acrescentei um contador de atualização falhado para pará-los após um determinado número de tentativas (5), mas isto não tem nenhum efeito no sucesso.

Se for solicitada uma atualização ao manipulador OnTimer - a autovalidação falha. Se a atualização for transferida para a OnCalculate - a autovalidação é bem sucedida. Assim, há uma evidência indireta de que está chamando ChartSetSymbolPeriod da OnTimer que dá um efeito negativo. Fiz essa combinação de propósito no testador - sem problemas. Obviamente, o autovalidador é diferente do testador disponível publicamente.

Uma vez que as condições identificadas para passar a validação não são muito claras (pelo menos estranhas) e requerem tornar o código artificialmente mais complexo por intuição, elas são inaceitáveis para um produto de liberação.

 
Boa tarde, estou pedindo ajuda, quando a autovalidação mostra um erro sobre a ausência do indicador, o indicador é definido através de recurso, em outros terminais compilados de arquivo funciona sem problemas tanto no teste como na conta real. Qual pode ser o problema?
Arquivos anexados:
2yr38jvml4.png  32 kb
 
RODION SLOTIN:
Olá, estou pedindo ajuda, durante a autovalidação um erro sobre a ausência do indicador, o indicador é definido através de recurso, em outros terminais compilados de arquivos funciona sem problemas tanto em teste como em tempo real. Qual pode ser o problema?

Tente não usar extensões e traços duplos. Este é apenas um rápido palpite.

 
RODION SLOTIN:


Você pode me dizer exatamente onde?

#resource "Índicators\\\\guru.ex4"



Você deve escrevê-lo desta forma (exemplo):

#resource "\\Indicators\\trend_channel.ex4"

iCustom(Symbol(),0,"::Indicators\\trend_channel.ex4",kstd,bars,shift,0,bars);

e você tem alguns disparates escritos aqui.

 
A pasta Bibliotecas também está listada no registro por algum motivo. Por que é assim? Eugene descreveu corretamente a referência a um recurso. Deve funcionar localmente (se todas as pastas padrão, MQL4/Experts, MQL4/Indicators). Quando você conserta o lançamento local, o mais provável é que funcione em autovalidador.
 

Olá.

Estou tentando carregar meu produto para o mercado. A validação automática dá o seguinte erro:

teste em EURUSD,H1 (rede) 2019.05.01 00:00:00:30 fora do alcance em 'VWAP Ancorado sem Volume.mq5' (387,30) Entretanto, isto não pode ser. Estou colocando o VWAP onde o mouse move o ponto de partida. O roteiro se compila sem erros e tudo funciona bem. Talvez a validação automática não possa interagir com scripts onde eu preciso selecionar o ponto de partida?

Qual mais pode ser a razão? O indicador tem uma escolha entre leitura com ou sem volumes. Por padrão é "sem", mas talvez o validador passe por todos os parâmetros possíveis e tropeça no cálculo com volumes em pares de moedas. O que fazer?

 
Anton Polkovnikov:

Olá.

Estou tentando carregar meu produto para o mercado. A validação automática dá o seguinte erro:

teste em EURUSD,H1 (rede) 2019.05.01 00:00:00:30 fora do alcance em 'VWAP Ancorado sem Volume.mq5' (387,30) Entretanto, isto não pode ser. Estou colocando o VWAP onde o mouse move o ponto de partida. O roteiro se compila sem erros e tudo funciona bem. Talvez a validação automática não possa interagir com scripts onde eu preciso selecionar o ponto de partida?

Qual mais pode ser a razão? O indicador tem uma escolha entre leitura com ou sem volumes. Por padrão é "sem", mas talvez o validador passe por todos os parâmetros possíveis e tropeça no cálculo com volumes em pares de moedas. O que fazer?

Tentativa de importar arquivos compilados (mesmo EX4/EX5) e DLLs

Os programas distribuídos através do Mercado devem ter a garantia de segurança para os usuários. Portanto, qualquer tentativa de utilizar DLLs ou funções de arquivos EX4/EX5 compilados é considerada um erro. Tais produtos não serão publicados no mercado.

Se seu programa precisar usar indicadores adicionais que não são fornecidos, useRecursos.


Aplicando a indicadores personalizados via iCustom()

Se seu programa precisa ter acesso aos dados de indicadores personalizados, você deve colocar todos os indicadores necessários emRecursos. Os produtos do Mercado devem estar prontos para trabalhar em qualquer ambiente despreparado, portanto devem conter tudo o que você precisa em seu arquivo EX4/EX5. Artigos recomendados sobre o assunto:


https://www.mql5.com/ru/articles/2555#dll_and_libraries_prohibited

 
Anton Polkovnikov:

teste em EURUSD,H1 (rede) 2019.05.01 00:00:00:30 fora do alcance em 'VWAP Ancorado sem Volume.mq5' (387,30) Entretanto, isto não pode ser.

O conjunto fora de alcance na linha 387 é o personagem 30. Está escrito. Devemos verificar a matriz.