Erros, bugs, perguntas - página 1392

 
Ilya Malev:

...

De qualquer forma, é mostrado de uma forma torta que chamar OnCalculate da OnTimer funciona)

Precisamos de acrescentar a transmissão correcta de valor em séries temporais

O artigo mostra apenas este exemplo. )

Eis outro exemplo para testes com o mesmo método:Receitas MQL5 - Desenvolvimento de Indicador Multimoeda para Análise de Divergência de Preços >>>

 
Karputov Vladimir:

A contagem da variável deve ser incrementada antes de deixar OnCalculate() - então esta variável contará correctamente todas as corridas em OnCalculate.

Não deve contar todos eles, mas apenas até ao cálculo Ishimoku. Durante todo esse tempo, a contagem foi maior ou igual a 0 e depois -1. Na verdade, não importa. O que é importante é que

1) No primeiro início do indicador, foi chamado uma vez (OnCalculate) e só começou no tique seguinte (nos fins-de-semana e feriados até vários dias), se não carregarmos no botão "Refresh".

2) Nesta primeira chamada, o indicador Ishimoku não teve tempo de calcular (quanto mais indicadores mais complexos)

3) Se utilizar OnTimer em vez de OnCalculate (ou chamar OnCalculate do OnTimer), um utilizador pode iniciar um indicador que será construído automaticamente, caso contrário terá de carregar no botão Refresh (provavelmente várias vezes) ou esperar pelos próximos ticks. O que é um inconveniente óbvio, em comparação com o mesmo MT4.

Anatoli Kazharski:
É bastante normal em indicadores simples. Mas nas mais complexas, por vezes não está a funcionar correctamente. )
Na minha opinião, é mais fácil usar OnTimer em vez de OnCalculate.
 
Ilya Malev:

Aí não era preciso contar tudo, mas apenas até ao cálculo do Ishimoku. Toda essa contagem de tempo foi maior ou igual a 0 e depois -1. Em geral, isso não importa. O que é importante é que

...

A ideia é que o utilizador veja o número de entradas no OnCalculate. Ao mesmo tempo, no próprio OnCalculate, quando o resultado doCopyBuffer é mais do que zero, são exibidas as mensagens sobre a obtenção bem sucedida de valores no buffer. Como resultado, o número de entradas bem sucedidas na OnCalculate é visualmente visível.
 
Karputov Vladimir:
A ideia é que o utilizador veja o número de entradas no OnCalculate. Neste caso, no próprio OnCalculate, quando o resultado doCopyBuffer é mais do que zero, as mensagens sobre a recepção bem sucedida de valores no buffer são emitidas. Como resultado, é visualmente visível o número de entradas bem sucedidas na OnCalculate.

Compreendo, é que já avançámos um pouco para além deste exemplo. Tem sido utilizado, resolvido e voltado à questão principal. O exemplo confirmou que desde a primeira execução o cálculo não tem lugar no fim-de-semana. Confirmou-o para mim, pelo menos. Teria de clicar em "Actualizar" o tempo todo. Pessoalmente, considero isto inaceitável para os utilizadores. Por isso, vou tentar fazê-lo através do OnTimer.

 

Não é possível esperar que as séries cronológicas estejam prontas na OnCalculate, porque tudo ficará pendurado. Portanto, se não estiver pronto, fazemos um EventTimer por um milissegundo e verificamos a prontidão no OnTimer. Assim que as séries cronológicas estiverem prontas, chamamos a OnCalculate e matamos o temporizador com o KillTimer.

Tenho outra pergunta, como posso ter 100% de certeza de que todas as séries de tempos necessárias estão prontas ou não?

 

Parece que o OnTimer em indicadores, que são chamados a partir de outros indicadores, não funciona de todo. Por conseguinte, não poderá actualizá-los através do OnTimer. Parece que tenho de suportar dezenas de cliques desnecessários na tabela "Actualizar" durante a operação, em comparação com o MT4.

E, por azar, será feito sempre com o rato a partir do menu, porque não existe tal opção na Barra de Ferramentas, nem existe uma tecla de atalho para isso. E há indicadores "pesados", que são construídos com muito mais tempo do que 1 segundo.

 
Ilya Malev:

... E há indicadores "pesados" que demoram muito mais de 1 segundo a construir.

Encontrei o problema dos indicadores "pesados". Procure através dos links por ordem - estará interessado.

O ponto-chave - um indicador pesado para um símbolo atrasa o trabalho de todos os EAs sobre este símbolo.Até mesmo em outra conversa!!! Os indicadores pesados são maus :)

2)Um tema com uma descrição e opções para resolver o problema

3.A solução para o problema dentro do Mercado

 
Andrey Miguzov:

Confrontados com o problema dos indicadores "pesados". Dê uma vista de olhos nos links em ordem - estará interessado.

Não preciso de trocar dados entre as AA e os indicadores, e os próprios indicadores, embora "pesados" em parte, mas efectuo cálculos relativamente longos apenas no momento do cálculo de toda a história no início.

O problema é que não posso esperar pelo cálculo de todos os outros indicadores utilizados neste indicador no primeiro início do OnCalculate, e o próprio OnCalculate é chamado novamente apenas no próximo tick, que não está presente no fim-de-semana, por exemplo. Não se pode usar OnTimer em vez de (ou em conjunto com) OnCalculate, porque não será chamado em indicadores que não foram chamados por um utilizador, mas, por exemplo, foram chamados a partir de outro indicador usando o iCustom (até agora, de acordo com os meus testes). Gostaria de encontrar uma solução para o indicador esperar automaticamente pelo cálculo de todos os indicadores utilizados no mesmo e fornecer informações sem interferência do utilizador (sem premir regularmente o botão "Refresh" do menu pendente do gráfico, se a frequência de novos ticks não for suficiente para isso).

 
Ilya Malev:

Não preciso de trocar dados entre os Conselheiros Peritos e os indicadores, e os próprios indicadores, embora "pesados" em parte, mas eles efectuam cálculos relativamente longos apenas no momento do cálculo de toda a história no início.

O problema é que não posso esperar pelo cálculo de todos os outros indicadores utilizados neste indicador no primeiro início do OnCalculate, e o próprio OnCalculate é chamado novamente apenas no próximo tick, que não está presente no fim-de-semana, por exemplo. Não se pode usar OnTimer em vez de (ou em conjunto com) OnCalculate, porque não será chamado em indicadores que não foram chamados por um utilizador, mas, por exemplo, foram chamados a partir de outro indicador usando o iCustom (até agora, de acordo com os meus testes). Gostaria de encontrar uma solução, que o indicador pudesse esperar automaticamente pelo cálculo de todos os seus indicadores e fornecer informações sem a intervenção de um utilizador (sem premir regularmente o botão "Actualizar" do menu pendente do gráfico, se a frequência de novos ticks não for suficiente para isso).

Se a tarefa for definida de tal forma - não há realmente necessidade.

Mas podemos criar um consultor especializado que criará indicadores, receberá dados dos mesmos, processará os dados e passará o resultado para o visualizador de indicadores. Então não haverá todos estes problemas que descreveu. E muitos outros problemas também...

A solução não é muito agradável, mas ajuda a livrar-se dos problemas descritos.

 

OLÁ, PODERIA ACONSELHAR-ME, QUANDO ABRO UMA CONTA REAL NO MT5, QUANTO TEMPO DEMORA UM EMPREGADO DA EMPRESA A TELEFONAR-ME E A COMPLETAR O PROCEDIMENTO DE ABERTURA DE CONTA?