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

 
sibirqk:

Se não é um segredo, em que princípios é feita a série artificial? É apenas uma onda sinusoidal misturada com o ruído, ou é mais complicado do que isso?

Como há várias perguntas ao meu posto, devo responder a todas elas de uma só vez.

Este é o fórum para negociação, sistemas automatizados de negociação e teste de estratégias de negociação.

Como usar a aprendizagem da máquina no comércio: teoria e prática (comércio e não só)

Yuriy Asaulenko, 2019.02.17 21:01

Eu tentei usar o Python para treinar uma rede neural. O pacote é scikit-learn, NS é sklearn.neural_network.MLPRegressor. Mais de 100 neurónios, camadas ocultas -7, entradas -19, saída 1. A tarefa é prever um processo aleatório.

A tarefa é artificial, feita em gerador de ruído e para que este ruído possa teoricamente ser previsto. Tentei por alguns pontos à frente.

Resultado da comparação da previsão com o real para 5 mil pontos escolhidos aleatoriamente:

X é a previsão, Y é o valor real. Todos eles estão muito perto de uma linha reta de 45 graus. Isto é, a previsão é quase perfeita (em amostra artificial).

A aprendizagem é muito rápida - 24 épocas. A seu tempo, cerca de 10 segundos.

Devo dizer que fiquei muito surpreendido. Eu tentei muito esconder os dados. Estou surpreendido por ela o ter encontrado. Em geral, perto do misticismo).

Conclusões: A NS sklearn.neural_network.MLPRegressor é bastante utilizável. Eu ainda não tentei o classificador.

Já tentei algo com o mercado, sem resultados até agora. Não é procurar, diz que não há lá nada, embora a tarefa seja da mesma classe de uma que foi gerada artificialmente.

Devo dizer desde já que não inventei a máquina de movimento perpétuo e não fiz nenhum truque, por isso, se fiz algum truque, fi-lo apenas devido à minha ignorância.

No início, um pouco de teoria. Processos aleatórios podem ser previstos, incluindo até atirar uma moeda ao ar. Tudo depende da formulação do problema de predição. Por exemplo, a previsão "Vai chover amanhã" é cerca de 90% correcta. No entanto, você não diz se vai chover de manhã cedo, à tarde ou ao final da noite ou se pode chover durante todo o dia, porque esta previsão não será confiável.

É possível prever séries cronológicas - é possível sob certas condições. Uma dessas condições possíveis é a natureza limitada do espectro da PA - quanto mais largo o espectro, menor o intervalo de previsão, quanto mais estreito for, mais longo o intervalo de previsão.

A série temporal do mercado tem um espectro infinito, por isso não se pode realmente prever o preço com 5 minutos ou uma hora de antecedência. Ainda não me encarreguei de tal tarefa.

Agora para preparar os dados para o treino.

1. obtemos uma série do gerador de números aleatórios (RNG) e a transformamos em uma forma próxima à do mercado. Tal série tem um espectro ilimitado e não é realista prever os seus valores.

2. passamos a série através do filtro de baixa passagem (LPF). Recebemos uma série aleatória com um espectro limitado e possibilidade de previsão para n-counts à frente, no entanto, esta série não é muito semelhante à série do mercado.

3. Geramos séries com M=0 pelo RNG e adicionamo-las à série depois do LPF, depois de realizarmos um jogo de pandeiro. Obtemos novamente uma série que está muito próxima da do mercado. Vamos usar esta série para treinar.

4. Como a função alvo, tomamos a série na etapa 2 passada através do LPF e deslocada por N amostras para trás que dá a previsão por N amostras para a frente.

Em seguida, alimentar os NS com entradas e séries-alvo, treinar e verificar os resultados do treinamento. Depois repita os passos 1-4, alimente as séries no passo 3 para o NS e compare a saída do NS com uma série deslocada por N amostras no passo 4.

É isso mesmo. Não admira. Tudo isto pode ser feito sem a NS. O que me surpreendeu foi que os NS o fizeram em segundos, e em apenas 24 ciclos de aprendizagem. E isso é com muito barulho, nem se consegue ver a componente de baixa frequência ali. Incrível.

Porque não funcionou com o mercado VR. Qualquer LPF tem um atraso significativo e sua curva é deslocada para a direita em relação ao VR. Ou seja, temos um sinal LF já atrasado em todos os pontos da série, e assim o intervalo de previsão é maior do que o permitido, e a previsão torna-se irrealista. Não podemos sequer construir um verdadeiro alvo para o treino.

 

Yuriy Asaulenko:

O conceito de espectro só é definido para um processo estacionário. O preço não é, quanto mais não seja porque a dispersão aumenta com o tempo.

 
Aleksey Nikolayev:

O conceito de espectro só é definido para um processo estacionário. O preço não é, nem que seja apenas devido ao aumento da dispersão ao longo do tempo.

Isto é do ciclo "um anciãozinho numa cabana e um anciãozinho em Kiev".
Está fora de questão.
 
Yuriy Asaulenko:
Isto é do ciclo, há um ancião num jardim, e um tio em Kiev.
Está fora de questão.

OK, não te vou impedir de vender tambores Stradivarius.

 
Aleksey Nikolayev:

OK, não te vou impedir de vender tambores Stradivarius.

Bem, está bem, vou ter pena. )) Quase todo sinal de rádio é um processo não estacionário, mas tem um espectro. A noção de espectro não tem nada a ver com a estacionaridade.
Você deve ir para o ramo de T&P, para os fantasistas).
 

Obtendo preços em Python via socket quase instantaneamente (50k registos) em 10 linhas de código

e no lado do mt5 20

Não preciso de libras improvisadas para o r. Por que é tão difícil fazê-lo você mesmo? Obrigado pelas tomadas nativas em mt5.

Você pode adicionar quaisquer íons muito facilmente depois, seja sinal para abrir negociações ou algo mais.

 
Maxim Dmitrievsky:

Obtendo preços em Python via socket quase instantaneamente (50k registos) em 10 linhas de código

e no lado do mt5 20

Não preciso de libras improvisadas para o r. Por que é tão difícil fazê-lo você mesmo? Obrigado pelo facto de as tomadas nativas funcionarem em mt5.

Podes crer.)

Vejo que eles mudaram para Spyder. Eles deviam, é melhor do que mexer no seu bloco de notas.

Só para prevenir. A grade em um gráfico é feita por plt.grid().

 
Yuriy Asaulenko:
Bem, está bem, eu tenho pena. )) Quase qualquer sinal de rádio é um processo não estacionário, no entanto, ele tem um espectro.
Você deve ir para o ramo Tip, para os fantasistas.))

Os radioamadores confundem um processo aleatório com a sua implementação.

 
Aleksey Nikolayev:

Os radioamadores confundem um processo aleatório com a sua implementação.

Eu não vou discutir com os trolls.

 
Yuriy Asaulenko:

Sim, certo.)

Vejo que mudaste para Spyder. Isso mesmo, é melhor do que brincar no U-notepad.

ZS A grade na trama é feita por plt.grid().

tive de mexer com o spyder para o pôr em píton nu, sem anaconda.

Eu já tive vscode antes, mas ele drena a vida da bateria, então eu tenho que alcançar a tomada.