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
Em essência, todos os algoritmos são os mesmos. Todos modificam a matriz elemento por elemento, e todos se esforçam pela variante de Fedoseev, porque ela não tem nada desnecessário.
Somente no meu caso, isso é feito em blocos usando o ArrayCopy, portanto, há uma vantagem de velocidade.
E quanto a Pyotr? Todos "rasgaram"? Ninguém colocou seu código no verificador. Pergunto-me como, e até que ponto, ele explodiu todos no quadro.
Pensei nas razões e corrigi duas linhas para remover um terço dos elementos, não 0,1%.
Conclusão: calcular endereços em uma matriz com uma distância arbitrária entre seus números ainda é pior do que processar itens em fila em uma determinada etapa, ainda mais na etapa 1, o compilador pode otimizá-la.
Ah, estou entendendo o que você quer dizer. De alguma forma eu perdi esta frase
Sim, claro que é claro, mas mesmo assim, mesmo quando eu tenho que jogar fora cada terceiro elemento (então o ArrayCopy deixa de trabalhar para mim e os ganhos desaparecem) o quadro é diferente:
A variante de Pavlov realmente não funciona, mas você também tem o checksum correto e incorreto.
E o Peter? Você as despedaçou todas? Ninguém inseriu seu código no verificador. É interessante como e até que ponto ele arrebentou com todos os membros da diretoria.
Eu ainda não entendo seu vôo de fantasia. Ele ainda não forneceu uma função pronta para uso. E se eu o completar para ele, ele me acusará novamente de refazer tudo. ))
Eu ainda não entendo seu vôo de fantasia. Ele ainda não forneceu uma função pronta para uso. E se eu o completar para ele, ele me acusará novamente de refazer tudo. ))
Bem, olhando para seu código de um telefone celular, tive a impressão de que ele escreve de "maneira direta". É por isso que ele não forneceu a função - ele faz tudo de uma vez. E seu roteiro não é uma função, mas um código simples. É claro que tal roteiro pode não implicar uma função, mas... Acho que lhe falta ir para seus vôos :)
Mas esse é apenas o meu sentimento.
Variante fixa do Pavlov.
Seus valores são estranhos. Talvez você tenha executado o script depois de fazer o perfil ou depuração sem recompilar o código?
É assim que funciona para mim:
E em sua variante dá um checksum errado. A criação de uma matriz adicional não é nada lucrativa, pelo contrário, retarda o processo e consome recursos adicionais.
Corrigido.
Já o executei algumas vezes, os resultados estão suspensos - o computador está muito ocupado, não estará livre até sábado. É melhor verificar com outra pessoa. Mas o checksum agora corresponde. Para valores desnecessários altamente esparsos (0,1%)
2018.11.13 21:35:16.888 del_2 (GBPUSD.m,H1) opção Pastushak: Checksum = 497057781; elementos - 998984; tempo de execução = 418662 microssegundos
2018.11.13 21:35:16.898 del_2 (GBPUSD.m,H1) variante Korotky: Checksum = 497057781; elementos - 998984; tempo de execução = 10683 microssegundos
2018.11.13 21:35:16.918 del_2 (GBPUSD.m,H1) variante Fedoseev: Checksum = 497057781; elementos - 998984; tempo de execução = 9740 microssegundos
2018.11.13 21:35:16.928 del_2 (GBPUSD.m,H1) variante Semko: Checksum = 497057781; elementos - 998984; tempo de execução = 4691 microssegundos
2018.11.13 21:35:16.944 del_2 (GBPUSD.m,H1) variante Pavlov: Checksum = 497057781; elementos - 998984; tempo de execução = 12512 microssegundos
2018.11.13 21:35:16.957 del_2 (GBPUSD.m,H1) variante Nikitin: Checksum = 497057781; elementos - 998984; tempo de execução = 10720 microssegundos
2018.11.13 21:35:16.978 del_2 (GBPUSD.m,H1) variante Vladimir: Checksum = 497057781; elementos - 998984; tempo de execução = 17197 microssegundos
por um terço
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) variante Pastushak: Checksum = 668222; elementos - 667065; tempo de execução = 65732 microssegundos
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) variante Korotky: Checksum = 668222; elementos - 667065; tempo de execução = 4757 microssegundos
2018.11.13 21:57:17.848 del_2 (GBPUSD.m,H1) variante Fedoseev: Checksum = 668222; elementos - 667065; tempo de execução = 4815 microssegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Semko: Checksum = 668222; elementos - 667065; tempo de execução = 5812 microssegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Pavlov: Checksum = 1001157; elementos - 667065; tempo de execução = 0 microssegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Nikitin: Checksum = 668222; elementos - 667065; tempo de execução = 4749 microssegundos
2018.11.13 21:57:17.868 del_2 (GBPUSD.m,H1) variante Vladimir: Checksum = 668222; elementos - 667065; tempo de execução = 9814 microssegundos
Pavlov se despenhou novamente.
Minha conclusão sobre a aceleração do loop para loops é provavelmente incorreta para os idiomas MQL.
E a criação de uma matriz adicional deve reduzir a duração da própria transação, removendo as supérfluas, mantendo a matriz inalterada até o momento necessário de seu início. Até agora, não se tem falado aqui em preservação de dados.
E o Peter? Será que ele "rasgou" todos? Ninguém colocou seu código no verificador. Pergunto-me como, e até que ponto, ele explodiu todos no quadro.
Mas eu consegui obter a versão de Peter.
É bastante compacto e até funciona corretamente. Kudos a Pyotr.
Mas em termos de velocidade, ele ocupa o segundo lugar desde o final. Ou primeiro lugar a partir do final se você não contar o original, completamente inadequado para a versão de velocidade do proprietário desta linha.
:-) se você não tentar manter a ordem, o tempo é O(1) , o número total de etapas de todos os loops= tamanho da matriz
muito preguiçoso para codificar :-)
1. procurar pelos 3 primeiros da esquerda para a direita.
2. Se for encontrado, então procure um não-terceiro da direita para a esquerda, copie-o para o lugar do 3.
continuar até que 1,2 se tenham cruzado, aparar a matriz pelo número de cópias.
idealmente, é exatamente 1/2 de"separação de bolhas" :-) se, ao invés de copiar, você fizer uma troca, a saída será uma matriz parcialmente ordenada (todos os 3 terços movidos para a direita)
Mais refinamento:
Desculpe, dizem que você é um bom comerciante, mas um programador... ainda pior do que eu.
1. A variável interna inteira não é inicializada, portanto será zero, mas não é garantida. No loop, o deslocamento para trás não acontecerá (a primeira vez) por duas razões ao mesmo tempo - adivinhe qual delas.
2. (mais importante) você primeiro desloca os elementos da matriz, depois aumenta o valor da variável eliminada, e então haverá um loop e o próximo turno acontecerá mais um do que o necessário. Em outras palavras, seu código irá avalanche a matriz original.
Não há elementos extras na matriz:
A matriz tem todos os elementos desnecessários:
Desculpe, dizem que você é um bom comerciante, mas um programador... ainda pior do que eu.
Alexei, você está matando um jovem talento...
este comerciante não consegue começar a vender há 5 anos...e você diz que ele é ainda pior como programador :-)