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 resumo:
Rashid, é improvável que alguém se atrevesse a fazer uma busca directa. Um optimizador genético 2^64 verificará facilmente, mas isso não significa que tenhamos de expor regiões de pesquisa ilimitadas. Afinal de contas, temos de gerar genes para estas regiões e depois manipulá-los.
OK, vamos fazer as contas. Suponha que um passe no testador demora 1 segundo, então o número de passes é 2^64-1 dividido por 60 e obtemos o tempo de optimização em minutos: 18 446 744 073 709 551 615/60.
Em seguida, dividir este tempo por 8 (8 núcleos no computador) e obter o tempo de optimização com este número de passes num computador de 8 núcleos. Quanto é que será preciso em horas ou dias?
Não conte, não estou a falar de uma enumeração simples. Deixe o próprio algoritmo genético determinar quantos ele necessita.
Se o compararmos com o cérebro humano, segundo os cientistas, o cérebro contém cerca de 10^10 neurónios e cada um tem cerca de 10^4 conexões sinápticas.
É por isto que todos nos esforçamos, criando programas cada vez mais avançados.
Para que foi feita a computação em nuvem? Permite aos utilizadores ir para além de um único computador, pelo que muito obrigado.
Para resumir uma longa história:
Rashid, é improvável que alguém se atrevesse a fazer um simples exagero. Um optimizador genético 2^64 verificará facilmente, mas isso não significa que tenha de expor domínios de pesquisa ilimitados. Afinal de contas, temos de gerar genes para estas regiões e depois manipulá-los.
O que é 2 em 64 é um problema rebuscado.
Num algoritmo genético, não tem de manter os piores resultados?
O que o impede de distorcer ao máximo todas as variáveis?
Não consigo perceber qual é a ligação entre os genes e 2^64?
Ainda assim, pode vir a ser útil procurar através de muitas variáveis (por exemplo, Rede Neural) e esta limitação não é boa.
Portanto, a esperança de liberdade das restrições))
O testador de estratégias parece utilizar a AG com codificação binária dos cromossomas.
Aqui está uma citação:
"No entanto, a representação binária dos cromossomas implica certas dificuldades na pesquisa em espaços contínuos de grande dimensão, e quando é necessária uma elevada precisão, é utilizada uma técnica especial baseada no facto de todo o intervalo de valores admissíveis de uma característica [ai,bi] ser dividido em secções com a precisão necessária. A precisão p requerida é definida pela expressão:
onde N é o número de bits para codificar uma cadeia de bits.
Esta fórmula mostra que p depende fortemente de N, ou seja, a precisão de representação é determinada pelo número de bits utilizados para codificar um cromossoma. Portanto, à medida que N aumenta, o espaço de busca expande-se e torna-se enorme. Um exemplo de livro bem conhecido: deixar 100 variáveis variar no intervalo [-500; 500] requer encontrar um extremo até seis casas decimais. Neste caso, utilizando a AG com codificação binária, o comprimento da corda será de 3000 elementos e o espaço de pesquisa será de cerca de101000 cromossomas".
Portanto, mesmo uma rede neural relativamente pequena no optimizador padrão, quando limitada a 64 parâmetros a serem optimizados, não pode ser treinada. Há mais uma desvantagem - é muito demorado preencher manualmente parâmetros de variáveis optimizáveis, se houver muitas delas. É por isso que já sugeri que se especificassem arrays com parâmetros optimizáveis programmaticamente.
Mas há boas notícias. Tudo o que falta no testador e no terminal pode ser implementado utilizando os meios nativos MQL5. Mais tarde publicarei os resultados de alguns testes de optimização utilizando o testador e o código do programa.
No entanto, nunca esperei pelos resultados do testador na tarefa de teste (quer dizer, esperar é preguiçoso).
Mas qualquer pessoa pode fazer os testes sozinha. Para tal, pode tomar o primeiro exemplo do artigo. Não se esqueça de definir o modo de optimização - procurar os máximos (para poder comparar com o optimizador padrão onde apenas os máximos estão disponíveis).
Vamos escrever um simples Expert Advisor que seja ainda mais simples do que um nabo verde e não faça nada a não ser calcular a função de teste do utilizador:
As definições na janela de teste são as seguintes:
No separador "Parâmetros de entrada", faça o seguinte:
E vai.
As conclusões aproximadas são as seguintes:
1) O optimizador no testador é 10-100 vezes mais lento (funcionou para mim, embora a optimização no testador tenha sido realizada em dois núcleos de processador, enquanto que a optimização do software foi realizada num núcleo). Muito provavelmente, uma diferença tão monstruosa deve-se ao facto de o testador ter de escrever registos, mostrar informação no ecrã, etc., para além de cálculos directos de FF, ou seja, tem "travagem forçada" em oposição à optimização do software.
2) É impossível utilizar mais de 64 parâmetros optimizáveis no testador (e no Wizard para a criação de Expert Advisors é limitado a 60 parâmetros), por isso é impossível treinar redes neurais de qualquer dimensão significativa.
É ou para escrever substitutos de teste por si mesmo (MQL5 permite-o, é uma excelente "cana de pesca" mas não um "peixe"), ou esperar que o algoritmo genético binário do testador seja substituído por um algoritmo contínuo e a limitação do número de parâmetros optimizados será removida. A segunda não é construtiva, pelo que a primeira permanece. :)
Conclusão global: Aprender MQL5.
PS Uma boa solução seria permitir desactivar a saída de informação de optimização (registos, gráfico de optimização) e, melhor ainda, personalizar os detalhes da informação apresentada, a fim de aumentar o desempenho do testador.
joo, há mais, para além de escrever um testador e optimizador para cálculos não tão pequenos, é necessário fazer um distribuidor de cálculos, o que envolveria todos os núcleos do processador e possivelmente ligar agentes remotos (se fizer cálculos colectivos). Em primeiro lugar não é comparável ao testador padrão - tudo será muito mais lento, e em segundo lugar para escrever tudo isto é preciso gastar muito tempo e centenas de kilobytes de código, e qual é a razão?
joo, há mais a dizer; além de escrever um testador e optimizador para cálculos tão pequenos, também é necessário fazer um distribuidor para cálculos que envolvam todos os núcleos do processador e possivelmente ligar agentes remotos (se quiser realizar cálculos colectivos). Em primeiro lugar, a velocidade não se pode comparar com a do testador padrão - tudo irá correr muito mais devagar, e em segundo lugar, para escrever tudo isto é preciso gastar muito tempo e centenas de kilobytes de código, e tudo por causa de quê, exactamente?
Sobre o Urain vermelho, respondeu.
Quanto ao verde, é claro que se trata de dinheiro. Tempo é dinheiro. Sou normalmente um iniciante lento, mas um cavaleiro rápido (demorei mais de um ano a desenvolver e depurar a AG), e agora continuo a receber mensagens de agradecimento na minha caixa de entrada depois de o artigo ser publicado. :)
Não estou a criticar o provador interno. Estou apenas a focar a atenção dos criadores naquilo a que deve ser dada especial atenção. De facto, por muito bom que seja o optimizador (o optimizador, não o testador), se for terrivelmente lento, todas as suas vantagens desvanecem-se.
Ainda agora me ocorreu um pensamento ousado. Embora, de facto, porque não o faria?
Terei a honra de utilizar a minha UGA no optimizador MetaTrader 5 da MetaQuotes Software Corp. Será absolutamente gratuito, embora não recuse os bónus, claro.
A UGA é simples e eficiente. Muito flexível em configurações. No testador pode introduzir três modelos de definições - "Rough", "Medium" e "Fine", e também exibir separadamente as definições com a mensagem "Se não sabe exactamente para que precisa, não altere nada nestas definições". Depois será possível realizar uma optimização com o grau desejado de pesquisa de detalhes - desde uma aproximação muito rápida até à pesquisa final exacta de definições óptimas de TC. Neste momento, o optimizador incorporado não se permite ser configurado de forma alguma.