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
Bravo! Depois de corrigir alguns erros, você me derrubou do pedestal mesmo sem usar o ArrayCopy. Xeque-mate. :))
for(;;)
para
Ainda sair via pausa
P.S. Só por diversão, fez uma cópia direta em todo o conjunto.Provavelmente vale a pena mudar
para
Ainda sair via pausa
Funciona mais lentamente do que:
Se você entrar neste concurso sem nenhuma regra, deverá copiar o código do "líder" (atualmente Kuznetsov) e modificá-lo de acordo com o comportamento do sistema descrito acima.
Isto leva a um ganho estável de cerca de 20 msec em relação ao tempo de execução inicial de 740 msec:
A propósito, estou curioso como os resultados mudarão se a matriz original for uma série. ArraySetAsSeries(arr,true)
Se aceitarmos este concurso sem regras, copiamos o código do "líder" (atualmente Kuznetsov) e o modificamos de acordo com o comportamento do sistema acima.
Temos um ganho estável de cerca de 20 ms em relação ao tempo de execução original de 740 ms:
Vale a pena acrescentar. Se você não se importa com a seqüência de elementos da matriz. Então sim, é uma excelente variante. Se é importante manter a consistência, então algo mais é necessário.
Já que estamos nisso, aqui está minha versão:
resultados:
S.S. Em princípio, o limite de velocidade foi atingido. O próximo passo é apenas a micro-optimização e a manipulação do laço:
Acho que o resultado do Nikolai é um uso hábil de tais micro-optimizações.
Há uma matriz contendo um conjunto de dados do tipo 1,2,3,6,9,5,6,3,25,6,8,7,4 você precisa remover, por exemplo, os valores 3 e obter a mesma matriz sem 3 e espaços vazios na saída...
Procuro a maneira mais rápida de eliminar uma série de valores desnecessários.
O seguinte exemplo vem à mente
Talvez haja uma maneira mais barata e rápida ?
Vladimir, por que isso é necessário?
Pelo que entendi, isso tem que ser feito com o tampão indicador. Mas não seria mais lógico substituir os valores vazios e/ou "desnecessários" pelo valor anterior ou, por exemplo, a média aritmética dos valores extremos? Então será muito mais rápido e a dimensão da matriz permanecerá a mesma.
Vladimir, por que isso é necessário?
Pelo que entendi, isso tem que ser feito com o tampão indicador. Mas não seria mais lógico substituir os valores vazios e/ou "desnecessários" pelo valor anterior ou, por exemplo, a média aritmética dos valores extremos? Então será muito mais rápido e a dimensão da matriz permanecerá a mesma.
Vladimir, por que isso é necessário?
Pelo que entendi, você tem que fazer isso com o buffer indicador. Mas não seria mais lógico substituir os valores vazios e/ou "desnecessários" pelo valor anterior ou a média aritmética dos valores extremos, por exemplo? Então será muito mais rápido e a dimensão da matriz permanecerá a mesma.
Quando há vários EAs com um grande número de posições/ordens abertas em mql4, na minha opinião, é mais fácil manter a matriz com bilhetes e verificar se a ordem está fechada, passando pela matriz em vez de tentar todas as posições abertas com verificação de símbolo e mágico. Portanto, se a ordem for fechada, ela deve ser "riscada" da matriz. Nesses casos, eu costumava copiar a matriz "em si mesma" e reduzir o tamanho da matriz em um. Isso foi sugerido por Vasiliy Sokolov, muito obrigado, saberei que não é a opção mais difícil, pois nunca pensei em velocidade. Por que a tarefa era remover vários elementos iguais é outra questão...
ps Enquanto eu escrevia isto, a resposta já está lá. Portanto, a questão também já está errada... ))))))Quando há vários EAs com um grande número de posições/ordens abertas em mql4, na minha opinião, é mais fácil manter a matriz com bilhetes e verificar se a ordem está fechada, passando pela matriz em vez de tentar todas as posições abertas com verificação de símbolo e mágico. Portanto, se a ordem for fechada, ela deve ser "riscada" da matriz. Nesses casos, eu costumava copiar a matriz "em si mesma" e reduzir o tamanho da matriz em um. Isso foi sugerido por Vasiliy Sokolov, muito obrigado, saberei que não é a opção mais difícil, pois nunca pensei em velocidade. Por que a tarefa era remover vários elementos iguais é outra questão...
ps Enquanto eu estava escrevendo, a resposta já está lá. Acontece que a questão já está errada também... ))))))Eu descobri então, grosso modo.
Se tivermos uma matriz de ordens, a ordem não é importante, então é mais razoável usar a variante do Kuznetsov com preenchimento de "furos" com valores da parte superior da matriz, de modo a não mover o resto dos elementos da matriz. Isto, claro, é mais rápido.