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
Tenho uma pergunta prática.
Por que é necessário verificar a deficiência do identificador do indicador a cada chamada de CopyBuffer()? Em meu EA, fiz esse procedimento uma vez (com a chegada do primeiro tick, depois de verificar a sincronização de dados) e, mais tarde, comecei a receber o erro 4807 Error indicator handle. CSymTotal=7. Os identificadores foram recebidos em uma matriz:
A verificação de impressão mostra que todos os sete H_Ind[0..6] têm valores 10..15 respectivamente, ou seja, diferentes de -1. Os identificadores parecem ser válidos, mas em resposta a CopyBuffer(H_Ind[0-6]...) recebo CopyBuffer=-1, LastError=4807(!!!).Às vezes, tudo ocorre normalmente e, às vezes, ocorrem erros.Depois que introduzi verificações como neste artigo,
até agora tudo está funcionando corretamente. Um mistério...
Não entendo qual é a minha falha.... E, o mais importante, por que é necessário verificar a validade do identificadortoda vez que uso CopyBuffer() e o crio novamente? Ele não é salvo até que o Expert Advisor termine seu trabalho? Isso é uma necessidade em geral ou é apenas para a conveniência do exemplo?
Tenho uma pergunta prática.
Por que é necessário verificar a deficiência do identificador do indicador a cada chamada de CopyBuffer()? Em meu EA, fiz esse procedimento uma vez (com a chegada do primeiro tick, depois de verificar a sincronização de dados) e, mais tarde, comecei a receber o erro 4807 Error indicator handle. CSymTotal=7. Os identificadores foram recebidos em uma matriz:
A verificação de impressão mostra que todos os sete H_Ind[0..6] têm valores 10..15 respectivamente, ou seja, diferentes de -1. Os identificadores parecem ser válidos, mas em resposta a CopyBuffer(H_Ind[0-6]...) recebo CopyBuffer=-1, LastError=4807(!!!).Às vezes, tudo ocorre normalmente e, às vezes, ocorrem erros.Depois que introduzi verificações como neste artigo,
até agora tudo está funcionando corretamente. Um mistério...
Não entendo qual é a minha falha.... E, o mais importante, por que é necessário verificar a validade do identificadortoda vez que uso CopyBuffer() e o crio novamente? Ele não é salvo até que o Expert Advisor termine seu trabalho? Isso é uma necessidade ou é apenas para a conveniência do exemplo?
Em geral, a pergunta deve ser formulada de forma mais ampla:
Que verificações, condições ou atrasos devem ser introduzidos ANTES e DEPOIS de CopyBuffer(), para obter GARANTIDAMENTE os valores do indicador 400(0) de que preciso agora(!), em sete (dez) instrumentos em condições de velocidade máxima (em um loop)?
Pois, return(0) = "ah, bem, não funcionou agora, talvez da próxima vez funcione...".
Aqui, a propósito, o restante da cópia está ao lado...
PS. Talvez isso já esteja fora do tópico. Bem, a pergunta não é para o autor, mas para todos que possam esclarecer...
Em meus exemplos, a condição é a seguinte: se o identificador for válido, prosseguimos com a cópia dos dados. Caso contrário, criamos o indicador novamente e saímos dessa função, pois o cálculo do indicador leva tempo. O mesmo acontece com a cópia, durante a cópia, o indicador pode ser recalculado, portanto, CopyBuffer() retorna -1, assim que os dados estiverem prontos, a função fará seu trabalho, por isso é necessário verificar tudo.
Sim, Sergey, eu entendo. Não tive a intenção de ofuscar o artigo ou o autor. O artigo é excelente. Não se trata de uma reclamação, mas de uma tentativa de encontrar uma resposta. É apenas a discussão mais próxima que encontrei sobre o assunto. Você provavelmente também gostaria de saber a resposta com mais precisão, não é mesmo? )
Talvez devêssemos colocá-la em um tópico separado?
Talvez colocá-lo em um tópico separado?
https://www.mql5.com/ru/forum/1880.
Aqui, coloque-a no tópico. Sergey, peço desculpas por ter ido além do escopo do artigo. Ficarei feliz...)))
Desejo que alguém possa fornecer 20 métodos de gerenciamento de dinheiro!!!!!!
Para este artigo, a ideia é muito boa. Mas você esqueceu o conceito de OOP e de programação em geral: ABSTRATIVIDADE. Em suas funções, há indicadores codificados, o símbolo atual, o período atual e os parâmetros do indicador. A ideia é boa, mas não está totalmente implementada, está longe da perfeição. Por exemplo, quero verificar o cruzamento de linhas de indicadores, cada uma delas em um período de tempo diferente e em símbolos diferentes. Segundo: o que acontece com as suas funções se o terminal perder temporariamente a conexão com o servidor e perder as três barras que você está processando? Há um sinal, mas a entrada foi perdida. A busca por um sinal deve ser realizada com um CHARGE. Em seguida, o sinal deve ser verificado se já foi processado. Pode haver tantas interseções que você mesmo se surpreenderá. Basta passar parâmetros (número do indicador, símbolo, período de tempo, início da busca, fim da busca, linha do indicador...) para as funções. - Com isso, você tornará seu sistema mais flexível e o Expert Advisor poderá ver o que é inacessível aos humanos: a interseção de linhas de diferentes símbolos e diferentes períodos de tempo. Isso é muito melhor do que as funções apresentadas aqui. Você também precisa trabalhar com o conceito de nomear variáveis - você tem poucas variáveis com nomes que não significam nada - mas esse é um tópico separado. Isso é chamado de estilo de programação. Cada um tem seu próprio estilo. Mas vejo que, aos poucos, você está se aproximando dos conceitos que tentei usar no MT4 - isso é muito encorajador.
Para este artigo, a ideia é muito boa. Mas você esqueceu o conceito de OOP e de programação em geral: ABSTRATIVIDADE. Em suas funções, há indicadores codificados, o símbolo atual, o período atual e os parâmetros do indicador. A ideia é boa, mas não está totalmente implementada, está longe da perfeição. Por exemplo, quero verificar o cruzamento das linhas do indicador, cada uma delas em um período de tempo diferente e em símbolos diferentes. Segundo: o que acontece com as suas funções se o terminal perder temporariamente a conexão com o servidor e perder as três barras que você está processando? Há um sinal, mas a entrada foi perdida. A busca por um sinal deve ser realizada com um CHARGE. Em seguida, o sinal deve ser verificado se já foi processado. Pode haver tantas interseções que você mesmo se surpreenderá. Basta passar parâmetros (número do indicador, símbolo, período de tempo, início da busca, fim da busca, linha do indicador...) para as funções. - Com isso, você tornará seu sistema mais flexível e o Expert Advisor poderá ver o que é inacessível aos humanos: a interseção de linhas de diferentes símbolos e diferentes períodos de tempo. Isso é muito melhor do que as funções apresentadas aqui. Você também precisa trabalhar com o conceito de nomear variáveis - você tem poucas variáveis com nomes que não significam nada - mas esse é um tópico separado. Isso é chamado de estilo de programação. Cada um tem seu próprio estilo. Mas vejo que eles estão se aproximando lentamente dos conceitos que tentei usar no MT4 - isso é muito encorajador.