
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
Não, Vladimir. É um pouco errado.
Neste caso, você deve aplicar o ArraySetAsSeries(array, false); a um array de trezentos elementos entre os quais iMAOnArray() é considerado. Mas é melhor usarmos CopyOpen() em vez do laço de enchimento da matriz.
Segundo entendi, nesta variante será melhor
Não, Vladimir. É um pouco errado.
Neste caso, você deve aplicar o ArraySetAsSeries(array, false); a um array de trezentos elementos entre os quais iMAOnArray() é considerado. Mas é melhor usarmos CopyOpen() em vez do laço de enchimento da matriz.
Segundo entendi, nesta variante será melhor
Esta é a questão. Se eu não precisar calcular o conjunto completo, mas apenas os últimos N elementos.
Não entendo bem a lógica de calcular estas funções quando se trata de limitar. Eu tenho uma matriz de séries temporais (um dos buffers indicadores), se eu deixar o número de elementos igual a 0, sem perguntas, tudo é contado e calculado, mas se eu diminuir o número de elementos envolvidos no cálculo pelos mesmos turnos, eu recebo apenas os primários. Simplesmente falando, há uma matriz de 5000 elementos (barras no gráfico), para economizar tempo preciso calcular apenas os últimos 300, mas quando especifiquei o valor 300 no segundo parâmetro, obtive 5000-4700 elementos primários, mas no offset 300-0, e outros valores em uma chamada não mudam. Qual é a vantagem de usar este parâmetro?
O inferno sabe. Basta esquecer. Se você precisar acelerar os cálculos, reduza o número de itens sendo calculados em seu laço.
Uma de duas coisas: ou é impossível ou você precisa de alguma combinação secreta de séries cronológicas, não de séries cronológicas, instruções de cálculo.
Foda-se, sabe. Basta esquecer. Se você quiser acelerar os cálculos, reduza o número de elementos a serem calculados em seu ciclo.
Uma de duas coisas: ou é impossível ou você precisa de alguma combinação secreta de séries temporais, não de séries temporais, direção do cálculo.
Sim, como já escrevi um pouco antes, há apenas uma possibilidade - usar seus próprios análogos das funções acima, que podem ser usados para calcular pelo menos um elemento.
O paradoxo da situação é que se fizermos um modelo similar, sobrepondo a média ou as barras de bollinger em qualquer indicador (linha de preço), não haverá tal lentidão no cálculo inicial de todas as barras do histórico, como ao usar estas funções no código, ao reiniciar o terminal ou ao trocar o TF, então não está claro, o que leva tanto tempo para ser calculado nestas funções.
Foda-se, sabe. Basta esquecer. Se você quiser acelerar os cálculos, reduza o número de elementos a serem calculados em seu ciclo.
Uma de duas coisas: ou é impossível ou você precisa de alguma combinação secreta de séries cronológicas, não de séries cronológicas, instruções de cálculo.
Também usei tal construção.
A propósito,"MovingAverages.mqh" é duas vezes mais rápido que"iMAOnArray", mesmo a versão antiga.
https://www.mql5.com/ru/forum/79988
Sim, como escrevi um pouco antes, existe apenas uma opção - utilizar nossos próprios análogos das funções mencionadas, onde é possível calcular pelo menos um elemento.
O paradoxo da situação é que se fizermos um modelo semelhante anexando as faixas MA e Bollinger a qualquer indicador (linha de preço), não veremos tanta lentidão no cálculo inicial de todas as barras do histórico, como ao usar estas funções no código, ao reiniciar o terminal ou ao trocar o TF, então não está claro o que leva tanto tempo para calcular nestas funções.
Está diminuindo a velocidade mesmo quando se usa o iMAOnArray? Não deveria haver tal coisa. Como você estava, houve uma desaceleração da StdOnArray (ou BandsOnArray, não me lembro) os desenvolvedores não admitiram a existência do bug por um longo tempo. Então, de repente, ele foi consertado e funcionou rapidamente. Quem sabe, talvez o bug tenha voltado. Se o iMAOnArray() também causa lentidão perceptível, é um bug. Parece que houve conversas sobre isso há alguns meses. Mas ainda está lá, aparentemente.
A desaceleração mesmo com o uso do iMAOnArray? Não deveria ser assim. Como em algum momento, houve uma desaceleração da StdOnArray, os desenvolvedores não reconheceram o bug por muito tempo. Então, de repente, eles a consertaram e funcionou rapidamente. Quem sabe, talvez o bug tenha voltado. Se o iMAOnArray() também causa lentidão perceptível, é um bug. Parece que houve conversas sobre isso há alguns meses. Mas ainda está lá, aparentemente.
É difícil julgar se é muito lento ou não, porque tudo depende do comprimento do gráfico (número de barras), o problema é que para otimização você só precisa calcular um pouco, e não pode limitar o comprimento do cálculo pelo cálculo real.
Faça o cálculo comMovingAverages.mqh e ele será calculado muito rapidamente.
Então me mostre a variante "funcional" do código, o código original está aqui, que você está tentando reduzir para 12 elementos exibidos em vez dos trezentos solicitados por mim, e deve terminar com 3 buffers indicadores com os dados especificados, de modo que pelo menos 300 elementos foram exibidos no porão, E então, quando uma nova barra chegar, respectivamente, 301 e então o valor será sorteado, mas não esqueça que neste caso, se você usar 0 como limite para o cálculo, somente a nova barra será recalculada, e o tipo de média (suavização) para o segundo buffer não é necessariamente SMA, e pode ser qualquer um dos 4 disponíveis.
Aqui está.