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

 
Maxim Dmitrievsky:

É isso que é tão irritante, as integrações eternas que levam mais tempo do que o desenvolvimento da TC. Eu também gostaria de fazer uma pitão, mas ainda não tenho tempo.

Infelizmente, não há solução para este problema:

1. ou escreva numa língua(plataforma) TC de terceiros, mas você tem problemas:

a) sem dados históricos

b) nenhum testador

c) nenhum teste em uma conta demo

-) pode haver problemas com o suporte da plataforma, como exemplo - pesquisei no Google o Alglib, há muito pouca informação sobre ele, tudo apenas no site do desenvolvedor, não há suporte

Todas essas coisas que você precisa corrigir com .dll, integrações e outras muletas.

2. ou você escreve tudo em MQL e não terá nenhum problema a.b.c.. Você vai procurar por soluções prontas e aparelhos matemáticos em código base ou escrever toda a lógica (do aparelho matemático) a partir do zero com a ajuda de capacidades MQL.

A variante universal é a .dll, que pode ser usada em código MQL. Se você escrever o código por si mesmo, esta é a solução mais prática, você não pode usar .dll para o Mercado.

Muitos sistemas de desenvolvimento e análise permitem-lhe criar um .dll como exemplo - Matlab


ZS: MQL me convém em 90%, a única coisa que tenho que fazer é visualizar os resultados quase do zero. Em Matlab, a saída está sempre à mão, uma linha de código e você tem um gráfico pronto, todas as variáveis são visíveis, você pode mudar as variáveis... em uma palavra, Matlab é um ambiente de desenvolvimento pronto para uma matriz.

 
Igor Makanu:

Quero dizer pesquisa em termos de MO, é um processo bastante específico onde o trabalho principal é com matrizes, é um pesadelo trabalhar com elas em línguas de baixo nível. O resto pode, de alguma forma, ser sobrevivido :)

 
Maxim Dmitrievsky:

todas as bibliotecas MoD se desenvolveram, uma vez que esta apenas libera os profissionais

não é confortável e longo com MO em idiomas de baixo nível, especialmente pesquisa

Eu só não tenho a questão da escolha. E em geral, tudo isso é aplicado - minha ênfase é em preditores e um pouco de targeting, e mais tempo é gasto apenas desenvolvendo novos preditores do papel para o código. Então a primeira pergunta que eu faço é se foi uma boa idéia acrescentar novos preditores ou não! E com uma resposta mais clara a esta pergunta, posso eventualmente procurar outras implementações/abordagens de integração no código final, mas agora estou longe disso.

 
Igor Makanu:

Infelizmente, não há solução para este problema:

1. ou escreva numa língua(plataforma) TC de terceiros, mas você tem problemas:

a) sem dados históricos

b) nenhum testador

c) nenhum teste em uma conta demo

O que vale numa língua de terceiros:

1. Carregue o histórico para CSV,

2. Faça um testador (isto é apenas e não mais do que um loop),

3. Em uma conta demo, você pode testar, digamos, através da troca de arquivos com o terminal. Se você fizer isso via RAM-Disk, o desempenho é como trocar através da memória - Gigabytes por segundo.

Se o sistema for bem sucedido, o que não será a primeira vez, poupará muito tempo para a modelação. E mais tarde, como enfiá-lo no terminal é uma questão controlável.

 
Maxim Dmitrievsky:

Quero dizer pesquisa em termos de MO, é um processo bastante específico onde o trabalho principal é com matrizes, é um pesadelo trabalhar com elas em línguas de baixo nível. O resto ainda é de alguma forma sobrevivível :)

Eu entendo - eu mesmo estou na mesma situação, é por isso que depois de estudar a literatura ou a ferramenta matemática eu primeiro puxo tudo para o Matlab, depois começo a experimentar e a portar parcialmente para o MQL. As mesmas matrizes e vectores no Matlab estão inicialmente ligados a todas as variáveis, não é preciso descrever ou analisar nada, basta trabalhar, multiplicar um vector por uma matriz ou transpô-lo, é difícil imaginar o que o Matlab não consegue fazer em termos de operações matemáticas

