Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 1071

 
Anaxagor:

Parece ser um elogio vindo do fabricante deste mal-entendido.

Bem, use-o enquanto eu sou gentil :-) Não estou arrependido..... E o facto de não teres conseguido entender o artigo, até estou contente por ele. Quanto menos somos, mais somos :-)

 

Olá, Maxim,

Se eu quiser adicionar preços altos e baixos, então eu só preciso mudar SOMENTE a função do sinal de chamada () . Estou correcto?

O código abaixo está correcto? Ou preciso fazer qualquer outra alteração no código EA ou no código da biblioteca?

Também, pode dar um código indicador neste código?

calcSignal vazio ()

{

sig1 = 0;

para (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyClose (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

para (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyHigh (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

para (int i = 0; i <ArraySize (ag1.agent); i ++)

{

CopyLow (_Symbol, 0.0, 100, ag1.agent [i] .inpVector);

normalizeArrays (ag1.agent [i] .inpVector);

}

sig1 = ag1.getTradeSignal ();

}

 
Mmmm... programação triste
 
Maxim Dmitrievsky:
mde ... programação triste

Você quer dizer que o código acima não está correto ou está se referindo à implementação do código GMDH? O código GMGH foi apenas uma implementação rudimentar que eu encontrei rapidamente. Mas não posso melhorá-lo por agora. Acho que pode haver melhores maneiras de codificá-lo, e vou tentar também.

No seu código fonte atual, há muitos agentes ou variáveis com nomes similares e vários operadores de pontos como " ag1.agent [i] .inpVector " o que é uma confusão para mim até que eu percorra o código inteiro...

 
FxTrader562:

Você quer dizer que o código acima não está correto ou está se referindo à implementação do código GMDH? O código GMGH foi apenas uma implementação difícil que encontrei rapidamente...mas acho que pode haver melhores formas de o fazer...mas por agora não o faço.

No seu código fonte atual, há muitos agentes ou variáveis com nomes similares e vários operadores de pontos como " ag1.agent [i] .inpVector " o que é uma confusão para mim até que eu percorra o código inteiro...

Já o expliquei antes. Você tem 100 preditores, então você precisa copiar nesta matriz 25 preços fechados diferentes, 25 preços abertos diferentes, 25 altos, 25 baixos. Total 100

ou fazer 4 preditores arrayy, e copiar 1 fechar, 1 abrir,..... ou quaisquer outros valores de indicadores diferentes

Ou esperar um artigo, porque a comunicação no fórum leva muito tempo (para mim)

Sobre gdmh - há muitas implementações diferentes, sem problemas com isso. Mas para a minha tarefa preciso de pesquisa adicional

 
Maxim Dmitrievsky:

Já o expliquei antes. Você tem 100 preditores, então você precisa copiar nesta matriz 25 preços fechados diferentes, 25 preços abertos diferentes, 25 altos, 25 baixos. Total 100

ou fazer 4 preditores arrayy, e copiar 1 fechar, 1 abrir,..... ou quaisquer outros valores de indicadores diferentes

Ou esperar um artigo, porque a comunicação no fórum leva muito tempo (para mim)

Sobre gdmh - há muitas implementações diferentes, sem problemas com isso. Mas para a minha tarefa preciso de pesquisa adicional

Sim, eu compreendo.

Além disso, eu tenho o seu código fonte e, portanto, levará algum tempo para que eu o entenda e mude, já que não há muito comentário nele. Além disso, não sou um programador de nível especializado. Então eu estava apenas tentando acelerar o processo com a sua ajuda :))

De qualquer forma, vou esperar pelo seu artigo com explicações detalhadas.

Sim, em relação ao GMDH, como mencionei antes, existem múltiplas abordagens e múltiplas fórmulas e, portanto, você precisa escolher qual delas é aplicável para a implementação do RDF. Eu simplesmente traduzi ou converti a fórmula geral do GMDH do link da wikipedia para o código MQL5 que vocês me forneceram anteriormente.

Além disso, dei explicações suficientes dentro do código para torná-lo compreensível. Já antes de escrever o código MQL5, tentei pesquisar vários códigos python, mas nada satisfez a minha necessidade. É por isso que eu escrevi a maneira mais simples de GMDH usando uma função e mudar a declaração do caso.

 
FxTrader562:

Sim, eu compreendo.

Além disso, eu tenho o seu código fonte e, portanto, levará algum tempo para que eu o entenda e mude, já que não há muito comentário nele. Além disso, não sou um programador de nível especializado. Então eu estava apenas tentando acelerar o processo com a sua ajuda :))

De qualquer forma, vou esperar pelo seu artigo com explicações detalhadas.

Sim, em relação ao GMDH, como mencionei antes, existem múltiplas abordagens e múltiplas fórmulas e, portanto, você precisa escolher qual delas é aplicável para a implementação do RDF. Eu simplesmente traduzi ou converti a fórmula geral do GMDH do link da wikipedia para o código MQL5 que vocês me forneceram anteriormente.

Além disso, dei explicações suficientes dentro do código para torná-lo compreensível. Já antes de escrever o código MQL5, tentei pesquisar vários códigos python, mas nada satisfez a minha necessidade. É por isso que eu escrevi a maneira mais simples de GMDH usando uma função e mudar a declaração do caso.

Há um caso linear descrito. Por exemplo, estamos à procura dos melhores membros para a linha 1-st, 2nd, etc. E depois adicione os melhores membros a uma (nova) variável da fórmula. No caso do RDF não o podemos fazer, porque é um modelo não linear, por isso devemos apenas adicionar todas as linhas como variáveis independentes aos inputs, em cada volta de selecção

 
Maxim Dmitrievsky:

Há um caso linear descrito. Por exemplo, estamos à procura dos melhores membros para a linha 1-st, 2nd, etc. E depois adicione os melhores membros a uma (nova) variável da fórmula. No caso do RDF não o podemos fazer, porque é um modelo não linear, por isso devemos apenas adicionar todas as linhas como variáveis independentes aos inputs, em cada volta de selecção

Pode dar-me um código de amostra exactamente onde está a tentar implementar, para que eu o possa ajudar melhor?

Estás a falar de pesos como w1,w2, w3....? Essas são as coisas que devem ser calculadas e armazenadas dentro do RDF durante o treinamento quando alimentamos x1.w1,x2.w2,x3.w3.... como entradas individuais.

Note que na realidade, ao considerar funções, não existem funções lineares e não-lineares, porque você pode sempre quebrar uma função não-linear em infinitas funções lineares. É por isso que estamos usando pequenos pedaços de funções lineares como entrada e podemos expandi-lo para qualquer número, se necessário. Mas não posso dizer muito sobre a parte da codificação, por enquanto.

Por favor, me forneça o código do RDF onde você está preso para que eu possa entender melhor.

Ou referindo-se ao meu código você pode explicar o que mais você está procurando. Porque no meu entendimento eu converti a fórmula do GMDH em código. Portanto, se for necessário, então podemos trazer aleatoriedade ou simplesmente expandir os componentes da função base para qualquer número e escolher aleatoriamente.

 
FxTrader562:

Pode dar-me um código de amostra exactamente onde está a tentar implementar, para que eu o possa ajudar melhor?

Estás a falar de pesos como w1,w2, w3....? Essas são as coisas que devem ser calculadas e armazenadas dentro do RDF durante o treinamento quando alimentamos x1.w1,x2.w2,x3.w3.... como entradas individuais.

Note que na realidade, ao considerar funções, não existem funções lineares e não-lineares, porque você pode sempre quebrar uma função não-linear em infinitas funções lineares. É por isso que estamos usando pequenos pedaços de funções lineares como entrada e podemos expandi-lo para qualquer número, se necessário. Mas não posso dizer muito sobre a parte da codificação, por enquanto.

Por favor, me forneça o código do RDF onde você está preso para que eu possa entender melhor.

Ou referindo-se ao meu código você pode explicar o que mais você está procurando. Porque no meu entendimento eu converti a fórmula do GMDH em código. Portanto, se for necessário, então podemos trazer aleatoriedade ou simplesmente expandir os componentes da função base para qualquer número e escolher aleatoriamente.

Para encontrar coeficientes lineares devemos usar a regressão linear, mas também podemos fazê-lo diretamente com RF. Estou apenas a ler um livro interessante sobre isso.

Este livro desenvolve diferentes polinómios na forma de redes estruturadas em árvores, incluindo polinómios de redes algébricas, polinómios de redes de kernel, polinómios de redes ortogonais, polinómios de redes trigonométricas, polinómios de redes racionais e polinómios de redes dinâmicas.
 
Maxim Dmitrievsky:

Para encontrar coeficientes lineares devemos usar a regressão linear, mas também podemos fazê-lo diretamente com RF. Estou apenas a ler um livro interessante sobre isso.

Ok, se você quer uma implementação exata do GMDH e precisamos expandir meu código com um valor maior de m, então eu posso fazer isso. Mas o que eu quero que você faça é primeiro implementá-lo com o valor m de 3 e testá-lo no prazo M1, porque os preços das velas fecham no prazo M1 são muito pequenos e, portanto, parti-lo em 3 partes é suficiente para atingir nosso objetivo.

Assim, se você pode implementar o GMDH e ele funciona de alguma forma no tempo M1, então para prazos maiores podemos expandir o loop para valores maiores de m como 10 ou 15, etc.

A propósito, na sua implementação atual de código você usou o truque do kernel quando usou o seguinte código?

#define _kernel(ker,degree) (cos(MathPow(ker,degree))

Eu pesquisei completamente, mas não consegui descobrir qual função do kernel você usou no seu código porque eu queria testar kernels diferentes antes de implementar meu algo:

http://crsouza.com/2010/03/17/kernel-functions-for-machine-learning-applications/

Você pode me fornecer alguma referência sobre qual função do kernel é esta ou esta é apenas a sua fórmula?

Além disso, implementei com sucesso o algoritmo de simulação de velas para o seu código atual. Mas pode funcionar apenas após um período de uma semana de simulações. Então só queria confirmar algumas coisas antes de começar as simulações.

1. Há um limite de quantos modelos eu uso. Posso usar 1 milhão de modelos?

2. Há um limite de quantos agentes eu uso. Posso usar 1000 agentes?

3.Se os dados treinados forem muito grandes, então eles irão diminuir a velocidade na tomada de decisões de negociação? Se o arquivo ".rl" for muito grande, então aproximadamente quanto tempo de execução da operação podemos esperar? Fez algum cálculo sobre isso em termos de número de iterações por segundo ou para loop, etc.?

4.Basicamente, estou usando seus modelos e agentes para criar velas aleatórias durante o treinamento que serão armazenadas em arquivos ".rl" para negociação LIVE. Os ficheiros ".rl" nesta versão são semelhantes aos ficheiros "Mtrees" da sua versão anterior. Estou correcto?

Estou planejando executar uma simulação de cerca de 10 a 100 milhões de velas no total, o que equivale a cerca de 280 a 2800 anos de otimização. Mas antes de executar o treinamento eu queria verificar várias coisas sobre o código e a rapidez de execução, etc.

Quando você tiver tempo livre, por favor, passe pelas minhas perguntas acima e me dê algumas respostas que podem me ajudar a calcular mais....

Razão: