English Русский 中文 Español Deutsch 日本語
preview
Força bruta para encontrar padrões (Parte V): uma nova perspectiva

Força bruta para encontrar padrões (Parte V): uma nova perspectiva

MetaTrader 5Negociação | 29 novembro 2023, 09:50
503 0
Evgeniy Ilin
Evgeniy Ilin

Conteúdo


Introdução

Já faz um tempo desde a minha última publicação sobre este tema. Desde então, tive que repensar muitas das coisas que fiz anteriormente. Isso me permitiu olhar para o problema do algorítmico de negociação de uma perspectiva totalmente diferente, levando em consideração todos os detalhes que antes passavam despercebidos. Em vez de matemática e código padrão e sem graça, proponho ao leitor uma abordagem completamente diferente. Se percebida da maneira certa, este artigo pode ser o começo de algo novo ou uma reinicialização do antigo. Já estou cansado de ser pedante e de jogar fórmulas e código inútil no lixo do histórico, então este artigo será o mais simples e compreensível possível para qualquer leitor.


Caminhos para alcançar o objetivo

Comecei a refletir sobre a variedade de caminhos que levam as pessoas ao sucesso ou as levam a um beco sem saída ao tentar ganhar dinheiro com a negociação algorítmica, e teoricamente, existem várias abordagens:

  1. Abordagem direta.
  2. Imagem atraente.
  3. Sistemas de negociação prontos.
  4. Modernização e hibridização de algoritmos públicos.
  5. Abordagem em equipe.

A primeira abordagem, a mais comum entre os teimosos. Na verdade, é útil para pessoas como eu, pois permite abandonar ambições e falsas esperanças. Pode não soar muito bem, mas na verdade é muito útil para o seu futuro. Lembre-se, no entanto, de que essa estratégia exige um alto consumo de energia e tempo, e se você não fizer uma pausa em algum momento, pode acabar caindo na armadilha da "síndrome do fórum", com todas as implicações associadas a isso. Não acho necessário detalhar quais são essas consequências, todos entendem o meu sarcasmo. No entanto, essa abordagem permite adquirir o conhecimento teórico que adquiri em seu devido tempo, e seu valor é absoluto. O principal é parar a tempo. E, é claro, se você pesar o tempo gasto e os resultados obtidos, verá que, de qualquer forma, há pouco prazer.

A segunda abordagem é muito mais simples e, na verdade, mais eficaz em termos de tempo gasto, porque aqui você precisa investir muito menos esforço, e tudo o que você precisa fazer é convencer as pessoas de que você é bem-sucedido. Tudo está em nossas mentes, e em algum momento percebi que isso funciona muito bem, e as pessoas tendem a confiar em embalagens bonitas. Não há lugar para moralidade ou outros fatores aqui. O resultado é o que importa. Cínico, mas é assim que o mundo vive. Tudo o que é necessário é criar uma imagem específica. Por exemplo, usando Martingale, médias ou outros métodos de negociação, e eles são mais do que suficientes para criar essa imagem. O resto você pode imaginar.

Acredito que a terceira abordagem seja sábia. É sábia porque, nesse caso, os esforços investidos serão mínimos, mas sua imagem será real. Com uma implementação adequada dessa abordagem, as desvantagens serão ausentes, embora existam seus contras. O mais importante necessário para implementar essa abordagem é o conhecimento. E se, por exemplo, eu não tivesse a experiência que tenho agora, então eu, por exemplo, não poderia usá-la, mesmo considerando que eu tinha a abordagem correta desde o início e uma abordagem racional e ponderada para alcançar meus objetivos. Mas teoricamente isso é possível, e na prática tenho certeza de que é possível encontrar pessoas assim, se procurar.

Quanto à quarta abordagem, não sei se alguém a pratica, no entanto, teoricamente, deve levar menos tempo, mas não posso dizer nada sobre a eficácia dessa abordagem. Em geral, tudo é possível, mas não considero essa abordagem a mais eficaz, para dizer o mínimo. É mais aconselhável usá-la em combinação com a anterior, pois isso ampliará a variedade de suas negociações e aumentará as chances de obter sinais de negociação mais estáveis.

A quinta abordagem só pode ser eficaz com a presença de muitas ideias e trabalho constante nelas. No entanto, é muito melhor do que o primeiro, mesmo que cada membro da equipe use a abordagem diretamente. Mas aconteceu que os desenvolvedores de sistemas de negociação são quase todos solitários arrogantes, e reunir uma equipe assim, e mais importante, organizar seu trabalho, está ao alcance de poucos. Eu sei que existem equipes assim, e elas são bastante bem-sucedidas. É bom se você estiver em uma equipe assim e estiver trabalhando juntos no desenvolvimento de algoritmos lucrativos ou similar. A vantagem disso é que, no final, a qualidade e a quantidade acumulativa de trabalhos podem desempenhar um papel decisivo e permitir a criação de um produto competitivo.

O problema é que, inicialmente, ninguém pensa nisso, mas deveria. Claro, esses são cenários bastante idealizados, e o caminho de cada um é um pouco peculiar, mas, apesar disso, posso definitivamente dizer que, seja qual for o caminho escolhido, sempre haverá aquisição de algum conhecimento como precursor do resultado. Isso não precisa ser apenas conhecimento técnico ou filosófico, mas, no meu caso, é um pouco de ambos. Parece-me que é assim que deve ser, porque os problemas sempre devem ser examinados sob todos os ângulos para serem resolvidos com sucesso.


Processo de obtenção de renda estável com base em sistemas de negociação automatizada

Antes de encontrar uma abordagem harmoniosa para a negociação automática, é necessário, em primeiro lugar, estruturar todo o processo, desde o momento em que a ideia surge até a sua concretização:

  1. Ideia.
  2. Desenvolvimento de um plano de implementação.
  3. Processo de desenvolvimento.
  4. Correção de bugs.
  5. Refinamentos e modernização.
  6. Testes extensivos.
  7. Otimização e definição dos limites de aplicabilidade
  8. Preparação para a negociação (recursos, conta de demonstração)
  9. Negociação em uma conta real

Por que estou dizendo tudo isso, você entenderá em breve. Se você é muito inexperiente, provavelmente estará quase cem por cento certo de que seu sistema deve funcionar, porque você leu isso em algum lugar ou inventou por si mesmo e convenceu a si mesmo de que funcionará. A realidade é que você não possui um modelo matemático do mercado, e mesmo que suponha sua existência, você não conseguirá usá-lo devido à sua incrível complexidade e irracionalidade ao usá-lo em um Expert Advisor (EA). O que fazer então? A resposta não é tão simples quanto parece, mas existe. É precisamente por essa razão que inventei meu algoritmo de força bruta.

É óbvio que se você se propuser a construir um super EA, passará por muitas etapas antes de chegar ao resultado desejado, o que, na verdade, é altamente duvidoso, para dizer o mínimo. Eu sei disso por experiência própria. O mais frustrante, após mais uma tentativa malsucedida de desenvolver um EA, é o fato de que você terá que descartá-lo, o que significa que, apesar da utilidade da experiência adquirida, isso não diminui a decepção pelo tempo perdido. Quando você desenvolve EAs por conta própria, isso é inevitável. Se estivermos falando sobre encomendar um freelancer, a situação será ainda mais sombria, pois eles podem criar o EA para você, mas isso provavelmente não trará benefícios.

Neste contexto, quero que fique claro que, em primeiro lugar, estamos falando do seu tempo. Pessoas bem-sucedidas têm a característica de avaliar corretamente o valor de seu tempo. Se o tempo gasto não traz os resultados desejados, então provavelmente não vale a pena continuar na mesma linha. Eu criei um esquema padrão para você:

Esquema 1.

abordagem padrão

Cada ação no diagrama consome seu tempo, e o resultado geral depende diretamente dos conhecimentos e recursos que você possui. Recursos aqui não necessariamente se referem a seu capital disponível para investimento, mas mais ao fato de você ter computadores para testar sistemas de negociação constantemente, ou recursos para adquirir tal equipamento. O seu desejo de se dedicar a isso e o tempo livre também desempenham um papel importante. A questão é que encontrar ou criar um bom sistema de negociação é apenas metade do caminho, a outra metade envolve a maneira como você gerencia isso, considerando que tem pouco tempo livre.

Se você tem pelo menos um entendimento mínimo do assunto, pode ver como o diagrama será alterado se usarmos sistemas de negociação prontos do Mercado MQL5 ou de outras fontes. Não é necessário redesenhá-lo completamente, apenas indicar as substituições relevantes:

Esquema 2.

substituição de desenvolvimento por pesquisa

O significado do esquema não muda após a substituição, mas buscar e escolher algo que já está pronto é muito mais fácil e, eu diria, mais agradável do que escrever toneladas de código. Felizmente, posso fazer ambos. Claro, para isso, é necessário conhecimento e experiência, mas sem isso não é possível. No entanto, além disso, o significado deste esquema está no fato de que os EAs podem se tornar obsoletos ao longo do tempo, e a maioria deles inevitavelmente se tornará inútil. Depois de descartar mais um EA, você não suspeita que poderia usá-lo novamente depois de algum tempo, não é verdade? No entanto, cavar naquela pilha de entulho mais tarde e levantar algoritmos esquecidos há muito tempo, e novamente pensar em como aplicá-los, também levará muito tempo.

No entanto, seria bom acumular uma base de EAs e, depois, substituí-los de maneira inteligente, continuando a negociar com sucesso após algum tempo. Nesse caso, nosso processo se torna ainda mais simplificado, pois você não precisa procurar novos EAs. Isso é possível? Uma pergunta muito interessante, e eu vou te dizer que é possível. Idealmente, essa coleção de EAs deve ter as seguintes características:

  • Flexibilidade do algoritmo.
  • Capacidade de inverter o sinal.
  • Desempenho rápido (baixo consumo de recursos).
  • Número mágico das ordens.

Com base nesses dados, você pode até introduzir uma definição matemática da perspectiva da coleção de EAs selecionada. Você pode até tentar criar expressões que tornem mais claro como as características desses EAs e sua quantidade afetam as coisas. Mas, em vez disso, podemos simplesmente fazer uma lista simples e compreensível:

  1. Quanto mais EAs, melhor nossa coleção (apenas porque quanto mais EAs, mais deles corresponderão aos critérios de negociação necessários em um determinado período de negociação).
  2. Quanto mais parâmetros de entrada o EA tiver, mais eficiente ele pode ser otimizado.
  3. Os EAs que operam por barras são melhores (mais fáceis de usar e testar, bem como otimizar, e você não precisa se preocupar com latência, slippage e outros detalhes).
  4. Se houver a possibilidade de inverter o sinal de negociação, o peso do EA é duplicado.

Vamos deixar de lado a super otimização e a adaptação histórica, pois isso é uma questão separada que precisa ser discutida separadamente. Suponhamos que você saiba como fazer tudo isso corretamente. Se tudo for feito corretamente, nosso esquema se transformará em uma construção muito simples:

Esquema 3.

negociação com base em um banco de dados de EAs

É óbvio que quanto mais EAs você tiver, melhor será a filtragem dos robôs que você pode realizar. No entanto, aqui surgem imediatamente vários momentos desagradáveis. Todos eles estão relacionados ao fato de que, de uma forma ou de outra, quanto mais qualitativa desejamos fazer a seleção, mais tempo levará para essa seleção. Além disso, ela terá que ser feita várias vezes, e não é apenas uma tarefa simples. Você precisa fazer isso regularmente, e em vez de tomar coquetéis na praia, isso se transformará em mais trabalho, a menos que você coloque alguém para fazer isso por você. Neste contexto, surge a pergunta: "Por que eu faria isso quando existem esquemas de negócios convencionais testados sem nenhum risco?"

Além disso, quanto mais sucesso você desejar alcançar em sua atividade de negociação, mais terminais em funcionamento simultaneamente você precisará. Isso significa que você constantemente terá que controlar cada terminal, adicionar e remover robôs dele, ajustar e monitorar seu desempenho. Como você pode imaginar, tudo isso é um monte de trabalho que não se resolverá sozinho. Apesar de termos nos livrado da necessidade de desenvolver constantemente novos EAs, ainda não nos livramos da rotina principal. Vamos listar os principais momentos trabalhosos:

  • Seleção de EAs por meio de otimização.
  • Pré-teste em uma conta demo.
  • Seleção dos sinais de negociação mais resistentes.
  • Negociação real usando as combinações mais resistentes (colocando em uma conta real).
  • Controle contínuo (desligamento, pausa, substituição por outros robôs e assim por diante) (trabalho com os terminais).

