English Русский 中文 Español Deutsch 日本語
preview
Aprendendo a construindo um Expert Advisor que opera de forma automática (Parte 13): Automação (V)

Aprendendo a construindo um Expert Advisor que opera de forma automática (Parte 13): Automação (V)

MetaTrader 5Negociação | 1 fevereiro 2023, 10:11
667 0
Daniel Jose
Daniel Jose

Introdução

Agora que a parte da construção, do esqueleto base, esta concluída. Poderemos, finalmente, fazer a automatização do EA, de maneira que ele consiga operar, de forma 100% automática, seguindo regras de um operacional, que você irá definir, como sendo, o que ele deverá utilizar. A ideia deste artigo, não é de forma alguma construir um modelo operacional. Mas sim mostrar, e preparar você, entusiasta, a conseguir usar o sistema aqui proposto. Isto afim de que você consiga transformar um EA manual, em um EA automático.

O grande problema que vejo, na maior parte das pessoas, que desejam usar um EA 100% automatizado, e não que este, seja necessariamente o seu caso, caro leitor. É que estas pessoas, de fato não conhecem absolutamente nada, sobre programação. Ou pior, não sabem absolutamente nada, sobre o mercado financeiro, e querem se aventurar neste mundo.

Muitas, simplesmente querem um programa de computador, que elas liguem, e comece a produzir, magicamente, dinheiro para elas. Isto sem realmente, se darem conta, do que está acontecendo pro de traz dos bastidores. Vejo muita gente, falando bem, ou mal, desta ou daquela plataforma, deste ou daquele sistema, deste ou daquele EA. Mas lá no fundo, a grande maioria não tem a menor noção, do nível de risco, na qual esta se colocando. Isto ao imaginar que um simples programa de computador, criado aqui no MQL5, afim de rodar no MetaTrader 5, ou qualquer outra linguagem de programação. Irá permitir gerar um sistema automático, para se operar no mercado, e fazer este um caixa eletrônico.

Muitos tem este " sonho ", ou poderíamos chamar de ilusão. De que, algum programador, ou até mesmo ele próprio, irá conseguir desenvolver, algum tipo de método, programa, ou mesmo um algoritmo, que irá gerar magicamente dinheiro, em sua conta na corretora. E muito destes, se quer tem o trabalho de estudar o básico, sobre mercado financeiro. Mas não gostam que ninguém os diga, de que eles estão errados. De que este não é o caminho a ser seguido.

Tudo, absolutamente tudo, que se pode usar. Criar ou desenvolver. Para tentar de alguma forma, tornar um programa, em uma fabrica de dinheiro no mercado financeiro, já foi criado. Tentado e desenvolvido. Absolutamente tudo. Algumas coisas, já se mostraram não adequadas. Enquanto outras, por terem de um bom controle de risco, conseguem gerar algum lucro ao logo do prazo.

Então se você, é do tipo que simplesmente espera encontrar um sistema magico. Que possa ser usado, a fim de lhe tornar muito rico, em questão de dias. Pare imediatamente a leitura deste artigo. Pois as informações que ele irá conter, não são de forma alguma voltadas a você. A mesma coisa se aplica, a quem espera ver neste artigo a formula mágica. Por favor, peço que não continue a leitura.

Aqui irei mostrar como você faz para desenvolver o gatilho. Isto para fazer com que aquele sistema que você já utiliza, a meses ou provavelmente a um bom tempo. Possa ser, de alguma forma automatizado.

Então vamos começar a entender, como automatizar no nosso EA, começando pelo planejamento do que iremos de fato precisar fazer.


Planejando a automação

Primeiro, não importa o que você irá de fato operar. Não importa quais indicadores, tempo gráfico, ou até mesmo, que tipo de sinal será utilizado. Definitivamente, não importa. O processo de automação, irá sempre, e sempre, seguir o mesmo tipo de planejamento. O que muda, é a forma de como o gatilho será construído. Mas o planejamento será sempre o mesmo.

Para planejar a forma de automatizar o sistema. Você deve primeiro ter um modelo de operação. Este você deve de fato já estar utilizando a algum tempo. Isto é primordial, e extremamente necessário. Não tente automatizar um modelo que você não conheça, ou que apenas ouviu, ou viu alguém utilizando. Não tente fazer isto, pois não vai dar certo. É preciso que você tenha o costume, de fato em usar aquele modelo especifico.

Sabendo disto, você já tem a primeira coisa necessária para automatizar o modelo: Você sabe operar ele. Agora é preciso que você coloque no papel, as regras para que a operação se dê. Você tem que conseguir fazer isto, de uma maneira bastante clara e objetiva. Nada do tipo: Se isto estiver assim, quanto talvez isto daqui estiver daquele outro jeito, ai vendo tanto, esperando que aquilo outro . Não, isto está errado. Tem que ser algo do tipo : Acontece isto vende, acontece aquilo compra. Tem que ser bastante objetivo. Lembre-se, você estará dizendo a uma calculadora o que fazer. Ela não tem emoção ou sentimento. Não sente medo ou remorso. Então seja objetivo.

Agora que você colocou no papel, exatamente, o que irá ser feito. É hora de começar a parte da criação da lógica da programação. Neste momento muitos acabam se perdendo. Já que no momento de programar, começam a inventar novas regras, a fim de tentar tornar o sistema melhor, ou mais rentável. Novamente isto esta errado, você deverá fazer com que o EA, execute a mesma coisa que você faria. Exatamente a mesma coisa, nem mais nem menos.

Para exemplificar, e é apenas para exemplificar, não é de forma alguma para que utilizem o modelo que irei mostrar aqui, sem de fato conhecer ele a fundo, e saber operar ele. Vou mostrar como se cria estas regras, com um dos modelos mais simples que existe. Ele é formalmente conhecido como Modelo de Larry Willians. O famoso modelo da média móvel de 9 períodos exponencial. Existem um imenso numero de variações deste mesmo modelo, mas originalmente ele é bem simples. Então vamos fazer o planejamento das regras, do uso deste modelo.

Se a barra fechar acima da média móvel exponencial de 9 períodos devemos COMPRAR, se ela fechar abaixo devemos VENDER.

Esta é a regra que iremos usar para codificar o modelo. Vejam que ela é bem simples. Não existe nada falando de: Se isto, ou se aquilo ... ela é simples e objetiva. Caso desejamos adicionar um trailing stop, temos que faze-lo de forma igualmente objetiva. Um exemplo disto seria a seguinte regra:

O stop da operação sempre estará a um tick da mínima da barra já fechada, no caso da COMPRA, e estará a um tick da máxima da barra já fechada no caso da VENDA.

Novamente vejam que a regra é bem simples. É assim que você deverá sempre fazer, para criar as suas regras. Para deixar bem claro, vamos ver um outro exemplo de como fazer estas mesmas regras. Agora usando um indicador, o RSI ou IFR, como alguns conhecem. A ideia funciona para qualquer outro indicador, mas aqui quero apenas demonstrar como você deve de fato fazer.

Estando o indicador acima de 80 devo aguardar, esperando para entrar na VENDA, assim que ele for abaixo de 80, devo VENDER. Estando o indicador abaixo de 20 devo aguardar, esperando para entrar na COMPRA, assim que ele for acima de 20, devo COMPRAR.

Este tipo de regra é bem simples, e funcional, mas faltou definir o STOP da operação, ou a possibilidade de trailing stop. Então podemos definir uma regra para isto, usando outro indicador ou até mesmo o indicador de entrada. Novamente isto não importa, desde que a regra fique clara. Vamos então definir a regra baseado em uma media móvel, por exemplo a média de 20 períodos aritmética. Então a regra ficaria assim:

Estando comprado ou vendido, o STOP da operação irá ficar no preço da média móvel aritmética de 20.

Mas também você poderia mudar esta mesma regra, da seguinte maneira:

Estando comprado, caso o preço feche abaixo da média móvel aritmética de 20, a operação será encerrada. Estando vendido, caso o preço feche acima da média móvel aritmética de 20, a operação deverá ser encerrada.

Percebem como a coisa de fato deve ser feita ?!?! Não existe meio termo, aqui tem que ser tudo preto no branco, é ou não é, sem frescura ou firulas. Nada de ficar inventando moda, ou imaginando possibilidades.

Por conta disto, é que se torna necessário que você tenha o costume de utilizar o modelo desejado, para ser automatizado. Esta coisa de achar, imaginar, não tem lugar aqui. As regras aqui são rígidas, e devem ser seguidas a risca. Lembre-se: Você estará dizendo a uma calculadora, como efetuar o calculo. Não tem como dizer a ela, como ser parcial, tentando se ajustar as regras. Mesmo quando alguns dizem existir sistemas adaptativos. Estes na verdade, ainda assim seguem regras rígidas e muito bem definidas. O fato de que eles venham a se adaptar, por assim dizer, ao mercado, é apenas pelo fato de que dentro destas regras rígidas, colocamos algum tipo de erro que ele pode aceitar.

Esta questão sobre o sistema, aceitar um determinado nível de erro, a fim de se adaptar ao mercado. É de fato uma forma de você tornar o sistema um pouco subjetivo. Você começa a dizer a ele, que talvez, ele deva comprar ou vender. Mas este tipo de coisa, apesar de parecer muito linda de ser lida, escrita, ou mesmo divulgada. Torna o controle bastante mais complexo. Não pelo ponto de vista da programação, ou da matemática em si. Não. A complicação, se dá pelo fato de que, o operador, que irá supervisionar o EA, tenha um nível bastante elevado em termos de conhecimento de mercado, a fim de conseguir analisar as operações do EA, e assim saber se ele, EA, esta ou não fazendo besteira.

Para você de fato entender, como fazer o sistema ficar adaptativo. Vamos pegar e exemplo do uso da média exponencial de 9. Isto apenas para exemplificar. Mas dá para fazer isto em qualquer modelo, e adicionando qualquer tipo de regra, a fim de que ele ganhe algum nível de adaptabilidade. A regra de compra, ficaria mais ou menos assim:

Quando a barra fechar acima da média exponencial de 9, analise 5 barras anteriores e verifique se elas estão fazendo máximas mais baixas, caso isto esteja acontecendo não entre na operação.

O que acabamos de fazer, foi adicionar um nível de subjetividade matemática ao sistema. Aquele mesmo sistema, que antes era objetivo, onde se a barra fechasse acima da média compraríamos. Agora pode acontecer de não comprarmos. Já que se as máximas de 5 barras anteriores, estiverem fazendo preço cada vez mais baixo, pode indicar algum tipo de movimento, que para você não seria um bom ponto de entrada. Mas para analisar isto em tempo real, você terá que ser um operador experiente.

Notem, que mesmo fazendo com que o sistema passe a ter um certo nível de subjetividade, ainda assim, a regra foi definida de uma maneira bastante rígida. Mas ao olhar o EA funcionando, você irá imaginar, ou até mesmo ter a impressão, de que ele está se adaptando ao mercado. Quando na verdade, isto é apenas uma ilusão. Já que temos uma regra rígida definida, na forma de como ele de fato irá operar.

Algumas pessoas costumam usar programação de analise de dados, de forma a gerar estas mesmas regras. Quando esta programação é utilizada, começa a surgir pessoas dizendo, que o sistema começou a fazer uso de inteligência artificial.

Com a minha experiência em programação, digo, e afirmo, que isto é pura tolice. Tudo que de fato esta sendo feito, é que ao invés de definirmos uma regra baseada na observação, e experiência de mercado. Usamos um algoritmo, para gerar curvas matemáticas, a fim de gerar um grafo de possibilidades, baseado no numero de ocorrências de um determinado padrão.

Dentro da curva de possibilidades, você fará uso de determinados valores, dentro de uma determinada faixa, que irá criar o mesmo tipo de regra rígida. Mas agora baseado, em uma curva de possibilidades, e não na observação e experiência de mercado. O problema deste tipo de sistema, é que ele nunca se adequa, de maneira rápida ao mercado. Já que sempre iremos estar tratando com uma máquina, e como todos sabem, ou deveriam saber, elas de fato não pensam. São apenas calculadoras, e não conseguem criar absolutamente nada, se não forem programadas para isto.

Muito bem, agora que você provavelmente entendeu, até onde podemos de fato ir. Que não adianta ficar imaginando, ou tentando bolar um sistema mágico. Pois no final, quem irá executar de fato a coisa, é uma calculadora, e por conta disto, temos que definir de maneira clara e objetiva, o que deverá de fato ser feito. Podemos passar para a próxima etapa.


Transformando a ideia em código.

Muitos agora, vão começar a tremer nas bases. Imaginando que transformar uma ideia em código, é algo muito complicado, ou possível ser feito, por apenas alguns de auto nível de especialização, mestre ou doutores em ciência da programação, ou algo do tipo. Besteira, como foi dito no começo desta sequencia. Qualquer um, e digo novamente, qualquer um, que tenha bom senso, cautela, disciplina, curiosidade e interesse, irá conseguir de fato, tornar a sua ideia em código. Desde que a ideia, tenha sido colocada, de uma maneira clara, e bastante objetiva no papel, é possível de fato, criar a coisa. Se você não conseguiu definir claramente a ideia, que você pretende criar, ou desenvolver. Volte e tente colocar ela no papel, de maneira que seja bem clara, e de preferencia simples.

Então vamos ver, como tornar a ideia em código. Para fazer isto, você precisa, caso a ideia tenha sido muito resumida, dar a ela uma descrição. Literalmente, descreva o passo a passo, de modo como a coisa irá ir se desenrolando. Isto conforme as coisas vão se desenvolvendo. Quanto mais passos você colocar a fim de descrever a ideia. Melhor.

Para você saber se a descrição, esta definitivamente adequada. Você deverá conseguir preencher o seguinte fluxograma:

Figura 01

Figura 01 - Fluxograma de execução

Sei que muitos vão olhar e achar esta imagem, da figura 01, bastante estranha. E que nunca, de fato, viram ninguém usando tal coisa. Ainda mais programadores.

Pois bem, a figura 01, é um fluxograma. Muito, mas muito utilizado para programação. Além de ser usado para outras coisas também. Mas já que estamos tratando de programação, vamos focar apenas neste ponto. O que temos na figura 01, é a forma, como o mecanismo deverá funcionar. Não importa se ele é manual ou automático. Todo e qualquer programa, tem na figura 01, o seu mapa da mina. Se você conseguir preencher, corretamente cada um dos pontos, irá de fato conseguir criar o programa, de forma que ele funcionará perfeitamente. Tal fluxograma, funciona baseado em fractais.

Mas como assim ?!?! Como um fluxograma, pode ser um fractal 😵😱 ?!?! E representar a forma, como terei que programar algo ?!?! Não entendi. Pois bem. Vamos então entender, como esta figura 01, se torna um fractal, a ponto de conseguir construir, qualquer coisa. Não importa o qual complexa a coisa seja. Se poder ser representada dentro desta figura, ela pode ser construída.

Todo processo se inicia em P1. Daí passamos por algum tipo de decisão, este é o ponto P2. Não importa, qual seja a decisão. Iremos tomar sempre um dos caminhos, seja o que vai para o ponto P3. Seja o que vai para o ponto P4. Quem escolhe o caminho a ser tomado, é o ponto P2.

Muito bem, tanto o ponto P3, quanto o ponto P4, podem representar uma imagem igual, esta da figura 01, onde o processo irá se repetir, e se repetir, até que em algum momento, ele irá terminar. Mas para facilitar a explicação, vamos supor que tanto o ponto P3, quanto o ponto P4, são apenas algum tipo de calculo simples, ou alguma chamada, que logo irá retornar. No final, ambos irão convergir para P5.

Aqui tomamos uma nova decisão, baseada no que P3, ou P4 nos reportou. Dependendo do que P5 decida, podemos voltar ao ponto P2, ou ir para o ponto P6. Se formos para P2, o processo irá se repetir novamente, ou seja temos um sistema de retroalimentação. Agora se formos para P6, o processo termina.

Por conta deste fato, de sairmos de P1, e chegarmos a P6. Temos um fluxo de mensagens, ou de execução. Este mesmo fluxo, pode acontecer também em P3, e P4. Se isto ocorrer, um fractal acontecerá, dentro de P3, ou P4. Mas não acontecerá em nenhum outro ponto do fluxograma.

Voltando a programação. Em MQL5, os pontos P2 e P5, podem ser substituídos por coisas do tipo, IF ELSE ou SWITCH CASE. Por conta disto, que você pode conseguir criar algo, sem de fato saber programar. Basta que você de fato, consiga colocar a sua ideia, dentro deste fluxograma, de modo que ela seja, devidamente explicada e corretamente descrita.

O ponto P1, pode ser uma conjunto de argumentos, que uma função ou procedimento recebem. Ou pode ser o ponto, onde você inicia a execução do código, ao colocar ele no gráfico. Isto não importa. O importante é que você entenda, que no ponto P1, é onde todos os valores iniciais e necessários, são colocados.

O Ponto P6, pode ser um comando RETURN, ou alguma outra coisa. Mas que irá nos dar algum tipo de resposta, com base nos valores que colocamos em P1.

Faltaram os pontos P3, e P4, mas como informei, eles podem ser outro fluxograma, que mostra como as coisas deverão ser trabalhas. Mas também podem ser, uma simples fatoração, onde os valores que vieram de P1, são processados. De uma forma ou de outra, a ideia aqui é, você conseguir descrever o seu sistema, do qual você deseja automatizar, consiga ser escrito dentro desta figura 01.

Para o conhecimento ser melhor assimilado, vamos ver alguns exemplos. Começando com o da média móvel exponencial de 9. Vamos transformar a descrição do operacional, em uma forma programável. Ou seja colocar ele no fluxograma, da seguinte forma, observem:

Exemplo 01, compra ou venda usando a media de 9:

  • Em P1, iremos informar o valor da média móvel, e o preço de fechamento da barra;
  • Em P2, verificamos se o preço fechou acima ou abaixo do valor da média;
  • Se o preço fechou acima, iremos para P4, onde efetuaremos uma chamada de compra;
  • Se o preço fechou abaixo, iremos para P3, onde efetuaremos uma chamada de venda;
  • Efetuada a compra ou venda, iremos para P5;
  • Se o EA é automático, iremos retorna a P2, onde iremos novamente, na próxima barra, verificar todo o procedimento novamente, se o EA é manual, iremos para P6, já que não haverá mais nada a se fazer;
Exemplo 02, Trailing Stop e Breakeven:

  • Em P1, informamos o valor de lucro, para indicar o movimento e o preço atual da barra;
  • Em P2, verificamos se a posição já deu o valor de lucro que queremos, se o valor foi alcançado, iremos executar P3, se não iremos executar P4;
  • Em P3, entramos em um novo fluxograma, onde em P1, informamos o valor onde o preço de stop se encontra;
  • Neste novo fluxograma, em P2, verificamos se já ocorreu o breakeven, se não executaremos P3, se sim P4;
  • No caso de não termos executado o breakeven ainda, iremos executa-lo agora, e o processo vai para P5 e P6, já que não existe mais nada a ser feito, então retornaremos ao fluxograma anterior, onde iremos para P5 e P6, aguardando uma nova chamada ao procedimento de trailing stop e breakeven;
  • Vamos voltar agora em P2, do fluxograma aninhado, onde foi verificado se o breakeven havia ocorrido, neste caso sim, então iremos executar P4, que seria o trailing stop;
  • Quando P4, for chamado ele irá abrir um novo fluxograma, onde iremos verificar, se o preço pode de fato ser movido, e isto pode ser feito de diversas formas entrando em novos fluxogramas ... mas no final iremos retornar ao fluxograma mais externo, e sairemos no procedimento, aguardando uma nova chamada.

Exemplo 03, operando por RSI ou IFR:

Aqui o fluxograma, será quase igual ao do exemplo 01, mas vamos ver mesmo assim, para que você de fato consiga entender.

  • Em P1, capturamos o valor que está no indicador;
  • Em P2, verificamos se ele está acima de 80, ou se está abaixo de 20 ( Nota: Estes valores são arbitrários, apenas para a explicação );
  • Se for maior que 80, executaremos P3, onde iremos vender;
  • Se for abaixo de 20, executaremos P4, onde iremos comprar;
  • De uma forma ou de outra, chegaremos a P5, caso o sistema seja automático retornaremos a P2, caso contrário iremos para P6, já que não há nada a ser fazer.

Viram com a coisa funciona 😁 ?!?! Se você conseguir fazer isto, estará no caminho certo. Conseguirá criar de fato um EA automático.

Muito bem, você já deve estar impaciente com tanta explicação. Deve estar ficando alucinado dizendo: Eu quero ver é código. Cadê o código ?!?! Será que não vamos ter código neste artigo 🤔 ?!?! Calma, meu caro. Calma. O código é a parte fácil da coisa. É preciso que você entenda, como chegar no código. A ideia, é demonstrar como você, pode criar o seu próprio EA automático. É justamente isto que quero mostrar. Que qualquer um, programador profissional ou não, consegue criar um EA, e utilizar o modelo que ele achar mais adequado. Sem precisar ficar recorrendo, a uma programação maluca. Totalmente insegura, sem nenhum tipo de critério. Correndo riscos desnecessários.

Então vamos com calma. Logo, logo, chegaremos ao código. Onde irei demonstrar como criar o EA automático. Mas primeiro, você precisa saber como usar o sistema. Caso contrário, ficará apenas com o código, que irei mostrar. Sendo que o sistema consegue ser bem mais amplo. Lhe dando muito mais possibilidades, do que estarei mostrando aqui. Nesta pequena sequencia, onde passo um pouco do meu conhecimento.


Entendendo como se faz a automação

Se você conseguiu de fato entender o tópico anterior. Podemos passar para a parte do código em si. Mas isto não será feito neste artigo. Já que pretendo dar um explicação, dos detalhes de como fazer de fato, a montagem do código. Esta parte, terá uma explicação bastante extensa. Visto o fato, de que não estarei propondo, o uso de um modelo especifico.

Visto que a proposta da sequencia, não é mostrar como se cria um modelo especifico de operacional, mas sim mostrar como você, entusiasta, pode conseguir tornar um modelo, já testado e que está sendo operado manualmente, em um sistema automático. Irei mostrar no restante deste artigo, como trabalhar com o sistema de classes utilizados para criar o EA. Mas a parte da implementação de fato, irá ficar para o próximo artigo, pelos motivos acima descritos.

O EA que demonstrei nesta sequencia. Traz consigo uma pequena lista de funções, que no geral irá conseguir cobrir quase 100% dos casos. É verdade, que existirá alguns casos especiais, do qual ele não irá conseguir cobrir. Tais casos precisará de adições ao código. Mas estes são casos bastante raros. Mas já que a grande maioria, de fato irá trabalhar com indicadores, o sistema de classes que apresentei, irá conseguir fazer com que você, não precise digitar muito mais código. Talvez seja necessário, adicionar algumas mensagens informando, o que o EA de fato está fazendo. Já que diferente, do que alguns pensam, não é de fato necessário ter o indicador no gráfico da plataforma, para que o EA consiga os dados e valores do indicador. Ele pode sim, estar no gráfico, para que o supervisor, possa acompanhar as operações. Mas para o EA, isto não faz a menor das diferenças.

Um outro detalhe, é que você, caso precise adicionar algum código extra, para conseguir cobrir algum modelo especifico. O faça dentro do sistema de classes, e tente manter as coisas, sempre dentro dos conceitos de encapsulamento e herança, a fim de não provocar quebra, na segurança do código, ou mesmo algum tipo de problema, pelo fato de que, o compilador, não consiga entender o código que deverá ser gerado.

Como expliquei em artigos anteriores. Preste sempre bastante atenção, as mensagens de alerta, que o compilador gera. Não as ignore, salvo na fase de testes, onde você provavelmente irá estar criando algo, que não será definitivo. Mas uma vez que o código passe a se tornar mais definitivo. Não ignore de maneira alguma, nenhuma das mensagens do compilador, mesmo que o código tenha sido compilado. O fato de o compilador gerar alguma mensagem de alerta, faz com que o código, não seja totalmente seguro, ou tenha uma nível de estabilidade, e robustez adequado, para ser utilizado de maneira 100% automática. Lembre-se deste detalhe, quando for modificar o sistema proposto aqui.

