Erros, bugs, perguntas - página 2180
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
Claramente, zero.
Pode demorar 22 segundos a decidir que não existem barras zero num determinado período de tempo?
Claramente um bug algorítmico na implementação interna das Barras.
E não compreendo como se distingue entre zero barras num determinado período de tempo e este zero:
A partir da documentação: Se os dados para uma série de tempos com parâmetros especificados ao chamar a função Bars() ainda não forem gerados no terminal, ou se os dados da série de tempos não estiverem sincronizados com o servidor de comércio no momento da chamada da função, a função retornará o valor zero.
Por outras palavras, como posso distinguir entre um resultado nulo e um erro nulo?E não compreendo como se distingue entre zero barras num determinado período de tempo e este zero:
Da documentação: Se os dados para uma série de tempos com parâmetros especificados quando a função Bars() é chamada ainda não tiver sido gerada no terminal, ou se os dados da série de tempos não estiverem sincronizados com o servidor de comércio no momento em que a função é chamada, a função retornará zero.
A origem do zero não é importante nesta questão, o que é importante é que este zero nasça para sempre pela função das Barras sob a forma de um par de dezenas de segundos.
O que não compreendo é como se distingue entre zero barras num determinado período de tempo e este zero:
A partir da documentação: Se os dados para uma série de tempos com parâmetros especificados ao chamar a função Bars() ainda não tiverem sido gerados no terminal, ou se os dados da série de tempos no momento da chamada da função não estiverem sincronizados com o servidor da troca, a função retornará zero.
Por outras palavras, como posso distinguir entre um resultado nulo e um erro nulo?Pense sobre isso. Se tivesse a tarefa de criar um análogo da função Barras e lhe fosse atribuída uma data/hora de matriz, os valores de cujos elementos diminuem com o aumento do número, por outras palavras, a matriz é ordenada.
Acha que seria difícil implementar um algoritmo de procura do número de elementos de uma tal matriz ordenada num dado intervalo de tempo? E se não houver uma única barra no intervalo de tempo dado ou se a matriz ainda não tiver sido inicializada, devemos devolver zero.
Não - o algoritmo é suficientemente simples. O que pode funcionar durante 22 segundos?
Nesta questão, a origem do zero não é importante, o que é importante é que este zero nasça pela função das Barras durante idades, sob a forma de um par de dezenas de segundos.
Precisamente a origem é importante, porque se ::Bars() retornassem -1 em vez de 0 (como agora) em caso de erro histórico, não teríamos qualquer atraso. Mas agora 0 é interpretado como um erro e o atraso é devido a repetições internas https://www.mql5.com/ru/forum/1111/page2200#comment_6955559
Além disso, suponha-se que introduzimos uma verificação adicional e o atraso desaparece. Então o que aconteceu? Têm zero. Será isto um resultado ou um erro?
Isto deve-se muito provavelmente ao carregamento histórico
Portanto, o engraçado é que a primeira impressão é processada sem demora, ou seja, a história por H4 já está carregada.
E se mudar CopyTime H4 para W1, não haverá qualquer atraso. Isto significa que a história para W1 também já está carregada.
É que as Barras ficam inibidas por intervalo de tempo entre o TempoCorrente() e o tempo de abertura da barra zero.
É a origem que importa, porque se ::Bars() retornasse -1 em vez de 0 (como agora) em caso de erro histórico, não haveria qualquer atraso. Mas agora 0 é interpretado como um erro e o atraso ocorre devido a repetições internas https://www.mql5.com/ru/forum/1111/page2200#comment_6955559.
Além disso, suponha-se que foi introduzida uma verificação adicional e que o atraso desapareceu. Então o que aconteceu? Têm zero. Será isto um resultado ou um erro?
Não importa em todos os meus algoritmos se o resultado de zero é uma barra que não bate no intervalo dado ou a ausência de matriz como tal.
Está a afastar-se do problema.
Está a afastar o problema.
Estou a afirmar a essência do problema, estás fixado no teu caso particular. A julgar pelo seu posto anterior, ainda não compreende quando ocorre um atraso (que é para além da causa), embora a página anterior explique tudo em pormenor.
Talvez este guião o possa ajudar a compreender
Estou a afirmar a essência do problema, enquanto o senhor se concentra no seu caso particular. A julgar pela sua mensagem anterior, ainda não compreende quando ocorre um atraso (isto é para além da razão), embora a página anterior a explique em pormenor.
Já formulei acima a minha opinião sobre quando é que o atraso ocorre.
Mais uma vez:
As barras desligam-se se a hora de início_de_início estiver no intervalo desde a hora de abertura da barra zero do TF solicitado até ao TimeCurrent(). (Apenas uma hipótese, mas verificada na prática)
Sim, o erro ocorre num caso especial. Mas os casos privados não devem estar em funções padrão de linguagem de programação integrada.
E o seu "ponto" não é o ponto, porque está simplesmente a citar a referência de comando das Barras, com a qual estou perfeitamente familiarizado. Não há código de erro na função Bars porque não é necessário.
Tanto mais que, neste caso, lidamos com matrizes de séries temporais totalmente formadas.
Isto pode ser claramente visto no código ligeiramente modificado do meu guião:
Resultado:
Talvez este guião ajude a compreender
O seu guião demonstra este problema - enforcamento.
porque o intervalo de tempo start_time - stop_time está dentro do bar semanal.
Se sair do bar semanal, então não há congelamento:
Obrigado pelo exemplo mais claro
No MT4 CopyHigh, as funções CopyLow (não olhou para as outras) causaram um erro crítico quando não havia historial no testador. A EA foi testada em H1 e o pedido foi da M1
1 15:14:35.410 2017.01.04 19:54:24 Access violation read to 0x0A971FE8 in 'C:\Users\Halyna\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Experts\____________.ex4'
3 15:14:35.465 2017.01.04 19:54:24 Os testes foram interrompidos devido a um erro crítico na EA