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
Um perigoso equívoco.
Mas minha matriz raramente se iguala ao número de barras no gráfico. Às vezes menos, às vezes mais.
O que me preocupa é que poderia ser maior.
Primeiro, quem impede que você tenha uma matriz de dados interna, o mesmo que o buffer indicador, e preencha-o da mesma forma.
E o que é mais razoável em termos de recursos, para calcular em um indicador ou para calcular o mesmo no Expert Advisor, que é mais rápido?
Mas minha matriz raramente se iguala ao número de barras no gráfico. Às vezes menos, às vezes mais.
O que me preocupa é que talvez seja maior.
Você está se preocupando em vão, Alexey.
Pode haver situações em que isso seja necessário, gugilen.
Por exemplo.
Eu uso principalmente dados de barras de minutos ou carrapatos, independentemente da TF.
É muito errado e desperdiçador quando seu consultor especializado tem que recalcular todos os indicadores de reserva toda vez que você muda de TF. Eu não tenho isso acontecendo comigo.
Portanto, se eu estiver em um período de tempo semanal, meu conjunto obviamente será muito maior do que o número de barras no gráfico.
E não estou nem falando de carrapatos.
Como regra, eu tenho várias matrizes de estruturas e matrizes de índice para aumentar a produtividade e salvar a memória. Suas dimensões podem ser diferentes.
Geralmente falando, quando você usa indicadores via iCustom, você é muito limitado em muitas coisas.
Você está rigidamente vinculado ao tamanho da matriz igual ao número de barras no gráfico. E se você tiver um tempo de permanência ilimitado?
Você está vinculado a apenas um tipo de duplo. E você nem sequer pode sonhar em ter uma série de estruturas.
É até ridículo com indicadores de cor. 8 bytes por barra é obviamente demais.
Os buffers indicadores são muito desperdiçadores em termos de consumo de memória.
Além disso, você só tem acesso aos buffers através do CopyBuffer, mesmo que você precise de apenas uma última barra. Em qualquer caso, esta operação é muito mais lenta do que o simples acesso a elementos de matriz.
É claro que, se você estiver usando indicadores padrão embutidos como o iMA, não precisa se preocupar. Mas, no entanto, acho que estamos falando de indicadores personalizados aqui. Acho que os profissionais não usam indicadores embutidos para o comércio real.
E o que é mais vantajoso em termos de economia de recursos, contando em um indicador ou contando o mesmo em um EA, que é mais rápido?
Eu respondi parcialmente no post anterior.
Esta é uma pergunta muito longa e é melhor perguntar aos desenvolvedores, especialmente aqueles que são responsáveis pela multithreading.
Eu não sou especialista nesta questão. Mas eu posso compartilhar meus pensamentos. Se eu estiver enganado sobre alguma coisa, por favor me corrija se você souber corretamente.
Como você sabe, cada Expert Advisor trabalha em uma thread separada, enquanto todos os indicadores de um símbolo (mesmo em gráficos diferentes) trabalham em uma thread comum.
Portanto, podemos assumir que se o símbolo não estiver sobrecarregado com indicadores, o trabalho do Expert Advisor e o cálculo do buffer de indicadores será executado em paralelo e até mesmo em núcleos de CPU diferentes, se o programador do sistema operacional tiver a sorte de encontrar um núcleo de processador separado para sua thread indicadora. É bem possível que você obtenha resultados mais eficientes em tal esquema. Não sei quanta probabilidade de se obter um núcleo separado para um fio indicador, mas acho que não é muito alta.
Mas existem noções como velocidade de troca de contexto de fio e muitas outras sutilezas de interação de múltiplos fios. Sei que a velocidade de mudança de contexto dos fios é muito alta em comparação com os processos, mas não é grátis.
Além disso, como disse antes, o acesso ao elemento indicador de buffer através do CopyBuffer será mais caro do que o acesso a um elemento de matriz por seu índice.
Também a capacidade de otimizarcálculos desnecessários, o tamanho das matrizes internas e sua indexaçãodentro do Expert Advisor proporciona um grande potencial para reduzir o consumo de recursos.
Naturalmente, você precisará de experiências e testes adequados para dar a resposta completa à sua pergunta. Mas estou ainda mais inclinado a acreditar que o desempenho médio é melhor - tudo em uma única linha de Expert Advisor.
E correr cada vez em um ciclo? O EMA seria ainda mais interessante.
Use o algoritmo de passagem única para calcular a médiaexponencialmente ponderada
ma = (1 - a) * preço + a * ma
Um indicador normal conta todas as barras somente no início, e então conta 1 barra depois. No indicador é fácil fazer o SMA de tal forma, que mesmo no cálculo de 1 barra não há necessidade de ciclo durante todo o período do MA.
É claro que podemos criar buffers de matriz no Expert Advisor. Mas para quê, se existe um elemento especialmente projetado - indicadores?
Então, qual é o problema? Uma nova barra apareceu - nós a consideramos.
Quero que o Expert Advisor não esteja vinculado a um indicador. Elecalcularia as barras e levaria os sinais de compra/venda internamente. Isso é possível?
Use o algoritmo de uma passagem para calcular uma médiaexponencialmente ponderada
ma = (1 - a) * preço + a * ma
Isto não é correto!
Correto é:
ma[i] = (1 - a) * preço + a * ma[i+1]
ou seja, precisamos de uma matriz cuja profundidade necessária depende do parâmetro a.
Caso contrário, será um total absurdo, pelo menos enquanto durar o processo de transição, que pode demorar bastante tempo, dependendo do parâmetro a.
É fácil verificar tudo isso comparando as leituras dos indicadores com os cálculos correspondentes na EA.É claro que também é possível fazer buffers a partir de uma matriz no Expert Advisor... Mas por que, quando há um elemento especialmente projetado - indicadores?
Tenho um problema com a omissão de sinais de um indicador, ninguém deu uma recomendação
https://www.mql5.com/ru/forum/365021
as impressões mostram que o evento vem do indicador, verifica se há uma nova barra, e há os dados da barra anterior, não da nova barra
testei em 3 terminais ao mesmo tempo, ambos os pulos estavam em um dos três terminais, pode ser aleatório