Então vamos ver, como o sistema se encontra estruturado, para ser operado de forma manual. Isto pode ser visto na figura 02.

Figura 02

Figura 02 - Modo de operação manual

Nesta figura 02, você pode perceber, que por mais que pareça, que de fato estamos lidando diretamente com o EA, ou com alguma de suas classes. Na verdade isto não está acontecendo, você como operador, estará sim, tratando diretamente com a plataforma, o EA irá responder aos comandos dados pela plataforma, e não os comando dados por você.

É bastante importante, que isto fique claro em sua mente, pois muita gente, acha que quando está operando pelo EA, estará se comunicando diretamente com ele. Quando na verdade, você está se comunicando com a plataforma, e esta passa os comandos para o EA. Isto já foi visto, e explicado nos artigos anteriores, desta sequencia. Mas antes de você de fato automatizar o EA, é preciso que esta figura 02, seja bastante compreendida por você. É bem verdade, que dependendo do programador que tenha desenvolvido o sistema, esta irá ter uma aparência ligeiramente diferente. Mas o principio de funcionamento, será sempre o mesmo, ou seja, você nunca de fato entra em contato com o EA, seu contato sempre será com a plataforma.

Entendendo isto, você pode pensar em um local, onde colocar o sistema de gatilho. Lembrando que o que é visto na figura 02, é a estrutura de arquivos, e não de fato a estrutura interna das classes. Este é também um ponto a ser observado, caso você pretenda modificar o sistema de alguma forma. Notem que estou deixando as coisas, o mais esclarecidas quanto for possível. Isto para que qualquer modificação, seja feita de maneira, que o sistema não se torne instável ou pior, que ele venha a aparentemente ser confiável, quando na verdade, ele será uma bomba relógio, prestes a explodir.

Vamos então pensar um pouco, sobre como o sistema funciona: Você como operador, informa a plataforma MetaTrader 5, que deseja comprar ou vender, em um dado preço. Isto é feito via interação com a classe C_Mouse.

Esta, está ligada ao EA, que ao receber eventos de movimentação do mouse, que diz a classe C_Mouse, onde posicionar a linha de preço. Uma vez que um evento clique ocorra, este ponto é passado da classe C_Mouse, para o EA, que então analisa se o operador está comprando ou vendendo. Desta forma, envia um pedido para dentro da classe C_Manager, que irá verificar, as condições tanto via a classe C_ControlOfTime. Quando aos parâmetros de criação da classe C_Manager, onde, dependendo destes mesmo parâmetros, o pedido poderá ser aceito, ou negado.

Se o pedido for aceito, é enviado um comando adequado para a classe C_Orders. Esta por sua vez, envia um requerimento para o servidor de negociação. Quando o servidor responder, ao requerimento, um novo evento é disparado na plataforma MetaTrader 5, que irá informar ao EA, sobre alguma coisa que ocorreu no servidor. Isto via evento OnTradeTransaction.

O EA irá analisar esta informação, e dependendo do contexto da mesma, irá informar a classe C_Manager. Assim como a classe C_Orders, o resultado do requerimento feito pelo operador. Desta maneira uma posição será aberta, modificada ou fechada. Tudo isto, usando a interação com o código presente no EA. Mas pode acontecer do operador, usar a caixa de ferramentas para encerrar, ou modificar a ordem ou posição aberta, ou colocada pelo EA no servidor. Se isto acontecer, a plataforma MetaTrader 5, irá gerar um evento via OnTradeTransaction, informando a mudança feita pelo operador. Assim o EA irá repassar, caso seja algo pertinente, a informação a classe C_Manager, de forma que ela fique ciente do acontecido.