Tudo isso é possível, mas apenas com base em uma paradigma de trabalho bem estruturada. Mas é claro que há um limite. Estou me referindo ao caso em que você trabalha sozinho, e eu acho que essa é quase sempre a situação, com base na minha experiência. Não é possível saltar acima do teto, pois tudo leva tempo.

Inicialmente, meu algoritmo de força bruta foi desenvolvido para fins de pesquisa, para entender se é possível alcançar uma negociação lucrativa com algoritmos simples. Eu percebi que isso é possível. No entanto, dadas as oportunidades que ele tinha na época, ele só podia fornecer EAs adicionais para expandir o número total de EAs. Para entender melhor como EAs simples podem ajudar e como usá-los corretamente, é necessário compreender mais profundamente até que ponto um determinado algoritmo pode resolver o problema da negociação lucrativa e como lidar adequadamente com diferentes EAs.


EAs e padrões

Ter uma coleção de algoritmos e otimizá-los constantemente não é suficiente, porque a otimização é uma habilidade separada, cujo domínio afeta os resultados da aplicação do EA na conta de negociação. Cada EA é único à sua maneira e possui suas próprias nuances tanto na otimização quanto no uso. Uma opção importante que eu considero que deve obrigatoriamente estar presente em qualquer EA é a capacidade de inverter as negociações. Isso significa que qualquer ação de negociação é substituída por seu oposto, ou seja, compra é substituída por venda e venda é substituída por compra. Inicialmente, essa opção pode parecer desnecessária, devido à falsa crença de que tudo deve funcionar conforme o planejado.

Para entender este fato, é necessário, em primeiro lugar, compreender o que é um padrão. Na concepção comum, um padrão é a diferença entre algumas características estatísticas e uma distribuição aleatória. À primeira vista, sempre surge a ideia de inércia dos padrões ao abordar essa questão. Mas isso é apenas um dos possíveis cenários para o futuro desse padrão. Apenas uma pequena parte dos padrões encontrados possui inércia. Vamos considerar o padrão encontrado no contexto do backtest ou sinal de negociação.

Imagine que temos uma base de robôs muito grande, da qual podemos criar grupos separados de robôs agrupados por características semelhantes que consideramos apropriadas por várias razões. Na verdade, as próprias características não são tão importantes quanto o próprio fato da agrupação:

Esquema 4.

agrupamento de robôs

Aqui, pela primeira vez, meu programa de força bruta aparece como um elemento do diagrama, que, na verdade, realiza essa agrupação devido às diferentes configurações de cada cópia dela. Na verdade, cada cópia do programa configurada de forma diferente é um grupo de robôs completamente independente que pode ser usado para seleção. Os robôs gerados podem ser usados para negociação, como mostrado na parte inferior do diagrama. E a coisa mais importante aqui é que todos esses grupos de robôs, com o tempo, são divididos em três grupos:

  • Lucrativos com sinal direto (baseado na inércia do padrão).
  • Lucrativos com sinal invertido (baseado na mudança imediata do padrão).
  • Caóticos (ajuste simples segundo o histórico).

É impossível saber antecipadamente qual conjunto fornecerá qual grupo de sinais, mas após algum tempo, a filtragem pode ser realizada por exclusão. Nesse contexto, é claro que quanto mais desses grupos e sinais independentes existirem, melhor. Para cada grupo de EAs, é melhor ter pelo menos dois sinais:

  1. Sinal direto.
  2. Sinal invertido.

Além disso, você pode adicionar sinais mistos de diferentes grupos. Tudo isso aumentará ao máximo as chances de encontrar grupos de EAs harmoniosamente compostos que possam funcionar por um longo tempo. Dois fatos podem levar à descoberta mais rápida de bons portfólios:

  1. Agrupamento de alta qualidade e eficaz dos EAs disponíveis (quantos mais grupos independentes, melhor).
  2. Sinal direto e invertido para cada grupo + mistos.

