Não para desenvolvedores de MT! O que substituir INIT_PARAMETERS_INCORRECT por ? - página 2
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Você pode criar seu próprio conjunto de otimização no OnTesterInit e fazer o otimizador pensar que apenas um sinput int NumPass está sendo otimizado.
É difícil dizer que efeito isso terá no resultado final - se o extremo global (local) desejado será encontrado.
Não estou pronto para lhe dar um exemplo, dê uma olhada na Documentação. Está bem escrito ali.
Uma prescrição é que os desenvolvedores tenham o resultado do passe INCORRETO contado como o passe CORRETO mais próximo previamente contado. Isto irá nivelar os furos na superfície de otimização.
Isto é o que os desenvolvedores são contra. Neste caso, outros indivíduos da população "sobreviverão". E a genética começará a funcionar com erros.
Que tal escrever uma função que só produz cadeias válidas por número ?
A primeira coisa que vem à mente é uma tabela de 117649 valores, e deixar que a genética procure os números nessa tabela.
Isto é o que os desenvolvedores estão contra. Neste caso, outros indivíduos da população "sobreviverão". E a genética começará a funcionar mal.
Eu também seria contra tal algoritmo. INCORRETO é um conjunto inaceitável de parâmetros, não pode ser substituído pelo "mais próximo aceitável".
Isto é o que os desenvolvedores estão contra. Neste caso, outros indivíduos da população "sobreviverão". E a genética começará a funcionar em erro.
A genética na prática é quase sempre errada, que é a norma. Sem uma pesquisa adequada nesta área, eu não reclamaria nada sobre a opção proposta.
Que tal uma função que retorna apenas cadeias válidas por número ?
A primeira coisa que me vem à mente é uma tabela de 117649 valores e deixar que a genética procure os números nessa tabela.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Não para desenvolvedores da MT! O que substituir INIT_PARAMETERS_INCORRECT por ?
fxsaber, 2018.07.10 16:22
Você pode criar seu conjunto de otimização no OnTesterInit e fazer o otimizador pensar que apenas um sinput int NumPass está sendo otimizado.
É difícil dizer que efeito isso terá no resultado final - se o extremo global (local) necessário será encontrado.
Depende fortemente do critério de satisfação com o resultado final.
É evidente que se seguirmos a enumeração completa de y = x^2. Em seguida, embaralhar aleatoriamente as filas e criar um novo conjunto baseado no embaralhamento. Então a GA não encontrará o vértice da parábola.
Obviamente, se você traçar uma enumeração completa de y = x^2. Em seguida, embaralhar aleatoriamente as linhas de opimização e criar um novo conjunto com base no embaralhamento. A AG não vai encontrar o vértice da parábola.
Sim, aqui acontece que estes mesmos INCORRETOS "rasgam" demais o espaço da função fitness.
Receio que não haja nada a fazer exceto redesenhar os parâmetros de entrada. Saltar OnTick() como você sugere é apenas uma muleta substituindo o parâmetro INCORRECT, na realidade o algoritmo genético será "morto" de qualquer forma. A genética requer alguns "gradientes" de função de resultado, de modo que podemos usá-los para passar para os máximos. Mas quando você tem mais INCORRETOS do que valores válidos - como você encontra este máximo?
Eu suspeito que, exceto pela força bruta total, você não pode fazer nada, e mesmo a força bruta total encontrará uma solução altamente instável.É preciso um pouco de habilidade para definir os parâmetros de entrada.
Um exemplo muito comum pode ser dado. Ao otimizar o intervalo comercial diário, os horários diários de início e fim são os dois parâmetros de entrada mais comuns.
Mas isto é muito pior para a AG do que, por exemplo, especificar a hora de início e a duração. Aparentemente a mesma coisa, mas não para a AG. No segundo caso, a AG faria melhor. Embora 'melhor' seja uma avaliação bastante subjetiva.
Georgiy Merts:
quando temos mais INCORRETOS do que valores válidos - como você encontra este máximo?
Tomemos a mesma parábola do acima. Suponha que façamos INCORRETO no intervalo de teste 90% do valor de um único parâmetro de entrada. A atual AG irá falhar em tal tarefa. No entanto, se você prosseguir com a opção sugerida, a AG se sairá bem.
Creio que @Andrey Dik pode ajudar nestas questões. Mas mesmo as críticas construtivas à AG regular não terminaram bem para ele.
Pegue a mesma parábola como acima. Suponha que façamos INCORRETO no intervalo de teste 90% do valor do parâmetro de entrada único. A atual AG morreria em tal tarefa. No entanto, se você prosseguir com a variante sugerida, a AG se sairá bem.
Como? Substituindo as incorreções pelas correções mais próximas ??? Receio que tudo depende de como distribuímos essas mesmas incorreções. É bem possível que as correções mais próximas - estejam longe do topo.
Sim, e vai acontecer que ao invés de conjuntos errados de parâmetros - teremos resultados corretos - o que, em minha opinião, também não deve ser feito - o que encontramos então? Teremos um máximo e terá um conjunto incorreto de parâmetros ?