SZY: Com MO, ainda é muito tempo para resolver em MQL, MATlAB parece ser capaz de ajudar, mas lembro-me quando o instalei tudo estava claramente lá e a rede foi desenhada e o estado de cada elemento da rede podia ser visto passo a passo, como NeuroSolutions , talvez mais tarde eu chegue a ele

 
Aleksey Vyazmikin:

Eu só não tenho a questão da escolha. E em geral, tudo isso é aplicado - minha ênfase é em preditores e um pouco de targeting, e mais tempo é gasto apenas desenvolvendo novos preditores do papel para o código. Então a primeira pergunta que eu faço é se foi uma boa idéia acrescentar novos preditores ou não! E haverá uma resposta mais clara a essa pergunta, então eventualmente poderemos procurar outras implementações/abordagens para integrar no código final, e neste momento estou muito longe disso.

Honestamente, eu não sei qual é a sua filosofia de produção graal, já que você só usa a aprendizagem da máquina para selecionar os preditores... e depois o que fazer com eles? )

 
Yuriy Asaulenko:

O que vale numa língua de terceiros:

1. Carregue o histórico para CSV,

2. Faça um testador (isto é apenas e não mais do que um loop),

3. Em uma conta demo, você pode testar, digamos, através da troca de arquivos com o terminal. Se você fizer isso via RAM-Disk, o desempenho é como trocar através da memória - Gigabytes por segundo.

Se o sistema for bem sucedido, o que não será a primeira vez, poupará muito tempo para a modelação. E depois, como enfiá-lo no terminal é uma questão controlável.

1. É o que eu faço em Matlab.

Eu tentei fazer isso no Delphi há muito tempo, mas felizmente não tive sucesso. Mudei para o MQL, posso ver o drawdown e visualizar como o EA estava negociando, posso adicionar indicadores prontos como filtros adicionais, posso adicionar barras de reboque, média... Posso ver tudo no testador, simular tudo em um software de terceiros.É mais fácil estudar MQL do zero em 3-4 meses e aprender a escrever EAs a partir de um template, agora posso verificar qualquer indicador gráfico no testador em 15 minutos - escrevo o meu EA usando um template pronto na forma de programação de procedimentos, ou seja, eu só conecto funções prontas

3. você pode, mas eu tenho tudo em MQL, o que está faltando eu vou adicionar ou conectar .dll


Mas também sobre a questão da modelagem - vivemos em tempos felizes, as soluções prontas são uma dúzia na web, o ambiente de modelagem e a plataforma de negociação devem ser separados, então acontece que uma pessoa tem que ser um desenvolvedor e um programador e um matemático, e ... e tudo.

Ou isso ou como 90% dos "comerciantes" no comércio de runet por TS primitivo)))

 
Maxim Dmitrievsky:

Sinceramente, não sei que tipo de metodologia de produção de graal você tem, já que você só usa a aprendizagem da máquina para selecionar os preditores... e então o que você faz com eles? )

Eu seleciono os preditores com o propósito de me livrar dos errôneos que são ruidosos e contribuem para a aprendizagem excessiva...

Ao mesmo tempo, estou extraindo folhas de árvores para o R, que também se revelam muito bons preditores e o catbust os come com prazer.

Agora eu tenho um experimento prolongado de rachadura da raiz da árvore R, ou seja, depois de construir uma nova árvore (usando genética - eu não sei detalhes, para o roteiro doDr. Trader), eu removo o preditor da raiz e construo a árvore novamente - este processo não é rápido - em média 3-4 dias, então eu já estou em 29 rachaduras, e o que é interessante, novas e interessantes folhas de árvore, que funcionam em lucros positivos em 2014-2018 (todos os anos lucros), e o treinamento é em 2015-2017, aparecem mesmo agora. Daí resulta que os algoritmos de construção de árvores ainda não são tão bons em resultados, uma vez que perdem as coisas óbvias quando têm um excesso de bons preditores, mas quando começam a morrer de fome, surgem novas soluções. Em geral, a partir desta experiência, quero tentar alimentar os preditores em grupos e ver onde estará a maior sensibilidade. Depois quero construir árvores diferentes com grupos diferentes, fazer delas um órgão de decisão colectiva e enviá-las para o comércio...

 
Aleksey Vyazmikin:

Eu seleciono os preditores para me livrar dos errôneos, que são ruidosos e contribuem para a aprendizagem excessiva...

Ao mesmo tempo, eu minero folhas de árvores para o R, que também se revelam bons preditores e o catbust os come avidamente.

Agora eu tenho um experimento prolongado de rachadura da raiz da árvore R, ou seja, depois de construir uma nova árvore (usando genética - eu não sei detalhes, para o roteiro doDr. Trader), eu removo o preditor da raiz e construo a árvore novamente - este processo não é rápido - em média 3-4 dias, então eu já estou em 29 rachaduras, e o que é interessante, novas e interessantes folhas de árvore, que funcionam em lucros positivos em 2014-2018 (todos os anos lucros), e o treinamento é em 2015-2017, aparecem mesmo agora. Daí resulta que os algoritmos de construção de árvores ainda não são tão bons em resultados, uma vez que perdem as coisas óbvias quando têm um excesso de bons preditores, mas quando começam a morrer de fome, surgem novas soluções. Em geral, a partir desta experiência, quero tentar alimentar os preditores em grupos e ver onde estará a maior sensibilidade. Depois, com grupos diferentes constroem árvores diferentes, fazem delas um órgão de decisão colegial e enviam-nas para o comércio...

não entendo bem a divisão da raiz da árvore... quanto mais não seja pelo esquema :) e como podem as folhas trabalhar separadamente, a estrutura de trabalho é a árvore como um todo...

Vou pensar nisso amanhã, estou com sono :)

A propósito, o mql5 tem classes padrão ctree e cnode para a construção de árvores binárias. Se você sabe como usá-los para datamining ... mas eu não sei, mas parece que você tem algo assim

 
Maxim Dmitrievsky:

Eu não entendo muito bem a divisão da raiz da árvore... um esquema seria bom :) e como as folhas podem funcionar separadamente, a estrutura de trabalho é a árvore como um todo...

Vou pensar nisso amanhã, estou com sono :)

A propósito, o mql5 tem classes padrão ctree e cnode para a construção de árvores binárias. Se você sabe como usá-los para datamining... mas eu não sei, mas você parece ter algo assim.

A "raiz da árvore", na minha língua, é o primeiro preditor que divide a árvore em outros ramos - geralmente em duas partes (mas também existem outras variantes).

"Dividir a árvore" é a exclusão do preditor de raiz da amostra antes de processar os dados novamente.

As folhas são apenas um conjunto de regras, que são implementadas com pouca frequência, mas podem dar resultados estáveis ao contrário de toda a árvore. Isto é, eu sou a favor da negociação sem pressa - se o algoritmo não entender a situação do mercado, é melhor deixá-lo esperar até que o mapa seja colocado e ele possa tomar uma decisão.

Por enquanto processei mais de 20000 folhas e vi o que a genética descartou - boas folhas para as decisões de negociação, cerca de 200 delas acabam - aquelas com lucro a cada ano e rentabilidade aceitável (1,4 como mínimo), mas há bons filtros com sinal de "espera" - não os contei - agora estou desenvolvendo meu método para sua seleção precisa.

Tenho 3 aulas, ou seja, a árvore tem sinal de compra, venda e espera, é agora que estou a experimentar com catbust e simplifiquei os alvos para serem comprimidos numa só aula...

Eu não sei nada sobre as classes ctree e cnode, e sobre OOP em geral - eu não sou muito bom em programação, então você dificilmente pode entender códigos de classe sem um programador...