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
...
É mesmo difícil imaginar um Conselheiro Especialista deste tipo que lhe falta o poder de um núcleo na vida real. Por exemplo, se no testador o Expert Advisor fizer uma passagem de um símbolo por dia na história de um ano (é demasiado! Talvez devêssemos reescrever o código!), então na vida real, ele irá carregar o CPU em média 1/250 de potência = 0,4%.
Para uma EA em dez símbolos - obtém-se uma carga média de 4%. Não há muito sentido em carregar os outros núcleos.
Quanto à ideia de Konstantin(Lizar), penso que é boa. Mas para este tipo de solução precisamos de separar os eventos que vêm directamente do gráfico e os que são gerados por medida. Para eventos personalizados, podemos ter duas filas de eventos e dois manipuladores de eventos, algo como OnUserEvents.
E uma adição interessante aos eventos personalizados seria a capacidade de especificar explicitamente a sua prioridade (digamos de 0 a 9), o que poderia permitir ao utilizador controlar a antecipação e o tratamento de certos eventos. Por exemplo, tal característica permitiria executar eventos com um valor inferior, e retirá-los da fila com um valor superior (se a fila estiver cheia de eventos mais importantes, não seriam enfileirados novos eventos).
Nunca fiz nenhum desenvolvimento de software, por isso não consigo falar a linguagem técnica dos programadores de software. Descreverei o que eu gostaria de obter do meu computador de 4 núcleos e do MT5. Em geral é o que parece:
O manuseamento de várias ferramentas é agora possível e os criadores criaram uma solução perfeitamente funcional.
2. Sobre o trabalho do testador e um amontoado de núcleos. É um caso especial e não é correcto comparar este mecanismo com o comércio real. A essência da solução do problema do testador é que tendo várias variantes de Expert Advisor (ou melhor, um Expert Advisor + muitos conjuntos únicos de parâmetros) é razoável distribuir os cálculos entre todos os núcleos/agentes disponíveis. Assim, obtemos assincronia para todo o conjunto de tarefas, mas do ponto de vista de um agente individual tudo é sincronizado.
3. Quando se trata de multithreading, não estamos a falar do processamento de múltiplas ferramentas ao mesmo tempo, mas do processamento de múltiplos eventos ao mesmo tempo (e dentro de uma EA individual específica). Isso não estava presente em nenhuma versão do terminal.
Os programadores também são compreensíveis: demasiadas despesas gerais, demasiada mistura "motley" de utilizadores, demasiados problemas com a sincronização de dados a que um Expert Advisor "multithreaded" terá acesso, etc.
Por outro lado, a ideia com os acontecimentos não é levada à sua conclusão lógica. Ok, é dispendioso e problemático implementar "multithreading" mas é possível paralisar ao máximo processos e fluxos de informação dentro do próprio terminal + criar um conjunto de manipuladores suficiente para resolver o número máximo de tarefas (e com um conjunto normal de parâmetros).
O meu consultor especializado em M5, no período 04.01.2010 - 01.09.2011 em 12 moedas faz um único passe em 1436 seg (24 minutos) e ao mesmo tempo faz 5687 comércios. Apenas um núcleo está carregado, os outros três estão ociosos. Ou seja, em cada passagem perco 3/4 do tempo porque a plataforma não utiliza energia informática. Esta é uma desvantagem significativa da plataforma quando se depura uma estratégia. Os núcleos são plenamente utilizados apenas durante a optimização. Mas a optimização é muito mais rara do que as corridas simples. E muito tempo é desperdiçado em corridas simples.
A abordagem "perder 3/4 do tempo" indica que se acredita: a utilização de multithreading é apenas uma oportunidade perdida e uma clara falha dos programadores.
Infelizmente, a multi-tarefa em tarefas sequenciais (e um único passe de testador é uma tarefa sequencial) não é dada gratuitamente. Na realidade, a multi-tarefa tem enormes (por vezes múltiplas) perdas para a sincronização do processo. De facto, todos os acessos aos recursos partilhados têm de estar ligados a sincronizadores.
Deslocámos deliberadamente o testador do terminal para um processo separado apenas para permitir que trabalhe num único fio sem quaisquer bloqueios durante 99% do tempo de teste. O resultado foi um ganho significativo de velocidade.
A sugestão "vamos enfiar multitarefas em cada EA" é de um completo mal-entendido do custo (abrandamento total) da multitarefa neste caso e das consequências (abrandamento + rebentar com o telhado a 99% dos promotores não profissionais).
Resolvemos eficazmente os problemas de aplicação de multitarefas no terminal, testador e permitimos escalas quase ilimitadas de potência nos modos de agente remoto e MQL5 Cloud Network.
Se existem 12 cartas diferentes com símbolos diferentes, isso significa que cada símbolo de cada carta está obviamente a correr no seu próprio fio sem afectar os outros.
Se os gráficos começam a abrandar, a razão é banal - um dos indicadores é muito pouco económico. Neste caso, nenhuma quantidade de multitarefas ajudará, porque a raiz é o trabalho do programador, que escreve indicadores na cabeça, não se preocupando com a eficiência.
Não consigo obter o gráfico inverso, algo está errado, a nova barra apresenta falhas nesta variante
o indicador original com o qual tenho andado a mexer está anexado
Por favor, informe qual é o problema.
Estou a escrever uma moeda múltipla
Eu recebo o cabo indicador de MA
Estou a fazer o mesmo para as restantes 10 moedas permitidas no Campeonato, mas recebo erro 4801 durante os testes, todas as 12 moedas estão na história (penso eu)
Estou a testar no gráfico EURUSD
o Consultor Especialista está a testar o GBPUSD (eu configurei-o nas definições, de modo a optimizá-lo)
Por favor, informe qual é o problema.
Estou a escrever uma moeda múltipla
Eu recebo o cabo indicador de MA
Estou a fazer o mesmo para as restantes 10 moedas permitidas no Campeonato, mas recebo erro 4801 durante os testes, todas as 12 moedas estão na história (penso eu)
Estou a testar no gráfico EURUSD
o Consultor Especialista está a testar o GBPUSD (eu configurei-o nas definições, de modo a optimizá-lo)
papaklass:
Agora responde-me a uma pergunta tão simples ....
Responderei de forma ainda mais simples, mesmo que não educadamente.
Infelizmente, está completamente fora do tópico e faz declarações que mostram apenas ideias superficiais sobre os processos.
Receio que a maioria dos nossos argumentos técnicos não será compreendida, nem mesmo o problema básico da sincronização e a perda na sua prestação será compreendido.
Por conseguinte, não há necessidade de fazer pedidos "diga-nos os seus argumentos e nós especularemos", a situação é perfeitamente clara
Não consigo encontrar respostas a estas perguntas para um novato:
1) Ao adicionar outro elemento a uma matriz dinâmica, é necessário expandi-la usando o ArrayResize?
2) Existe uma função na MQL5 para eliminar um elemento (um no meio de uma matriz, por exemplo) de uma matriz dinâmica i? Se não, qual é a melhor maneira de o fazer?
Como novato, não consigo encontrar respostas a estas perguntas:
1) Quando adiciona outro elemento a uma matriz dinâmica, tem de o expandir com o ArrayResize?