Todos esses fatores, em última análise, proporcionam uma ampla e diversificada gama de sinais, que, por sua vez, lhe darão uma amostra máxima para uso posterior na negociação real. O fator mais importante que afeta a capacidade de realizar tais agrupamentos é a multiplicidade e a diversidade da coleção de EAs, e no caso do meu programa, a elaboração de suas configurações e a diversidade dos algoritmos internos, como métodos de análise, clustering e outros. Um dos métodos universais para aumentar a variedade é a clusterização.

Esquema 5.

restrições de trabalho

A clusterização, neste caso, é representada pela capacidade de dividir subgrupos de robôs por dias da semana e janelas de tempo dentro de um dia, o que, por si só, oferece amplas possibilidades na hora de agrupar EAs em portfólios. Certamente, existem muitas opções de clusterização, mas esta é a mais simples e eficaz, na minha opinião. Além disso, esse esquema pode ser usado para configurar o próprio programa para trabalhar em dias e horas específicos. Isso pode permitir uma otimização máxima do uso dos recursos computacionais e a definição dos pesos adequados para cada cópia do programa. Cada configuração envolve cálculos específicos, portanto, esse método é necessário.

Além disso, gostaria de dizer algumas palavras sobre EAs simples e complexos. Teoricamente, é possível criar um EA extremamente flexível e versátil que se adapte a praticamente qualquer padrão, mas acredito que todos concordam que quanto mais complexo o sistema, mais fácil é quebrá-lo. Claro, há uma possibilidade remota de que o sistema seja altamente bem-sucedido e resistente a falhas, mas vamos ser realistas. Suponha que algumas pessoas tenham um sistema assim e nunca o compartilhem com os outros, então, o que as pessoas que não têm tais super sistemas (cuja existência, francamente, me parece uma utopia) devem fazer? Eles precisam encontrar uma solução.

Qualquer trader algorítmico bem-sucedido deve entender as verdades simples que estou apresentando, e, na maioria dos casos, seu lucro é baseado exatamente nessa compreensão. Negociação lucrativa é, antes de tudo, a capacidade de usar corretamente as ferramentas que você tem à disposição. Esperar por estratégias mágicas e miraculosas ao longo dos anos não é a melhor solução. Qualquer ideia, com o conjunto certo de soluções auxiliares, é executável. É isso que estou tentando mostrar neste artigo, sem enfatizar algoritmos específicos. 


Automatização máxima do fluxo de trabalho

Desde a pesquisa inicial até a criação de uma ferramenta que automatiza completamente todo o trabalho de encontrar sinais de negociação estáveis, a ideia se desenvolveu gradualmente, mas chegou exatamente onde deveria estar. No momento, meu sistema executa um conjunto completo de tarefas, começando com a simples geração de EAs de negociação e terminando com a negociação nas plataformas MetaTrader 4 e 5. A versão atual do que faço com minha programa se parece mais ou menos com isto:

Esquema 6.

esquema atual para usar força bruta

Este esquema me livra completamente de operações rotineiras, tais como:

  • Seleção e agrupamento de EAs.
  • Desconexão e conexão de EAs em gráficos e configuração subsequente.
  • Otimização e seleção de configurações.
  • Busca por novos EAs.
  • Criação de novos EAs.

Uma das artimanhas deste esquema é que, além de gerar EAs simples que são compartilhados no meu canal do Telegram, existe simultaneamente um EA universal dentro dos terminais. Ele não precisa ser constantemente removido dos gráficos e instalado toda vez que o programa encontra um novo EA funcional. Em vez disso, o programa cria automaticamente o EA e um arquivo de texto separado que é equivalente ao EA. O arquivo é colocado em uma pasta comum do terminal, na qual existe um diretório correspondente, a partir do qual o EA universal lê as configurações. Tudo isso acontece automaticamente em tempo real e não requer minha supervisão, enquanto o próprio EA é compartilhado no canal do Telegram.

Então, todo o esquema automatiza tanto o processo de criação de EAs quanto a postagem automática no meu canal. Minha única responsabilidade é dimensionar o sistema, adquirir equipamentos e monitorar os sinais de negociação. Atualmente, é claro, tudo isso está funcionando a apenas 1% de sua capacidade, mas considero isso adequado como uma demonstração.

