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
Senhores! Se não for muito difícil, por favor, me dê alguns exemplos de uso da biblioteca UGA.
Em que tipo de exemplos (sobre qual tópico) você está interessado?
qualquer um que use UGA, pois os exemplos no artigo não deixam claro como ele funciona. no artigo há um exemplo com ziguezague, podemos ter exemplos com outros indicadores (RSI, CCI....)?
Escreva um script no qual:
1) carregamento na matriz de dados do instrumento necessário para calcular o indicador
2) cálculo do(s) indicador(es) com algum conjunto de parâmetros (esses parâmetros do indicador devem ser otimizados).
3) determinação dos pontos de entrada/saída com base nos sinais do indicador
4) cálculo de um indicador estatístico de interesse (o número de pips ganhos levando em conta o spread, o drawdown, etc.).
Os itens 2), 3), 4) são etapas em uma iteração do GA - cálculo do FF para um indivíduo. Escreva um script desse tipo e eu, por minha vez, tentarei ajudá-lo a "parafusar" o UGA nele.
PS. Duvido que alguém publique um exemplo pronto de negociação usando a UGA - se alguém estiver seriamente envolvido em pesquisas usando essa biblioteca (ou qualquer outra biblioteca semelhante), provavelmente esses desenvolvimentos são privados (o tempo é gasto no estudo de algo que não está diretamente relacionado à negociação).
Ótimo artigo! Obrigado.
1) Pelo que vejo, você queria usar o UGA para otimizar o treinamento de NNs. Foi bem-sucedido?
2) Quais foram os genes do cromossomo nesse caso?
3) Você também desenvolveu sua própria biblioteca de NNs ou encontrou alguma implementação de NN existente que suporte a integração com o MT5 e o GA?
2) Represento os pesos e as tendências dos neurônios de uma rede como genes do cromossomo.
3) Escrevi minha própria realização de uma rede neural.
Andrey, bom dia para você. Estou tentando aprender a usar sua biblioteca pelo "método científico" (no exemplo de UGA_script.mq5 e skin.mqh proposto por você). Se não se importar, dê-me uma introdução adicional sobre como definir corretamente os parâmetros de entrada para resolver o problema de treinamento da rede Kohonen, quando temos um conjunto de pontos no plano, que precisamos atribuir (classificar) a determinados núcleos. Ou seja, temos N pontos com coordenadas (x,y), M kernels (que serão "deslocados" após o treinamento), função FF - "medida de proximidade". Pelo que entendi, no UGA_script.mq5, os parâmetros devem ser definidos da seguinte forma: ChromosomeCount_P= ???? (não sei como definir), GeneCount_P=2*M (2 coordenadas para cada núcleo), Epoch_P= ???? (não sei como definir). Desde já agradeço.
Andrey, bom dia para você. Estou tentando aprender a usar sua biblioteca pelo "método científico" (no exemplo de UGA_script.mq5 e skin.mqh proposto por você). Se não se importar, dê-me uma introdução adicional sobre como definir corretamente os parâmetros de entrada para resolver o problema de treinamento da rede Kohonen, quando temos um conjunto de pontos no plano, que precisamos atribuir (classificar) a determinados núcleos. Ou seja, temos N pontos com coordenadas (x,y), M kernels (que serão "deslocados" após o treinamento), função FF - "medida de proximidade". Pelo que entendi, no UGA_script.mq5, os parâmetros devem ser definidos da seguinte forma:
1) ChromosomeCount_P= ???? (Não entendo como definir isso),
2) GeneCount_P=2*M (2 coordenadas para cada núcleo),
3) Epoch_P= ???? (não entendo como definir).
Desde já, obrigado.
1) Defina 50 para começar, se não for suficiente, aumente o valor (não exagere, até 200-300, caso contrário você corre o risco de não esperar pelo resultado).
2) Sim.
3) Comece com 50-100, se não for suficiente, aumente o valor (não exagere, até 200-1000, caso contrário, você corre o risco de não obter resultados).
Os números são empíricos, você pode alterá-los como quiser, concentrando-se na velocidade de convergência ou na precisão do resultado (esses são, em geral, requisitos mutuamente exclusivos, o meio está em algum lugar no meio - perdoe o trocadilho).
Estou dando uma olhada na biblioteca.
Andrew, não consigo entender por que você deve calcular a função de adequação ANTES de remover as duplicatas da população. Isso é caro.
Eu controlaria a presença de clones no estágio de geração de descendentes. (O que farei, na verdade).
1) Andrew, não consigo entender por que você deve calcular a função de adequação ANTES de remover as duplicatas da população. Isso é caro.
2) Eu controlaria a presença de clones no estágio de geração de descendentes. (O que farei, na verdade.)
1) Não são realizados cálculos repetidos de FF, porque a verificação é feita no banco de dados de cromossomos históricos - se pelo menos uma vez a FF tiver sido realizada antes para esse indivíduo, o valor será retirado do banco de dados.
2) Há uma nuance no assentamento de uma nova colônia na população. Mas vou me calar sobre isso. :) Faça isso da maneira que achar mais correta e me conte os resultados - depois disso, eu lhe contarei sobre a nuance.
PS Em geral, e não em relação a este comentário, é possível seguir muitas estratégias diferentes de pesquisa aleatória de AG, e cada variante merece atenção até certo ponto. Os resultados (taxa de convergência, precisão da pesquisa, ficar preso em extremos locais) dependerão quase que diretamente das estratégias de pesquisa usadas.
1) Não há cálculos repetidos de FFs, porque o banco de dados histórico de cromossomos é verificado - se um FF tiver sido realizado pelo menos uma vez antes para esse indivíduo, o valor será retirado do banco de dados.
2) Há uma nuance com o assentamento de uma nova colônia na população. Mas vou me calar sobre isso. :) Faça o que achar mais correto e me conte sobre os resultados - depois disso, eu lhe contarei sobre a nuance.
1) Bem, bem, bem. Contador de histórias. :) Você cometeu pelo menos um erro.
É assim que os números reais são comparados apenas por... mmmm... matemáticos, sim.
Em tal comparação, uma diferença de quinze dígitos após um ponto flutuante reconhece os genes como diferentes. E sempre haverá uma diferença, porque é o destino. ;)
Pelo menos tem que ser assim:
Não tenho dúvidas de que você testou a remoção de duplicatas separadamente do algoritmo de genes, portanto, você deve ter a ilusão de que esse fragmento funciona.
2) Como tudo é misterioso... Onde o fino é fino, o rasgado é rasgado :)
Tudo é solucionável lá, com ou sem nuances. Ok, vou lhe mostrar como fiz isso.
1) Bem, bem, bem. Contador de histórias. :)
2) Você tem pelo menos um erro aí. É assim que os números reais são comparados apenas por... mmmm... matemáticos, sim. Em tal comparação, uma diferença de quinze dígitos após um ponto flutuante reconhece os genes como diferentes. E sempre haverá uma diferença, porque é o destino. ;)
Pelo menos tem que ser assim:
3) E você tem exatamente a mesma coisa ao remover duplicatas. Não tenho dúvidas de que você testou a remoção de duplicatas separadamente do algoritmo de genes, portanto, você deve ter a ilusão de que esse fragmento funciona.
4) Como tudo é misterioso... Onde o fino é fino, o rasgado é rasgado :) Tudo é solucionável lá, com ou sem nuances. Ok, vou mostrar como fiz isso.
1) Contador de histórias? Hmm, infelizmente não entendi o humor. A verificação do banco de dados ocorre na função CheckHistoryChromosomes(chromos,historyHromosomes ) , que é chamada a partir de GetFitness(historyHromosomes). É por isso que eu disse corretamente - não há execuções repetidas de FF.
2) A reconciliação com o banco de dados ocorre com a verificação por genes. E cada gene é normalizado por SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) quando um novo cromossomo aparece. Portanto, também não há "contos de fadas" aqui.
3) Veja 2)
4) Não há mistério. O código é aberto e transparente. Há de fato uma nuance (não relacionada a problemas de implementação, mas à qualidade da convergência).