Wednesday 25 April 2018

Build your own automated trading system


MetaTrader 5 - Exemplos Como Fazer um Robô de Negociação em nenhum momento Para Fazer um Robô de Negociação, Você Precisa de um Sistema de Negociação A negociação em mercados financeiros envolve muitos riscos, incluindo o mais crítico - o risco de tomar uma decisão comercial errada. O sonho de todo comerciante é encontrar um robô comercial. que está sempre em boa forma e não está sujeito a fraquezas humanas - medo, ganância e impaciência. Cada recém-chegado quer obter ou criar um sistema de negociação claro e estrito que possa ser apresentado na forma de algoritmos e se livrar completamente das operações de rotina. É possível Um sistema de negociação é uma condição necessária para entrar no mercado e esse sistema deve ser lucrativo, é claro. Quando os recém-chegados chegam ao mercado, geralmente ficam sobrecarregados pela grande massa de informações difíceis de entender. Os fóruns de livros e traders podem fornecer alguma ajuda nesse caso. Infelizmente, nem todos os autores são comerciantes bem-sucedidos e nem todos os traders bem-sucedidos escrevem livros. Muitos recursos especiais da Web são criados apenas para gerar lucro para seus proprietários, pois é muito mais difícil negociar seu próprio dinheiro do que emitir previsões e ensinar sistemas de negociação. Cada comerciante deve passar de forma independente todos os estágios da criação de um sistema de negociação. Há um ditado popular que não importa qual sistema você usa para negociação, o principal é que você deve realmente negociar de acordo com esse sistema. Caso contrário, a negociação no mercado se transforma em uma aposta com um resultado previsível. Acredita-se que a negociação de robôs e Forex Forex mercado tem uma grande liquidez. Além disso, permite negociar 24 horas por dia, ao contrário de muitos outros mercados. Portanto, muitos comerciantes tentam fazer robôs de negociação especialmente para o mercado Forex, uma vez que oferece um grande número de instrumentos de negociação. No entanto, os céticos afirmam que todos os pares de moedas estão fortemente correlacionados entre si, proporcionando uma volatilidade muito baixa no mercado. Mas seus oponentes respondem que cada par de moedas tem suas próprias características e que a baixa volatilidade é compensada por uma grande alavancagem. Em qualquer caso, os instrumentos de Forex são atraentes para a criação de robôs de negociação e a maioria dos defensores do comércio automatizado aprimora suas habilidades em pares de moedas. Os terminais de negociação MetaTrader 4 e MetaTrader 5 são especialmente projetados para desenvolver facilmente sistemas de negociação automatizados, mas ao mesmo tempo sua interface também é conveniente para negociação manual. Como começar a fazer um robô de negociação Existem muitas abordagens para construir um sistema de negociação automatizado. Vamos descrever apenas alguns dos principais. A primeira abordagem baseia-se em matemática. Um desenvolvedor tenta criar uma espécie de equação que considere muitos fatores. Essa abordagem baseia-se na firme crença de que os movimentos de preços são gerenciados por um modelo que pode ser encontrado usando dados históricos disponíveis. Na maioria dos casos, os seguidores de tal abordagem sabem muito de matemática, mas não sabem nada sobre / não estão interessados ​​no mercado. O mercado é uma abstração pura, um tipo de jogo intelectual para eles. Essa abordagem geralmente leva a muitos anos de estudo e desenvolvimento, enquanto um resultado definido na forma de um sistema de negociação automatizado em funcionamento não é tão importante. A segunda abordagem é baseada no estudo das leis de mercado. Nenhuma tentativa é feita para entender por que o preço sobe ou desce quando vários números de análise técnica aparecem em um gráfico. A vantagem dessa abordagem é que ela não requer nenhum conhecimento especial de matemática e não faz suposições sobre a força motriz do mercado. É mais claro e conveniente quando se estuda negociação. É mais popular entre os comerciantes que receberam reconhecimento universal. A desvantagem da abordagem é a necessidade de rastrear constantemente todos os símbolos necessários. Mais cedo ou mais tarde, um trader começa a considerar a automação dos processos de negociação e a questão mais considerável aparece nessa complexidade de formalização das regras de negociação ao tentar expressá-las na forma de algoritmos. Em alguns casos, os operadores que tentam encomendar um robô comercial não podem descrever as regras de negociação e encontrar um terreno comum com os programadores. A terceira abordagem é baseada na tentativa de criar uma caixa preta baseada em redes neurais com o uso de ferramentas prontas amplamente disponíveis em softwares especiais e pacotes de matemática. A criação de um sistema de negociação automatizado com os elementos da inteligência artificial é uma tarefa empolgante e desafiadora, mesmo para os recém-chegados, já que não requer conhecimento profundo em matemática nem experiência em programação - tudo é feito usando recursos visuais. Um trader deve conhecer os fundamentos dos indicadores técnicos, possuir a capacidade de preparar dados de preço necessários e experiência em algum pacote definido para trabalhar com redes neurais. A principal desvantagem dessa abordagem é que um robô de negociação obtido usando essas ferramentas especializadas para trabalhar com redes neurais é, na verdade, uma caixa preta. Os comerciantes não conhecem seus princípios de funcionamento e, geralmente, é impossível prever qual fase do mercado será a mais problemática para o robô. Os programadores geralmente escolhem a quarta abordagem: eles começam a fazer um robô de negociação desde o começo sem gastar tempo para negociação manual. Por que negociar manualmente Você pode fazer um robô passar alguns meses e colher os benefícios de seus esforços. Mas sem dores, sem ganhos. Na maioria dos casos, os programadores começam a criar toda a infraestrutura necessária usando uma linguagem de programação familiar, em vez de apenas obter um robô de negociação obtendo e processando dados de preço, representação visual de gráficos e indicadores, meios personalizados de testar estratégias em dados históricos e assim por diante. Eles ganham muita experiência no processo. Mas na maioria dos casos, essa experiência não os aproxima da meta final de criação de um sistema de negociação automatizado. E mesmo que um robô comercial seja criado, não há garantias de que ele será lucrativo. E se um programador quiser escrever outro sistema de negociação? A reestruturação profunda e os novos erros de programação são inevitáveis. Há também a quinta abordagem de compra de um sistema de negociação pronto na forma de um robô comercial. Neste caso, um comerciante atua como um operador ou um sintonizador. Essa abordagem economiza muito tempo (não é necessário aprender muitas coisas novas) e permite que os operadores entrem rapidamente no mundo da negociação automatizada. A principal desvantagem desta abordagem decorre de suas vantagens: você não conhece os princípios de operação de seu robô comercial e sua estrutura. E mesmo que um vendedor forneça uma descrição detalhada do sistema de negociação implementado, você nunca terá certeza disso. No entanto, nenhuma das abordagens mencionadas pode lhe dar garantia absoluta, exceto um depósito bancário. Mas essa não é uma solução muito adequada para pessoas interessadas em negociar no mercado e maneiras de aumentar seus ativos privados. Qual é a melhor abordagem para o comércio automatizado para um comerciante Cada uma das cinco abordagens descritas tem suas vantagens e corresponde a algum tipo definido de comerciante. É improvável que você escolha a primeira abordagem (descrição analítica do mercado) sem um bom histórico matemático. É igualmente improvável que você comece a fazer robôs comerciais baseados em redes neurais. No entanto, essas duas abordagens são muito estimulantes e proporcionam um bom exercício intelectual. Abaixo, discutiremos apenas a segunda abordagem, que já é considerada a clássica. Essa é a abordagem geralmente escolhida pelos novos seguidores da negociação automatizada, já que a análise técnica continua sendo a principal área de conhecimento ao aprender noções básicas de negociação. Outra vantagem da segunda abordagem é que depois de gastar algum tempo para negociação manual e obter o senso de mercado, você já terá uma boa compreensão das ferramentas de análise técnica. Além disso, você poderá programar estratégias de negociação ou criar redes neurais em um nível superior. Os Primeiros Passos para Fazer um Robô de Negociação Para criar um sistema de negociação automatizado, você precisa de habilidades de programação e conhecimento de todas as complexidades do processamento de solicitações comerciais. Mas primeiro você pode começar com os robôs de negociação Expert Advisors prontos a partir da biblioteca gratuita Code Base. Faça o download de qualquer Expert Advisor (robô de negociação) e lance-o nos terminais de cliente do Strategy Tester do MetaTrader 4 ou MetaTrader 5. Selecione um intervalo de histórico mostrando uma tendência forte e um intervalo com um plano. Execute a otimização de um parâmetro de entrada do Expert Advisor e examine suas diferenças nesses dois intervalos. Inicie um Expert Advisor com os parâmetros ideais para um plano em um intervalo de tendência e com os parâmetros ideais para uma tendência em um intervalo simples. Examine as diferenças nos resultados de negociação, distribuições de ofertas e outros parâmetros estatísticos. Como resultado, você saberá quanto o comportamento do seu sistema de negociação pode variar quando a situação do mercado mudar. Seria melhor tentar várias estratégias de negociação padrão usando esse método em diferentes partes da história e vários símbolos. Tal teste impede a instalação de um sistema de negociação para algum intervalo histórico definido e fornece uma melhor compreensão dos sistemas de tendência e de tendência contrária. O próximo passo seria criar sistemas de negociação mais complexos, baseados na combinação de sinais simples já existentes do MQL5 Wizard set. Você pode testar e desenvolver sua intuição comercial, selecionando sinais ruins de um sistema usando um filtro baseado em outro sistema sem meios de programação. O principal aqui é não superar demais. Quanto mais parâmetros de entrada um sistema de negociação tiver, mais fácil será o ajuste. Houve muitas discussões sobre as diferenças entre otimização e adaptação. Não há soluções amplamente aceitas aqui. Mas a visualização dos resultados de teste / otimização e seu próprio bom senso podem ajudá-lo. Aprenda a identificar os parâmetros de entrada mais críticos que afetam seu sistema de negociação de todo o conjunto de dados de entrada. Não preste muita atenção aos parâmetros secundários que levam tempo durante a otimização, mas não afetam a própria lógica do sistema. Lembre-se de que um bom sistema de negociação sempre demonstra um pequeno movimento livre de parâmetros secundários, mas não exibe uma volatilidade dramática no caso de mudanças de mercado insignificantes. Você pode gastar tanto tempo nesta fase, como desejar, até ter certeza de que pode entender qualquer estratégia de negociação examinando os resultados de teste e otimização. O conhecimento dos pontos fortes e fracos dos sistemas padrão permitirá que você esteja mais bem preparado ao criar seu próprio robô comercial. Programando um robô de negociação Suponha que você tenha aprendido / esteja aprendendo a linguagem de programação MQL4 ou MQL5 e agora você está pronto para escrever seu primeiro Expert Advisor para o terminal do cliente MetaTrader. Vários casos são possíveis aqui. Primeiro, você pode examinar vários robôs comerciais prontos descritos nos artigos para entender melhor as complexidades de programação. Segundo, você pode fazer perguntas sobre MQL4munity ou MQL5munity. se você tiver algum problema não resolvido. Participantes experientes da comunidade geralmente ajudam os recém-chegados a mostrar sincero interesse pelo assunto. Terceiro, você pode solicitar a melhoria ou o desenvolvimento de um Expert Advisor ou um indicador no serviço Jobs. se você não for capaz de escrever um programa necessário sozinho. Mas mesmo que você faça um pedido por meio do serviço freelancer, você deve ter alguma idéia sobre o teste de estratégia para encontrar um idioma comum com um desenvolvedor. Além disso, o conhecimento básico de uma linguagem de programação permite implementar pequenas correções e alterações no código depois que o trabalho já foi concluído. Afinal de contas, não seria muito conveniente chamar um programador para corrigir todos os pequenos problemas que você encontrar. Seria muito mais fácil e rápido corrigi-lo sozinho. Não é preciso reinventar a roda Como encontrar sua própria estratégia de negociação, ou pelo menos em que direção você deve focar sua busca Todos os comerciantes protegem seus próprios sistemas de negociação, se tiverem um. Todos os recém-chegados querem criar um sistema lucrativo ou obter um sistema pronto. Ao mesmo tempo, qualquer solução obtida parece ser muito simples em comparação com as idéias dos recém-chegados sobre um sistema de comércio genuíno. Os homens do exército em todo o mundo são propensos a níveis excessivos de sigilo. Há muitas piadas sobre isso, incluindo a seguinte: O segredo militar não está no que você está estudando - um oficial diz aos alunos das escolas militares -, mas no fato de que exatamente você está estudando isso. A situação dos sistemas de negociação é semelhante: a maioria dos traders usa idéias de negociação simples e conhecidas com pequenas modificações, por exemplo, adicionando o Trailing Stop ou confirmações de indicadores de tendência. Existem muitos fóruns de traders com acesso limitado, onde os participantes unem seus esforços para desenvolver ou melhorar alguns sistemas de negociação secretos. O mais interessante é que tais sistemas não contêm nada de especial. Normalmente, uma idéia bem conhecida (como o comércio com a tendência) é usada como base. Em seguida, ele é aperfeiçoado com alguns novos indicadores desconhecidos do público em geral. Portanto, você pode facilmente obter códigos-fonte de robôs comerciais e tentar usá-los corretamente com vários símbolos e cronogramas. Outro ditado popular pode ser mencionado aqui: Você não gosta de gatos Você simplesmente não sabe como cozinhá-los É difícil acreditar, mas a probabilidade de você desenvolver algo realmente novo é muito pequena. O principal aqui é criar um sistema usando os ingredientes disponíveis. Não pense que alguns gênios tenham acesso a alguns sistemas secretos dos laboratórios da NASA. Esse é o segredo do Graal. Apenas alguns poucos o farão Então, por que ninguém usa idéias comerciais, se eles estão literalmente dentro do alcance dos braços? A resposta provavelmente está na psicologia humana. O pessoal de muitos bancos e grandes fundos de investimento inclui comerciantes realizando acordos de acordo com regras estritas e dentro de volumes limitados. Mas, por alguns motivos, apenas alguns traders institucionais deixam suas empresas e começam a negociar usando seu próprio dinheiro. Acontece que você precisa não apenas de uma estratégia de negociação, mas também da disciplina de ferro para segui-la. Muitos comerciantes descobriram com pesar que eles também têm os mesmos problemas psicológicos descritos nos livros. Depois de perceber que o pior inimigo dos comerciantes são eles mesmos, um recém-chegado começa a pensar em fazer um robô comercial para eliminar um fardo psicológico. Embora eu me afaste ligeiramente do assunto, devo mencionar os lendários comerciantes de tartarugas que negociaram com sucesso em vários mercados no final do século XX. Leia Way of the Turtle e você verá que a coisa mais importante para um trader é uma autodisciplina e não um sistema secreto. Infelizmente, a maioria dos recém-chegados não será capaz de seguir uma estratégia lucrativa, mesmo que seja gratuita. O problema é que a maioria das estratégias de negociação perfeitamente ajustadas para negociação manual dificilmente pode ser formalizada e transcrita para uma linguagem de programação. As estratégias que podem ser facilmente formalizadas (por exemplo, aquelas que envolvem duas interseções de médias móveis) são muito simples e exigem muitos refinamentos e melhorias, para que possam ser usadas na prática. Assim, uma idéia simples é gradualmente complicada por uma abundância de parâmetros externos que impedem um robô de negociação de entradas falsas e erros claramente visíveis para um desenvolvedor. Um problema de otimização de robôs de negociação surge. Esse processo não deve se transformar em uma otimização excessiva e em um intervalo de histórico específico. Para resolver este problema, o teste direto usando os parâmetros do sistema obtidos foi implementado no terminal MetaTrader 5. Se os resultados dos testes forward não diferirem significativamente daqueles obtidos na seção de otimização, há uma probabilidade de que um robô comercial fique estável o suficiente por algum tempo após seu lançamento em uma conta de negociação. Um intervalo de tempo para a otimização de parâmetros e um valor real desse tempo dependem de um determinado sistema de negociação. Assim, a otimização de um robô de negociação antes de lançá-lo em uma conta de negociação lembra o desenrolar de um sling - quanto mais cuidadosamente desenrolamos um projétil do sling, mais ele voará e mais precisa será sua trajetória. Um robô de negociação completamente desenvolvido manterá um resultado positivo em uma conta de negociação por um tempo maior do que um robô de negociação obtido como resultado de um ajuste. Podemos dizer que o Graal é uma idéia de trabalho e ajuste correto de parâmetros realizados de tempos em tempos nos momentos de mudanças de condições de mercado. Isto pode ser ilustrado pelos resultados do Campeonato de Negociação Automatizada, que já existe há muitos anos. Os Expert Advisors enviados por todos os participantes passam por testes automáticos no intervalo de tempo de janeiro até o final de julho. O principal requisito para passar no teste automático é um lucro obtido por oito meses de testes. Mas menos de metade dos robôs de negociação admitidos para o Campeonato continuam lucrativos depois de meses de trabalho autônomo. Você também pode testar suas habilidades para fazer e ajustar seu robô de negociação para participar do Campeonato e obter os resultados dos testes avançados do seu Expert Advisor. Além disso, a participação é gratuita e os prêmios são impressionantes. Esperamos ver você lá Conclusão Os operadores intraday profissionais passam muitas horas sentados em seus computadores e esperando o momento certo para realizar um acordo. Claro, eles não podem estar em boa forma o tempo todo. A maioria dos comerciantes chega à conclusão de que suas ações violam suas próprias regras de negociação. Nem todos os sistemas de negociação podem ser completamente formalizados, mas mesmo esses sistemas podem, na maioria dos casos, adotar ferramentas adicionais, como indicadores, sistemas analíticos e filtros de sinais falsos. Nós não fazemos nenhuma recomendação especial aqui sobre o aprendizado de linguagens MQL4 ou MQL5, pois há muitos outros artigos úteis sobre esse assunto. O objetivo deste artigo foi fornecer uma idéia inicial sobre como começar a fazer seu robô comercial para os terminais MetaTrader 4 e MetaTrader 5. Esperamos que este artigo economize tempo para os recém-chegados e mostre a direção certa na difícil tarefa de desenvolver um sistema de negociação automatizado. Atenção: Todos os direitos a estes materiais são reservados a MQL5 Ltd. A cópia ou reimpressão destes materiais, total ou parcialmente, é proibida. MetaTrader 5 - Exemplos Crie seu próprio robô comercial em 6 etapas Mais uma vez sobre o Assistente MQL5 O mundo ao nosso redor está mudando rapidamente, e tentamos acompanhar isso. Não temos tempo para aprender algo novo, e essa é uma atitude normal de um ser humano normal. Os comerciantes são pessoas como todos os outros, eles querem obter o máximo de resultados para o mínimo de esforço. Especialmente para traders, o MetaEditor 5 oferece um maravilhoso MQL5 Wizard. Existem vários artigos descrevendo como criar um sistema de negociação automatizado usando o assistente, incluindo uma versão light do MQL5 Wizard for Dummies e uma versão dos desenvolvedores - MQL5 Wizard: New Version. Tudo parece bom - um robô comercial é criado em 5 cliques do mouse, você pode testá-lo no Strategy Tester e otimizar os parâmetros de um sistema de negociação, você pode deixar o robô resultante em sua conta sem a necessidade de fazer qualquer outra coisa manualmente . Mas o problema surge quando o desenvolvedor de um trader / MQL5 quer criar algo próprio, algo único que nunca foi descrito em lugar algum, e vai escrever seu próprio módulo de sinais de negociação. O trader abre a documentação do MQL5, acessa a Biblioteca Padrão e fica horrorizado ao ver. Cinco Classes Terríveis É verdade que o Assistente MQL5 simplifica muito a criação de Expert Advisors, mas primeiro você precisa aprender o que será usado como entrada para ele. Para criar automaticamente um Expert Advisor usando o Assistente MQL5, verifique se seus componentes aderem a cinco classes básicas da seção Classes Base de Expert Advisors: CExpertBase é uma classe base para quatro outras classes. CExpert é a classe de criação de um robô de negociação, é a classe que negocia. CExpertSignal é uma classe para criar um módulo de sinais de negociação que o artigo é sobre essa classe. CExpertTrailing é uma classe para rastrear uma Stop Loss de proteção. CExpertMoney é a classe de gerenciamento de dinheiro. Aqui está toda a força da grande e terrível abordagem que é chamada de programação orientada a objetos (OOP). Mas não tenha medo, agora quase todo mundo tem um celular com muita função, e quase ninguém sabe como funciona. Nós não precisamos estudar tudo isso, discutiremos apenas algumas funções da classe CExpertSignal. Neste artigo iremos percorrer as etapas de criação de um módulo de sinais de negociação. e você verá como fazer isso sem ter que aprender OOP ou as classes. Mas se você quiser, pode ir um pouco mais além. 1. Criando uma classe a partir do zero Não vamos alterar nenhum módulo existente de sinais de negociação para as nossas necessidades, porque é a maneira de ficar confuso. Portanto, nós simplesmente escreveremos nossa própria classe, mas primeiro usaremos o Navegador para criar uma nova pasta para armazenar nossos sinais em MQL5 / Include / Expert /. Clique com o botão direito do mouse na pasta que criamos, selecione Novo arquivo e crie uma nova classe para o nosso módulo de sinais de negociação. Preencha os campos: Nome da Classe - o nome da classe. Este será um módulo para gerar sinais na interseção de duas médias móveis, então vamos chamar de MACross. Nome base é a classe da qual nossa classe é derivada. E devemos derivar isso da classe base CExpertSignal. Clique em Concluir e um rascunho do nosso módulo está pronto. É todo o leste até agora. Nós só precisamos adicionar a declaração de inclusão ao arquivo resultante para que o compilador saiba onde encontrar a classe base CExpertSignal Verifique a classe resultante (ela deve estar livre de erros de compilação) e clique em F7. Não há erros e podemos seguir em frente. 2. Uma alça para o módulo Nossa classe está completamente vazia, não tem erros e podemos testá-la - vamos tentar criar um novo Expert Advisor no Assistente MQL5 com base nele. Chegamos ao passo de selecionar um módulo de sinais de negociação e ver. que o nosso módulo não está lá. E como pode estar lá? Nós não adicionamos nenhuma indicação para o Assistente MQL5 entender que nossa classe poderia ser algo útil. Vamos consertar isso. Se você olhar os módulos do pacote padrão, verá que cada um deles contém um cabeçalho no início do arquivo. Este é o identificador do módulo compilado de acordo com certas regras. E as regras são muito simples. Abra, por exemplo, o código-fonte do módulo de sinais de negociação baseados em AMA (consulte a descrição lógica em Sinais da Média Móvel Adaptável.) E execute o Assistente MQL5 escolhendo este módulo. Compare: O último bloco na alça refere-se aos parâmetros do módulo, a primeira linha contém o nome do módulo a ser exibido no Assistente MQL5. Como você pode ver, não há nada complicado. Assim, o identificador de cada módulo contém as seguintes entradas: Título - o nome do módulo a ser mostrado no Assistente MQL5. Type - a versão do módulo de sinais. Deve sempre ser SignalAdvanced. Nome - o nome do módulo após ele ser selecionado no Assistente MQL5 e é usado em comentários para descrever parâmetros internos do Expert Advisor gerado (preferencialmente especificado). ShortName - um prefixo para nomeação automática de parâmetros externos no Expert Advisor gerado (na forma de SignalltShortNamegtltParameterNamegt). Classe - o nome do, que está contido no módulo. Página - um parâmetro para obter ajuda para este módulo (somente para módulos da entrega padrão). Em seguida vem a descrição dos parâmetros na forma de Parameterlistofvalues, na qual o seguinte é especificado (separado por vírgula): O nome da função para definir o valor do parâmetro ao iniciar o Expert Advisor. O tipo de parâmetro pode ser enumeração. O valor padrão para o parâmetro, ou seja, o valor que será definido para o parâmetro, se você não alterá-lo no Assistente MQL5. Descrição do parâmetro, que você vê quando inicia o Expert Advisor gerado no Assistente MQL5. Agora, sabendo de tudo isso, vamos criar a alça do nosso módulo de sinais de negociação. Então, estamos escrevendo um módulo para obter sinais de negociação na intersecção de duas médias móveis. Precisamos definir pelo menos quatro parâmetros externos: FastPeriod - o período da média móvel rápida FastMethod - o tipo de suavização da média móvel rápida SlowPeriod - o período da média móvel lenta SlowMethod - o tipo de suavização da média móvel lenta Você também pode adicionar uma mudança e o tipo de preços para calcular cada uma das médias móveis, mas isso não muda nada fundamentalmente. Portanto, a versão atual é a seguinte: O manipulador do módulo está pronto e descrevemos o seguinte: O nome exibido no Assistente MQL5 - Sinais na interseção de duas médias móveis. Quatro parâmetros externos para configurar os sinais de negociação. FastPeriod - o período da média móvel rápida com o valor padrão de 13. FastMethod - o tipo de suavização da média móvel rápida, suavização simples por padrão. SlowPeriod - o período da média móvel lenta com o valor padrão de 21. SlowMethod - o tipo de suavização da média móvel lenta, suavização simples por padrão. Salve as alterações e compile. Não deve haver erros. Execute o Assistente MQL5 para verificar. Você vê, nosso módulo agora está disponível para seleção e mostra todos os nossos parâmetros Parabéns, nosso módulo de sinal de negociação está ótimo agora 3. Métodos para Configurar Parâmetros Agora é hora de trabalhar com os parâmetros externos. Como o nosso módulo de negociação é representado pela classe MACross, seus parâmetros devem ser armazenados na mesma classe que os membros privados. Vamos adicionar quatro linhas (iguais ao número de parâmetros) à declaração da classe. Nós já descrevemos o parâmetro no handle e sabemos o seguinte: Mas como os valores dos parâmetros externos do módulo aparecem nos membros apropriados da nossa classe MACross? Tudo muito simples, você só precisa declarar métodos públicos de mesmo nome. na classe, a saber, adicionar quatro linhas à seção pública: Quando você gera um Expert Advisor com base nesse módulo usando o Assistente MQL5 e o executa no gráfico, esses quatro métodos são chamados automaticamente ao inicializar o Expert Advisor. Então, aqui está uma regra simples: A regra de criação de parâmetros no módulo - para cada parâmetro que declaramos no identificador, devemos criar um membro privado na classe para armazenar seu valor e um membro público para definir um valor para ele . O nome do método deve corresponder ao nome do parâmetro. E o último momento é definir valores padrão para nossos parâmetros que serão usados ​​caso os métodos de configuração de valor não sejam chamados. Cada variável declarada ou membro da classe deve ser inicializada. Essa técnica permite evitar muitos erros difíceis de encontrar. Para a inicialização automática, o mais adequado é o construtor de classe, é sempre o primeiro a ser chamado ao criar um objeto. Para valores padrão, usaremos aqueles escritos no manipulador do módulo. Aqui os membros da turma são inicializados usando a lista de inicialização. Como você pode ver, ainda não usamos indicadores de média móvel. Encontramos uma regra simples - como muitos parâmetros são declarados no handle do módulo, muitos métodos e membros devem estar na classe que implementa o módulo. Não há nada complicado No entanto, não se esqueça de definir valores padrão de parâmetros no construtor. 4. Verifique a exatidão dos parâmetros de entrada Nós criamos parâmetros para o nosso módulo de negociação, métodos escritos para definir valores para eles, e agora vem a próxima fase importante - a precisão dos parâmetros deve ser verificada. No nosso caso, devemos verificar os períodos de médias móveis e o tipo de suavização para seu cálculo. Para este propósito, você deve escrever seu próprio método ValidationSettings () na classe. Este método é definido na classe pai CExpertBase. e em todos os seus filhos é obrigatoriamente redefinido. Mas se você não sabe nada sobre programação orientada a objetos, lembre-se - em nossa classe, devemos escrever a função ValidationSettings (), que não requer parâmetros e retorna true ou false. Como você pode ver, na parte pública da classe MACross incluímos a declaração do método ValidationSettings () e, em seguida, adicionamos o corpo do método no seguinte formato: Primeiro vem o tipo de retorno, o nome da classe e o operador de resolução do escopo. e tudo isso é seguido pelo nome do método declarado anteriormente. Não se esqueça de que o nome e o tipo de parâmetros devem corresponder na declaração e na descrição do método da classe. No entanto, o compilador irá avisá-lo de tal erro. Observe que primeiro o método da classe base é chamado e, em seguida, os parâmetros de entrada são verificados. Se você não adicionar essa linha, o Expert Advisor gerado não poderá inicializar nosso módulo de sinais de negociação. 5. Onde estão os nossos indicadores? É hora de trabalhar com os indicadores, já que todo o trabalho preparatório com os parâmetros para eles foi concluído. Cada módulo de sinais de negociação contém o método InitIndicators (), que é chamado automaticamente quando você executa o Expert Advisor gerado. Neste método, devemos fornecer indicadores de médias móveis para o nosso módulo. Primeiro, declare o método InitIndicators () na classe e cole seu rascunho: Portanto, não há nada complicado, declaramos o método e depois simplesmente criamos o corpo do método, como fizemos para o método ValidationSettings (). Acima de tudo, não esqueça de inserir o nome da classe e o operador. na definição da função. Temos um rascunho, que podemos inserir em um código para criar médias móveis. Vamos fazer isso corretamente - para cada indicador, criamos uma função separada na classe, que retorna true se for bem-sucedida. A função pode ter qualquer nome, mas deixe-a refletir sua finalidade, então vamos chamar as funções CreateFastMA () e CreateSlowMA (). Isso é tudo, só precisamos escrever código que gere os indicadores MA e de alguma forma integre as alças desses indicadores no módulo de negociação, para que o módulo possa usar os valores desses indicadores. É por isso que um ponteiro para uma variável do tipo CIndicators é passado como um parâmetro. O seguinte está escrito em Documentação sobre o assunto: O CIndicators é uma classe para coletar instâncias de timeseries e classes de indicadores técnicos. A classe CIndicators fornece a criação de classes de indicadores técnicos instanciados, seu armazenamento e gerenciamento (sincronização de dados, manipulação e gerenciamento de memória). Isso significa que devemos criar nossos indicadores e colocá-los nessa coleção. Como somente os indicadores do formulário do CIndicator e seus filhos podem ser armazenados na coleção, devemos usar esse fato. Nós usaremos o CiCustom. que é a criança acima mencionada. Para cada média móvel, declaramos um objeto do tipo CiCustom na parte privada da classe: É claro, você pode criar sua própria classe de indicador, que será derivada do CIndicator. e implementar todos os métodos necessários para uso com o Assistente MQL5. Mas neste caso queremos mostrar como você pode usar qualquer indicador customizado no módulo de sinais de negociação usando o CiCustom. Heres como ele se parece no código: No método CreateFastMA (), primeiro verifique o ponteiro da coleção de indicadores e, em seguida, adicione um ponteiro do mfastma MA rápido a essa coleção. Em seguida, declare a estrutura MqlParam, que é especialmente projetada para armazenar parâmetros de indicadores personalizados e preenchê-lo com valores. Usamos a Média móvel personalizada do pacote de entrega de terminal padrão como o indicador MA personalizado. O nome do indicador deve ser indicado em relação à pasta datafolder / MQL5 / Indicators /. Como o Custom Moving Average. mq5 do pacote padrão está localizado em datafolder / MQL5 / Indicadores / Exemplos /, especificamos seu caminho incluindo a pasta Examples: Se você observar o código desse indicador, poderá ver todos os dados necessários: Os valores da estrutura contêm os pares de valor e tipo: tipo de parâmetro - string (para transferir o nome do indicador) o nome do arquivo executável do indicador personalizado - tipo de parâmetro Custom Moving Averages. exe - int (valor do período) período do tipo de parâmetro de média móvel - int (deslocamento) deslocamento horizontal da média em barras tipo de parâmetro - int (valor de enumeração é um inteiro) método de cálculo médio Depois de preencher a estrutura, o indicador é inicializado pelo método Create () de todos os parâmetros necessários: nome do símbolo e o período de tempo em que é calculado, o tipo do indicador da enumeração ENUMINDICATOR, o número de parâmetros do indicador e a estrutura MqlParam com valores de parâmetros. E o último é especificar o número de buffers de indicadores usando o método NumBuffers (). O método CreateSlowMA () para criar a média móvel lenta é simples. Ao usar indicadores personalizados no módulo, não se esqueça de que o Expert Advisor gerado pelo Assistente MQL5 também será executado no testador. Então, no começo de nosso arquivo, nós adicionamos o testerindicator da propriedade property que comunica ao testador a localização dos indicadores necessários: Se usarmos vários indicadores diferentes, devemos adicionar essa linha para cada um deles. Então, nós adicionamos os indicadores. Para maior conveniência, vamos fornecer dois métodos para receber valores MA: Como você pode ver, os métodos são muito simples, eles usaram o método GetData () da classe pai do indicador, que retorna um valor do buffer indicador especificado na posição especificada . Se você precisa de aulas para trabalhar com indicadores clássicos do pacote padrão, eles estão disponíveis na seção Aulas para trabalhar com indicadores. Estamos prontos para avançar para o estágio final. 6. Definir os métodos LongCondition e ShortCondition Tudo está pronto para fazer nosso módulo funcionar e gerar sinais de negociação. Essa funcionalidade é fornecida por dois métodos que devem ser descritos em cada filho de CExpertSignal. LongCondition () verifica as condições de compra e retorna a força do sinal Longo de 0 a 100. ShortCondition () - verifica a condição de venda e retorna a força do sinal Short de 0 a 100. Se a função retornar um valor nulo, isso significa que não há sinal de negociação. Se houver condições para o sinal, você poderá estimar a intensidade do sinal e retornar qualquer valor que não exceda 100. A avaliação da intensidade do sinal permite que você crie sistemas de negociação flexivelmente baseados em vários módulos e modelos de mercado. Leia mais sobre isso no Assistente MQL5: Nova Versão. Como estamos escrevendo um módulo simples de sinais de negociação, podemos concordar que os sinais de compra e venda são valorizados igualmente (100). Vamos adicionar métodos necessários na declaração de classe. Além disso, vamos criar a descrição das funções. É assim que o sinal de compra é verificado (é o mesmo com o sinal de venda): Observe que declaramos a variável idx, para a qual o valor retornado pela função StartIndex () da classe pai CExpertBase é atribuído. A função StartIndex () retorna 0, se o Expert Advisor foi projetado para funcionar em todos os ticks e, nesse caso, a análise começa com a barra atual. Se o Expert Advisor foi projetado para funcionar a preços abertos, StartIndex () retorna 1 e a análise começa com a última barra formada. Por padrão, StartIndex () retorna 1. o que significa que o Expert Advisor gerado pelo MQL5 Wizard só será executado na abertura de uma nova barra e irá ignorar os ticks recebidos durante a formação da barra atual. Como ativar este modo e como ele pode ser usado será descrito posteriormente no curso final. O módulo está pronto para uso, então vamos criar um robô de negociação no Assistente MQL5 baseado neste módulo. Verificando um Expert Advisor no Testador Para testar a eficiência de nosso módulo, vamos gerar um Expert Advisor baseado nele no Assistente MQL5 e executá-lo no gráfico. A aba Inputs da janela inicial exibida contém os parâmetros do módulo MACross. Todos os outros parâmetros também foram adicionados pelo Assistente MQL5 ao gerar o EA com base no módulo de gerenciamento de dinheiro selecionado e no módulo de manutenção de posição (Trailing Stop). Assim, só tivemos que escrever um módulo de sinais de negociação e recebemos uma solução pronta. Esta é a principal vantagem de usar o Assistente MQL5 Agora, vamos testar o robô comercial no Testador de Estratégia do MetaTrader 5. Vamos tentar executar uma otimização rápida dos principais parâmetros. Nessas configurações de parâmetros de entrada, é necessário mais de meio milhão de passes para otimização total. Portanto, escolhemos a otimização rápida (algoritmo genético) e, adicionalmente, utilizamos o MQL5 Cloud Network para acelerar a otimização. A otimização foi feita em 10 minutos e nós obtivemos os resultados. Como você pode ver, a criação de um robô de negociação no MQL5 e a otimização dos parâmetros de entrada levaram muito menos tempo do que seria necessário para gravar a lógica de serviço de gerenciamento de posição, depurar e procurar os melhores algoritmos. Você pode pular este item ou voltar mais tarde quando estiver completamente confortável com a técnica de escrever um módulo de sinais de negociação. Se você abrir o código-fonte do Expert Advisor gerado pelo Assistente MQL5, encontrará a variável global ExpertEveryTick com o valor false. Com base nessa variável, a função StartIndex () retorna seu valor. Ele comunica ao Expert Advisor o modo em que deve ser executado. Se você definir ExpertEveryTick como true e compilar o código, o robô de negociação analisará cada tick recebido e, portanto, tomará decisões sobre os valores da barra incompleta atual. Faça isso apenas se você entender como funciona. Nem todos os sistemas de negociação são projetados para funcionar dentro da barra. Você também pode adicionar uma entrada de palavra-chave para o parâmetro ExpertEveryTick e, em seguida, terá um novo parâmetro de entrada do Expert Advisor. que você pode definir na inicialização da EA em um gráfico ou no testador: E agora é hora de resumir o que fizemos. 6 Passos para Criar um Módulo de Sinais de Negociação Se você dominou o MQL5, não precisará mais escrever um Expert Advisor do zero. Basta criar um módulo de sinais de negociação e, com base nesse módulo, gerar automaticamente um robô de negociação com os módulos de gerenciamento de volume comercial e de troca ativados. E mesmo que você não esteja familiarizado com o OOP ou não queira se aprofundar muito na estrutura das classes de negociação, você pode passar por 6 etapas: Crie uma nova classe usando o Assistente MQL5 em uma pasta separada MQL5 / Include / MySignals /. Nosso módulo de sinais de negociação será armazenado lá. Crie um manipulador de módulo que descreve os parâmetros, seus tipos e valores padrão. Declare os parâmetros do módulo na classe e adicione métodos para inicialização no construtor. Verifique os parâmetros de entrada e não se esqueça de chamar ValidationSettings () da classe base CExpertSignal. Crie objetos-indicadores e adicione um método de inicialização predefinido InitIndicators (). Identifique as condições dos sinais de negociação nos métodos LongCondition () e ShortCondition (). Cada etapa é simples e requer pouca habilidade na programação MQL5. Você só precisa escrever seu módulo uma vez, seguindo as instruções, e a verificação adicional de qualquer ideia comercial não levará mais de uma hora, sem horas cansativas de codificação e depuração. Do simples ao complexo Lembre-se de que a estratégia de negociação implementada pelo seu robô comercial criado usando o Assistente MQL5 é tão complexa quanto o módulo de sinais de negociação usado. Mas antes de começar a construir um sistema de negociação complexo baseado em um conjunto de regras para entrada e saída, divida-o em vários sistemas simples e verifique cada um separadamente. Com base em módulos simples, você pode criar estratégias de negociação complexas usando os módulos prontos de sinais de negociação, mas este é um tópico para outro artigo. Os três cursos de especialização guiá-lo passo a passo através da construção de modelos sofisticados de negociação usando o Microsoft Excel. A linguagem Microsoft Visual Basic (VBA) é usada em conjunto com a interface de usuário, fórmulas e recursos de cálculo do Excels para fornecer ferramentas de negociação poderosas e flexíveis. Construir um sistema automatizado de negociação de ações no Excel Este curso on-line mostra como construir um modelo automatizado de negociação de ações usando o Microsoft Excel. O Modelo inclui cinco indicadores técnicos comprovados (ADX, crossovers médios móveis, stochastics, bandas de Bollinger e DMI). Você é guiado de forma detalhada através da criação de planilhas, arquivos, intervalos, fórmulas de indicadores, botões de controle, links DDE / Active-X e módulos de código. Saiba Mais Construa um Sistema de Fundos Setoriais Automatizado no Excel Este Curso On-line o orienta na construção de um modelo de rotação de fundos setoriais de longo prazo usando o Microsoft Excel. O sistema é baseado no modelo clássico de rotação do setor dos economistas do mercado. Ele incorpora três indicadores técnicos comprovados - força relativa, crossovers médios móveis e inclinação média móvel, para identificar os fundos do setor com maior probabilidade de gerar lucros a longo prazo. O sistema pode ser usado com qualquer fundo mútuo, fundo de índice, SPDR, ETF, futuro ou outra segurança de índice. Saiba mais Crie um sistema automatizado de negociação de spreads no Excel Este curso on-line mostra como criar e usar um modelo de negociação de spread automatizado no Microsoft Excel. O sistema captura a diferença de preço entre pares de títulos de qualquer tipo - índices, ações, futuros, opções, LEAPs etc. Os retornos de spread geralmente não são correlacionados com outras estratégias, tornando o modelo uma excelente adição ao seu programa de negociação. O Sistema usa três indicadores técnicos comprovados - médias móveis exponenciais, Oscilador de Preço de Porcentagem (PPO) e Canais Donchian. Saiba mais Indicadores Técnicos EZ-Files no Excel Se você gosta de projetar e construir seus próprios modelos de negociação, estes indicadores técnicos pré-construídos no Excel são tremendamente úteis. O EZ-Files economiza inúmeras horas de pesquisa e tempo de cálculo, e cada indicador tem 100 fórmulas corretas. Saiba mais O que você recebe em cada curso: Um imenso valor 3 em 1 Um curso completo de instruções sobre o código PLUS VBA e seções de perguntas frequentes Um modelo completo de backtesting pré-compilado no MS Excel com gráficos e estatísticas comerciais para sua análise histórica Acesso rápido aos materiais do curso Aprenda a integrar Excel, VBA, fórmulas e fontes de dados em uma ferramenta de negociação rentável Adquira conhecimento exclusivo aplicável a qualquer projeto de modelagem ou análise do Excel Economize dinheiro eliminando custos recorrentes de software Calcule sinais de negociação em um grande número de ações, fundos ou se espalha em segundos (limitado apenas pela capacidade de dados Excels) Acesso rápido aos materiais do curso Microsoft Excel 5 megabytes de espaço em disco (para armazenamento de dados em estoque) Intraday, daily ou weekly Dados de preço Open-High-Low-Close-Volume Acesso à Internet (DSL de alta velocidade ou modem a cabo sugerido, mas não necessário) OPCIONAL: Link de importação de dados DDE / Active-X para Excel através de seu provedor de dados (recomendado para mais de 5-10 valores mobiliários, caso contrário, o preço d ata do YahooFinance ou outra fonte funciona bem) Perguntas freqüentes O que vou aprender neste curso? É algo que posso aprender em outro lugar? Nossos cursos ensinam como construir componentes, código, fórmulas e arquitetura de manipulação de dados para modelos comerciais funcionais. Embora seja possível aprender cada parte individualmente, nenhum livro mostra como integrar todas essas habilidades em um modelo comercial funcional. Nossos cursos oferecem uma enorme economia de tempo e dinheiro, aliviando a necessidade de descobrir e implementar o conhecimento necessário para criar modelos comerciais de nível institucional no Excel. Os cursos se concentram diretamente na criação de modelos comerciais sem o conteúdo desnecessário ou excessivamente generalizado encontrado na maioria dos livros do Excel e do Visual Basic. Além disso, o conhecimento é transferível para qualquer tipo de negociação, investimento, estatística ou modelos econômicos, fornecendo valor a longo prazo muito além dos cursos em si. Os modelos têm gráficos ou indicadores visuais? Sim, os modelos contêm gráficos para mostrar o desempenho histórico e os sinais de negociação versus preço. Os modelos de negociação automatizados que você cria são baseados em cálculos, e não em ferramentas de gráficos. A maior força dos modelos é a capacidade de calcular sinais de negociação em centenas de ações, fundos ou spreads rapidamente. Os modelos podem ser testados usando diferentes cenários e indicadores? Além dos materiais do curso, modelos de backtesting separados são fornecidos para download, para que você possa testar várias ações, fundos e spreads. Eu tenho que construir os modelos a partir do zero ou os cursos vêm com modelos acabados O objetivo destes cursos on-line é ensinar as habilidades e técnicas de construção de modelos de negociação no Excel. Você é obrigado a construir o modelo como parte do curso. Por conveniência, cada curso inclui um modelo de backtesting pré-construído completo, incorporando os mesmos indicadores e lógica. Não há substituto para construir um modelo a partir do zero em termos de saber como ele funciona nas condições reais de negociação. Isso é especialmente importante para os profissionais de investimento, que devem conhecer todos os detalhes e nuances de suas ferramentas para atender aos requisitos de risco e divulgação. As regras e a lógica de negociação são fornecidas Sim. Cada curso discute lógica de negociação e regras em profundidade significativa. Os modelos não são caixas pretas. Você é ensinado como a lógica do sistema funciona, de modo que seus pontos fortes e fracos são claramente evidentes. Os cursos vêm com suporte técnico? Dois métodos de suporte estão disponíveis: 1) Uma seção de Perguntas frequentes on-line está incluída em cada curso e 2) Se a seção de perguntas frequentes não responder à sua pergunta, o suporte por e-mail estará disponível gratuitamente.

No comments:

Post a Comment