Atualmente, tenho apenas um computador disponível, que é bastante antigo, mas é suficiente para fornecer trabalho alternado para dois trabalhadores independentes (programas de força bruta). Com base nesses dois conjuntos de configurações, criei dois sinais: direto e invertido para cada um, além de sinais mistos diretos e invertidos adicionais. Com base nos resultados de dois meses de testes contínuos em capacidade mínima, pode-se ver o que mencionei anteriormente:

Figura 1.

lucro direto e lucro invertido

Após dois meses de negociação contínua em baixa capacidade, restaram apenas dois sinais nitidamente positivos. Há outro, misto, mas é praticamente idêntico ao invertido mostrado aqui. Eles pertencem a dois algoritmos de negociação completamente diferentes e suas configurações. Por meio deles, você pode ver que a negociação lucrativa pode ser obtida tanto com um sinal direto quanto com um invertido. Se você desejar, encontrará EAs gerados ao longo do processo de teste em todo o período no meu canal do Telegram. O link para ele está em meu perfil, bem como no final deste artigo.


EAs universais - receptores

Certamente, EAs mais bem desenvolvidos e de alta qualidade são muito mais eficazes. Eles podem ser usados para negociação automática. Mas cheguei à conclusão de que a maioria dos EAs não precisa ser descartada, mas pode ser usada repetidamente. Qualquer algoritmo tem limites de aplicabilidade, e muitos EAs que parecem não atender às expectativas do desenvolvedor ou do cliente têm recursos não utilizados. Se calcularmos a proporção aproximada de quantos sistemas de negociação nunca chegam à fase de teste, pelo menos em uma conta demo, veremos que há toneladas deles.

A verdade é que, se você não souber como otimizar corretamente um EA, nunca conseguirá. Posso até dizer que antes disso, joguei fora muitos EAs interessantes. Eu simplesmente não entendia que poderia usá-los de uma forma ligeiramente diferente. Infelizmente, isso requer experiência específica, e só a adquiri recentemente. Neste artigo, não vou abordar esse tópico, mas prometo criar um artigo separado sobre otimização avançada em breve.

Decidir-se por uma aventura desse tipo não é fácil, porque, instintivamente, sempre queremos pegar um super EA, colocá-lo no terminal, pressionar um botão e esquecê-lo por várias semanas, no mínimo. Mas ainda precisamos encontrá-lo e confirmar se ele realmente tem as características de que precisamos. E lembre-se disso: enquanto você estiver procurando por ele, pode simplesmente pegar tudo o que tiver e executar o maior número possível de configurações diferentes.

Claro, para controlar adequadamente a negociação de EAs desse tipo, você precisará gastar muita energia e tempo. No meu sistema, evitei tais problemas com a ajuda de um EA universal, que é uma conveniente extensão opcional do EA gerado (configuração). A primeira opção mais simples desse EA universal contém as seguintes variáveis de controle importantes:

input int DaysToFuture=50;//Days to future
input LOT_VARIATION LotMethod=SIMPLE_LOT;//Lot Style
input bool bInitLotControl=false;//Auto lot bruteforce
input double MinLotE=0.01;//Min Lot
input double LotDE=0.01;//Lot (without variation)
input double MaxLotE=1.0;//Max Lot
input bool CommonE=true;//Common Folder
input string SubfolderE="T_TEYLOR_DIRECT";
input int MinutesAwaitE=2;//Minutes To Check New Settings
input bool bBruteforceInvertTrade=false;//Invert Bruteforce Trade

Obviamente, essas não são todas as variáveis existentes, mas são as necessárias para garantir que as seguintes ações importantes sejam automatizadas:

  • Desativar a negociação após o tempo permitido para negociação expirar (se durante o tempo de execução da configuração atual não for gerada uma nova, portanto, a antiga perde a relevância).
  • Estilo de negociação (lote simples / aumento gradual do lote do mínimo ao máximo dentro da janela de negociação definida / diminuição gradual do lote do máximo ao mínimo dentro da janela de negociação definida).
  • Leitura de configurações da pasta do terminal atual / pasta comum dos terminais.
  • Capacidade de selecionar uma subpasta.
  • Intervalo de atualização das configurações.
  • Inversão de sinal.

