Um conselheiro sem indicador. Isto é possível? - página 3

 
Алексей Тарабанов:

Um perigoso equívoco.

Qual é o equívoco?
Se você precisar de uma matriz histórica, faça-o. Se você não precisa, não o faça.
Pessoalmente, eu faço principalmente uma série de testes internos, como muitas vezes uso testes internos, etc. Mas minha matriz raramente é igual ao número de barras no gráfico. Às vezes menos, às vezes mais.
Tomemos um ziguezague comum, por exemplo. Há menos de 10% dos elementos informativos da matriz e o restante está vazio, mas a matriz inteira está enumerada. Então, é eficiente? Obviamente, é mais correto usar um conjunto mais curto de estruturas com valor e índice.
 

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.

 
Nikolai Semko:
Primeiro, quem impede que você tenha uma matriz de dados interna, o mesmo que o buffer indicador, e preencha-o da mesma forma.
Em segundo lugar, por que um assessor precisaria de toda a história. Como regra, o último e talvez o penúltimo valor. E não precisamos de todas essas coisas indicadoras.

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.


 
VVT:

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.

 
Dmitry Fedoseev:

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

 
Dmitry Fedoseev:

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.

 
anim:
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?
É claro que é possível, se você implementar a fórmula do indicador no Expert Advisor!
 
Vladimir Mikhailov:

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.
 
Dmitry Fedoseev:

É 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

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...