Entendendo este funcionamento, você logo imagina que o sistema de automação, deveria ficar no lugar da classe C_Mouse. Já que ela de certa forma, é que inicializa todo o sistema de gatilho. Sim é verdade. Já que a classe C_Mouse, irá ser removida do sistema, quando ele for automatizado. No entanto, colocar o sistema de automação no lugar da classe C_Mouse, não é bem o que irá acontecer. Já que a C_Mouse, na verdade estará sempre se comunicando com o EA, e este é que irá gerar as chamadas para a classe C_Manager.

De certa forma, a classe C_Mouse, poderia até mesmo fazer algum tipo de ligação entre o EA e a classe C_Manager. Mas já que quando o sistema começou a ser projetado, já havia o conhecimento de que a classe C_Mouse, em algum momento seria retirada do sistema, esta foi colocada, de uma maneira meio que de lado. Podendo ser revolvida a qualquer momento, e isto de fato acontece neste momento. Onde a automação estará sendo feita.

Ainda assim, temos que lidar com as questões envolvidas pelo disparo de eventos, vindos do operador ao interagir com a plataforma MetaTrader 5. Mas neste caso, o EA irá simplesmente ignorar qualquer tipo de pedido. Ele apenas irá informar a classe C_Manager, qualquer coisa relacionada os sistema de ordens, a fim de que ela fique ciente do que o operador fez. Mas isto será melhor compreendido, no próximo artigo, onde de fato você verá a automação sendo feita.


Conclusão

Aqui neste artigo, mostrei como você faz uso do fluxograma, de modo a criar as regras a serem usadas. Este tipo de coisa tem aparecido bastante, sempre que o assunto é inteligência artificial. Mas a ideia não é nova, muito pelo contrário. No entanto, vejo muitos falando e expressando, isto como sendo algo recente. Mas de qualquer maneira, fica o conhecimento demonstrado aqui. Isto tudo que foi exposto neste artigo, é apenas uma pequena fração do que se pode de fato fazer.

Então estude com calma o conteúdo deste artigo, e dos demais a fim de compreender, cada um dos passos que mencionados acima. Pois no próximo artigo, iremos de fato ver o sistema operando de forma automática, como se fosse algum tipo de mágica. Mas tudo baseado, no que foi explicado aqui. Então, compreender adequadamente este conteúdo, irá lhe ajudar a compreender o final da sequencia.

Perceptron Multicamadas e o Algoritmo Backpropagation (Parte 3): Integrando ao Testador de estratégias - Visão Geral (I) Perceptron Multicamadas e o Algoritmo Backpropagation (Parte 3): Integrando ao Testador de estratégias - Visão Geral (I)
O perceptron multicamadas é uma evolução do perceptron simples, capaz de resolver problemas não linearmente separáveis. Juntamente com o algoritmo backpropagation, é possível treinar essa rede neural de forma eficiente. Na terceira parte da série sobre perceptron multicamadas e backpropagation, vamos mostrar como integrar essa técnica ao testador de estratégias. Essa integração permitirá a utilização de análise de dados complexos e melhores decisões para otimizar as estratégias de negociação. Nesta visão geral, discutiremos as vantagens e os desafios da implementação desta técnica.
Ciência de Dados e Aprendizado de Máquina (Parte 07): Regressão Polinomial Ciência de Dados e Aprendizado de Máquina (Parte 07): Regressão Polinomial
Ao contrário da regressão linear, a regressão polinomial é um modelo flexível destinado a performar melhor em tarefas que o modelo de regressão linear não poderia lidar. Vamos descobrir como fazer modelos polinomiais em MQL5 e tirar algo positivo disso.
Como trabalhar com linhas usando MQL5 Como trabalhar com linhas usando MQL5
Neste artigo, falaremos sobre como trabalhar com os gráficos de linhas mais importantes, como linhas de tendência, suporte e resistência, usando as ferramentas da linguagem MQL5.
Aprendendo a construindo um Expert Advisor que opera de forma automática (Parte 12): Automação (IV) Aprendendo a construindo um Expert Advisor que opera de forma automática (Parte 12): Automação (IV)
Se você acha que sistemas automáticos são simples, significa que você ainda não entendeu de fato o que se deve criar. Vamos aqui ver um problema que mata muito Expert Advisor. O disparo indiscriminado de ordens e uma possível solução para este problema.