Tudo isso permite configurar de forma flexível a interação entre os terminais e o programa de força bruta, além de iniciar quantos terminais e força bruta desejar em uma única máquina, na medida em que as capacidades dela permitirem. A única coisa é que atualmente é necessário alocar um EA para cada gráfico, porque ainda não fiz um receptor universal, mas isso está nos meus planos. Será necessário para implementar uma negociação de maior qualidade e mais pensada. Todos os prós e contras podem ser vistos claramente no esquema:

Esquema 8.

prós e contras

Conforme ilustrado no esquema, tanto em um EA universal simples quanto avançado, são recomendadas duas implementações:

  • Sistema de sincronização de negociação paralela.
  • Sistema de otimização de negociação paralela.

Essas são adições muito importantes para todos os algoritmos que podem melhorar a qualidade da negociação paralela e reduzir os custos da mesma. Atualmente, estou considerando a implementação delas e planejo incorporá-las em breve, mas ainda não tenho os recursos necessários para isso.

Quando se trata de negociar com apenas um EA, todas essas coisas são redundantes, mas quando se trata de operar vários EAs em paralelo, inevitavelmente surge a questão dessas adições. A vantagem da minha abordagem é que posso implementar essas adições de maneira mais qualitativa, com base na uniformidade de todos os EAs. Isso se aplica tanto ao sistema externo quanto ao interno.

Gostaria de destacar separadamente que o multi-receptor se destina a funcionar em um único gráfico sem a necessidade de conectá-lo a cada instrumento. A única desvantagem desse EA é que é mais difícil ajustá-lo para cada instrumento específico, mas, no entanto, ele tem muito mais vantagens do que desvantagens. Talvez, em um dos próximos artigos, eu vou me aprofundar mais nessas implementações, quando estiver descrevendo os detalhes técnicos das novidades que consegui introduzir no tempo em que não havia artigos.


EA para coleta dinâmica de cotações

Anteriormente, eu tinha um EA simples que criava arquivos de texto que precisavam ser abertos manualmente no programa. Naturalmente, após algum tempo, esses dados se tornam obsoletos e, para garantir o funcionamento de todos os esquemas mencionados anteriormente, é necessário ter acesso a cotações atualizadas. Para isso, criei um EA que constantemente escreve os dados em uma pasta comum de terminais. E para compilar conjuntos de instrumentos e períodos negociáveis, decidi adicionar listas correspondentes nas configurações do programa:

Esquema 9.

atualização de novas cotações

Com esse método, você pode configurar cada terminal com seu conjunto exclusivo de instrumentos e períodos sem a necessidade de duplicar dados em várias pastas. Nesse caso, para operar com qualquer número de terminais de negociação, é necessário apenas um terminal, que atua como fonte de cotações. Se você configurar os intervalos de análise para anos, possíveis pausas e atrasos na atualização de dados serão insignificantes. Além disso, todo o sistema se baseia na abordagem de trabalho por barras, tornando-o altamente confiável e resistente a quase todas as situações imprevistas. Este bot possui apenas algumas configurações:

input bool CommonE=true;//Common Folder/Terminal Folder
input double YearsE=10.0;//Years Of History Data
input int MinutesForNew=2;//Rewrite Timeout In Minutes

Este EA escreve para a pasta geral de todos os terminais ou para a pasta própria do terminal atual. Ele registra os últimos anos de histórico que especificarmos, começando no momento atual do terminal e retrocedendo no histórico. O EA grava a intervalos de tempo especificados em minutos. Este foi o último elemento de toda a lógica. A parte mais complexa já está concluída. Agora, só falta implementar o EA-receptor, que funcionará em um único gráfico. Parte do funcional já foi desenvolvida, mas apenas pela metade.


Considerações finais

Neste artigo, eu quis sair um pouco da parte técnica habitual e tentei analisar o problema da negociação lucrativa de uma perspectiva um pouco diferente, usando minhas próprias experiências. Como se pode ver, além dos próprios EAs, que são apenas uma pequena parte do processo de obtenção de lucro, existem muitos detalhes e nuances que podem ajudar ou atrapalhar. No final, foi interessante descobrir que o resultado final estava muito distante do que foi originalmente planejado.

