Não para desenvolvedores de MT! O que substituir INIT_PARAMETERS_INCORRECT por ? - página 4
![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
Fiz um teste de Expert Advisor para o modo mate do otimizador
Este é o aspecto de um gráfico de otimização para 8 agentes em paralelo em modo de força bruta total sem passagens intercaladas (Rand = falso)
Pode-se ver claramente aqui que os agentes estão executando tarefas em lotes.
A fim de ver a dependência dos parâmetros, vamos mudar para o modo de exibição
Aqui está - uma parábola nativa, no topo da qual (unidade) vamos procurar através da GA.
No modo embaralhamento (Rand = verdadeiro), é claro, a força bruta total encontra nosso vértice
Aqui está a parábola nativa, a parte superior da qual (uma) será procurada através da GA.
Sem a mistura GA eu não encontrei o extremo, mas cheguei perto dele
Foram necessários 179 passes. Deixe-me lembrá-lo, o conjunto completo de tarefas é 10001 passes. Sim, o problema é muito simples, mas ainda assim.
Agora vamos tentar a variante com shuffling (Rand = verdadeiro).
Fechar novamente. Vê-se claramente no registro, que 182 passes foram totalmente calculados, e 970 foram retirados do cache.
Bom resultado, portanto, vamos tentar aumentar o número de pontos no intervalo.
Este é um bom resultado, portanto, vamos tentar aumentar o número de pontos no intervalo.
O número de pontos no intervalo é de um milhão.
Rand = falso
Rand = verdadeiro (de um milhão de pontos, os pares escolhidos aleatoriamente foram trocados 100 milhões de vezes)
O resultado mostra que minha declaração de autoconfiança
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Não para desenvolvedores da MT! O que substituir INIT_PARAMETERS_INCORRECT por ?
fxsaber, 2018.07.10 16:27
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. Então a AG não encontrará o vértice da parábola.
É um tanto falso quanto verdadeiro.
Por outro lado, a escolha da função de aptidão física como parábola foi extremamente míope inicialmente, já que o número de pontos próximos a um está fora dos gráficos.
Há apenas uma pergunta para a AG, por que o extremo exato não foi encontrado sem mistura, já que a função escolhida é ideal para isso?
Por outro lado, a escolha de uma função de aptidão física como parábola foi extremamente míope inicialmente, já que o número de pontos próximos a um está fora dos gráficos.
Presumo que se você escolher uma função com um pico afiado, a AG ainda irá quebrar após a mistura. E tal função é muito mais próxima da TC.
Eu fiz um teste EA para o modo matemático do Optimizer
Infelizmente, meu conhecimento não é suficiente para entender tudo isso ))))
Decidi torná-lo mais simples. Em geral, acrescentei ao meu consultor especializado um registro no arquivo de cadeias legítimas. Encontrei em 1953 possíveis variantes do 117649. A propósito, levei 3 dias para fazer a busca completa no intervalo de 3 dias, apenas preços abertos e 0 negociações.
Tenho um arquivo agora. Ainda não sei como utilizá-lo para otimização. Vou pensar nisso amanhã...
E por que existem menos bem-sucedidos? Será que teremos que fazer isso novamente?Presumo que se você selecionar uma função com um pico afiado, a AG ainda irá quebrar após a mistura. E tal função é muito mais próxima da TC.
Portanto, a genética não é projetada para capturar picos. Seu objetivo é encontrar regiões estáveis, que é o que a TC exige. E os picos são, em geral, ruído.
Quanto às combinações incorretas de parâmetros, elas devem ser eliminadas na fase de formação da população, ou seja, se o intercâmbio de genes ou a mutação resultar em indivíduos incorretos, é necessário repetir sua geração novamente até que se obtenha a correta. Então tudo estará bem.
Se a peneiração peloINIT_PARAMETERS_INCORRECT acontece após a formação da população, reduzindo assim o tamanho dessa população, então, é claro, isso viola o mecanismo normal de seleção genética. Aparentemente a MQ tem essa variante. E neste caso a tarefa do iniciador do tópico é dificilmente resolúvel (no caso geral), dançar com tamborins não ajudará.
Obrigado por sua opinião, mas não há aqui nenhuma discussão sobre a arquitetura do programa. Caso você não tenha notado...
Errado, errado.
Concordo que seu problema é exatamente a arquitetura errada do programa. Acho que você só pode obter o máximo pela força bruta total, e será altamente instável.
O mais provável é que sejam usados excessos totais em cada carrapato. Isto, por si só, leva à lentidão de operação. Se for o caso, devemos considerar o uso de buscas completas somente na barra inicial/aberta do Expert Advisor e depois verificar os dados mais recentes. Tal otimização sempre reduz o consumo de recursos.
A genética não é projetada para capturar picos. Seu objetivo é encontrar regiões estáveis, que é o que a TC exige. E os picos são, em geral, ruído.
Não exatamente assim. Além disso, mesmo as áreas estáveis de espaço de otimização ainda são áreas com quedas e picos, o FF está longe de ser liso.
A genética é uma ferramenta versátil, poderia ser ajustada para otimizar um FF corrompido mas, neste caso, levará mais tempo para otimizar um FF suave.
Imho, a genética padrão deve digerir conjuntos com metade do INIT_PARAMETERS_INCORRECT sem sequer pensar sobre isso. Especialmente porque estas áreas geralmente estão bem agrupadas.
mas em geral a melhor solução é transformar o espaço de parâmetros de entrada.
Em vão, em vão.
Concordo que seu problema está na arquitetura errada do programa. Acho que você só pode obter o máximo pela força bruta total, e será muito instável.
Não se trata de arquitetura. Trata-se do conjunto de funções e da ordem na qual elas são aplicadas. Na verdade, originalmente, estas funções tinham uma única sequência constante. Então decidi que talvez eu devesse experimentar a ordem de chamá-los e não chamar alguns deles. Eu o implementei através do INIT_PARAMETERS_INCORRECT. Você pode ver o progresso. Mas eu tenho um problema com a otimização genética.
Agora vamos ao que interessa. Eu criei um arquivo com correntes legítimas. Como utilizá-lo agora? Suspeito, que devo usar armações onTester... Examinei a documentação, mas alguma coisa não bate certo. Não consigo descobrir como lidar com isso.
Estou pensando em lê-lo em um array e tirar dados dele...