Ao longo do caminho, tive que gradualmente adaptar a ideia original à realidade, o que era um processo absolutamente incontrolável e, mais precisamente, auto-direcionado e inevitável. Como resultado, encontrei a saída certa do beco teórico, que inevitavelmente só pode ser encontrada no plano prático. E isso significa mais robôs, mais sinais, mais computadores e mais automação. Espero que este artigo pelo menos sirva como um empurrão para muitos teóricos e buscadores do Santo Graal, mostrando que sempre é possível encontrar uma saída alternativa. No próximo artigo, vou mostrar em detalhes quais complementos meu sistema adquiriu. No entanto, ainda há muito trabalho a ser feito.

Todos os sinais atualmente disponíveis podem ser encontrados aqui. Não mostrei todos eles no artigo, apenas os mais importantes. Haverá mais deles, e sua qualidade aumentará à medida que eu adquirir recursos e ferramentas adicionais. Como resultado, veremos se consigo desenvolver um grupo de sinais estáveis ​​e vivos. Quanto aos EAs gerados automaticamente, todos eles são publicados em meu canal público no Telegram. Atualmente, a qualidade deles está de acordo com os recursos mínimos disponíveis para mim, mas no futuro, com a expansão dos recursos, você verá um aumento na diversidade e na qualidade.

Referências

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/12446

Redes neurais de maneira fácil (Parte 50): Soft Actor-Critic (otimização do modelo) Redes neurais de maneira fácil (Parte 50): Soft Actor-Critic (otimização do modelo)
No artigo anterior, implementamos o algoritmo Soft Actor-Critic, mas não conseguimos treinar um modelo lucrativo. Neste artigo, vamos realizar a otimização do modelo previamente criado para obter os resultados desejados a nível de seu funcionamento.
Desenvolvendo um agente de Aprendizado por Reforço em MQL5.com Integração RestAPI(Parte 2): Funções MQL5 para Interação HTTP com API REST do Jogo da Velha Desenvolvendo um agente de Aprendizado por Reforço em MQL5.com Integração RestAPI(Parte 2): Funções MQL5 para Interação HTTP com API REST do Jogo da Velha
O artigo detalha como MQL5 pode interagir com Python e FastAPI, usando chamadas HTTP em MQL5 para se comunicar com um jogo da velha em Python. Discute a criação de uma API com FastAPI para essa integração e inclui um script de teste em MQL5, destacando a versatilidade do MQL5, a simplicidade do Python e a eficiência do FastAPI na conexão de diferentes tecnologias para soluções inovadoras.
Desenvolvendo um sistema de Replay (Parte 38): Pavimentando o Terreno (II) Desenvolvendo um sistema de Replay (Parte 38): Pavimentando o Terreno (II)
Muita gente que se diz programador de MQL5, não tem as bases que estarei apresentando aqui, neste artigo. Muitos consideram o MQL5 algo limitado, mas tudo isto se deve a falta de conhecimento. Então, não fique com vergonha por não saber. Mas tenha vergonha de não perguntar. Mas o simples fato, de forçar, e obrigar o MetaTrader 5 a não permitir que um indicador seja duplicado. Não nos dá de maneira alguma meios de efetivar uma comunicação bilateral entre o indicador e o EA. Ainda estamos um pouco longe disto. Mas o simples fato de que o indicador não estará duplicado no gráfico, já nos garante uma certa tranquilidade.
Desenvolvendo um sistema de Replay (Parte 37): Pavimentando o Terreno (I) Desenvolvendo um sistema de Replay (Parte 37): Pavimentando o Terreno (I)
Neste artigo iremos começar a fazer algo, que eu gostaria de ter feito a muito mais tempo. No entanto, por falta de "terreno firme", não me sentia seguro para apresentar de forma publica. Mas agora já tenho as bases para poder fazer o que iremos começar a fazer, a partir de agora. É bom que foque ao máximo em compreender o conteúdo deste artigo. E não estou dizendo isto, apenas para que você o leia apenas por ler. Quero e preciso enfatizar que se você não entender este artigo especifico. Poderá abandonar completamente qualquer esperança em compreender o conteúdo dos próximos.