Saturday 17 June 2017

Criar Seu Próprio Sistema Automatizado De Negociação


MetaTrader 5 - Exemplos Como fazer um robô de negociação sem tempo para fazer um robô de negociação, você precisa de um sistema de negociação O comércio de mercados financeiros envolve muitos riscos, incluindo o mais crítico - o risco de tomar uma decisão comercial incorreta. O sonho de todos os comerciantes é encontrar um robô comercial. Que está sempre em boa forma e não sujeita a fraquezas humanas - medo, ganância e impaciência. Cada recém-chegado quer obter ou criar um sistema de negociação claro e rigoroso que possa ser apresentado sob a forma de algoritmos e se livrar completamente das operações de rotina. É possível Um sistema comercial é uma condição necessária para entrar no mercado e esse sistema deve ser lucrativo, é claro. Quando os recém-chegados chegam ao mercado, eles geralmente estão sobrecarregados com a grande massa de informações difíceis de entender. Livros e fóruns de comerciantes podem fornecer alguma ajuda nesse caso. Infelizmente, nem todos os autores são comerciantes de sucesso e nem todos os comerciantes de sucesso escrevem livros. Muitos recursos web especiais são criados apenas para ganhar 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 de uma criação de sistema comercial. Há um ditado popular de que não importa o sistema que você usa para negociação, o principal é que você realmente deve negociar de acordo com esse sistema. Caso contrário, a negociação no mercado se converte em uma aposta com um resultado previsível. Trading Trading e Forex Forex mercado é acreditado para ter uma grande liquidez. Além disso, permite a negociação 24 horas por dia, ao contrário de muitos outros mercados. Portanto, muitos comerciantes tentam fazer robôs comerciais especialmente para o mercado Forex, pois oferece uma grande quantidade 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 possui suas próprias características e a baixa volatilidade é compensada por uma grande alavanca. Em qualquer caso, os instrumentos Forex são atraentes para fazer robôs comerciais e a maioria dos adeptos do comércio automatizado aprimoram suas habilidades em pares de moedas. Os terminais de negociação MetaTrader 4 e MetaTrader 5 são especialmente projetados para desenvolver sistemas de negociação automatizados facilmente, 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. Descreveremos apenas algumas das principais. A primeira abordagem é baseada em matemática. Um desenvolvedor tenta criar uma espécie de equação que pode considerar muitos fatores. Essa abordagem baseia-se na firme convicção de que os movimentos de preços são gerenciados por um modelo que pode ser encontrado usando os dados históricos disponíveis. Na maioria dos casos, os seguidores de tal abordagem conhecem muito matemática, mas não sabem nada sobre isso não estão interessados ​​no mercado. O mercado é uma abstração pura, um tipo de jogo intelectual para eles. Esta abordagem geralmente leva a muitos anos de estudo e desenvolvimento, enquanto um resultado definitivo na forma de um sistema de negociação automatizado não é tão importante. A segunda abordagem baseia-se no estudo das leis do mercado. Não são feitas tentativas para entender por que o preço sobe para baixo quando vários números de análise técnica aparecem em um gráfico. A vantagem desta abordagem é que não requer conhecimentos especiais de matemática e não faz suposições sobre a força motriz do mercado. É mais claro e conveniente ao estudar comércio. É mais popular entre os comerciantes que receberam o reconhecimento universal. A desvantagem da abordagem é a necessidade de acompanhar constantemente todos os símbolos necessários. Mais cedo ou mais tarde, um comerciante começa a considerar a automação dos processos de negociação e a questão mais considerável aparece naquela fase a complexidade da formalização das regras de negociação ao tentar expressá-las na forma de algoritmos. Em alguns casos, os comerciantes que tentam solicitar um robô comercial não podem descrever as regras comerciais e encontrar um terreno comum com os programadores. A terceira abordagem baseia-se na tentativa de criar uma caixa preta baseada em redes neurais com o uso das ferramentas pré-fabricadas amplamente disponíveis em pacotes especiais de software e matemática. A criação de um sistema de negociação automatizado com os elementos da inteligência artificial é uma tarefa emocionante e desafiadora, mesmo para os recém-chegados, uma vez que não requer fundo matemático profundo, nem experiência de programação - tudo é feito usando auxílios visuais. Um comerciante deve conhecer os conceitos básicos de indicadores técnicos, possuir uma capacidade para preparar dados de preços necessários e experiência em algum pacote definido para trabalhar com redes neurais. A principal desvantagem desta abordagem é que um robô comercial obtido usando essas ferramentas especializadas para trabalhar com redes neurais é na verdade uma caixa preta. Os comerciantes não conhecem seus princípios de trabalho e, em geral, é impossível prever qual a fase de mercado que será o mais problemático para o robô. Os programadores geralmente escolhem a quarta abordagem, eles começam a fazer um robô comercial desde o início, sem gastar tempo para negociação manual. Por que trocar manualmente Você pode fazer um robô passar alguns meses e colher os benefícios dos seus esforços, então. Mas sem dores, sem ganhos. Na maioria dos casos, os programadores começam a criar toda a infra-estrutura necessária usando uma linguagem de programação familiar ao invés de apenas fazer um robô comercial obtendo e processando dados de preços, 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 criação de metas finais de um sistema de negociação automatizado. E, mesmo se um robô comercial for criado, não há garantia de que seja lucrativo. E se um programador quiser redigir outro sistema comercial, são inevitáveis ​​reestruturas profundas e novos erros de programação. Há também a quinta abordagem, comprando um sistema comercial pronto na forma de um robô comercial. Neste caso, um comerciante atua como operador ou sintonizador. Esta abordagem economiza muito tempo (não precisa aprender muitas coisas novas) e permite que os comerciantes entrem rapidamente no mundo da negociação automatizada. A principal desvantagem desta abordagem decorre de suas vantagens que você não conhece os princípios de operação de seu robô comercial e sua estrutura. E mesmo que um vendedor tenha fornecido uma descrição detalhada do sistema de negociação implementado, você nunca estará completamente seguro nele. No entanto, nenhuma das abordagens mencionadas pode dar-lhe uma garantia absoluta exceto um depósito bancário. Mas essa não é uma solução muito adequada para pessoas interessadas em negociação no mercado e maneiras de aumentar seus ativos privados. Qual é a melhor abordagem para a negociação automatizada para um comerciante Cada uma das cinco abordagens descritas tem suas vantagens e corresponde a algum tipo de comerciante definido. É 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 com base em redes neurais. No entanto, ambas as abordagens são muito emocionantes e proporcionam um bom exercício intelectual. Abaixo, vamos discutir apenas a segunda abordagem, que já é considerada a clássica. Essa é a abordagem geralmente escolhida por novos seguidores da negociação automatizada, já que a análise técnica continua a ser a área de conhecimento chave ao aprender noções básicas de negociação. Outra vantagem da segunda abordagem é que depois de passar algum tempo para negociação manual e obter o senso do 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 na criação de 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 pedidos comerciais. Mas primeiro você pode começar a partir dos robôs de negociação Expert Advisors, feitos a partir da biblioteca gratuita do Code Base. Baixe qualquer Expert Advisor (robô comercial) e inicie-o no Strategy Tester do MetaTrader 4 ou nos terminais do cliente MetaTrader 5. Selecione um intervalo de histórico que mostre uma forte tendência e um intervalo com um plano. Execute a otimização de parâmetros de entrada do Expert Advisor e examine suas diferenças nesses dois intervalos. Inicie um Expert Advisor com os parâmetros ótimos para um plano em um intervalo de tendências e com os parâmetros ótimos para uma tendência em um intervalo plano. Examine as diferenças nos resultados da negociação, distribuições de negócios e outros parâmetros estatísticos. Como resultado, você saberá o quanto o comportamento do seu sistema comercial pode variar quando a situação do mercado muda. Seria melhor tentar várias estratégias de negociação padrão usando este método em diferentes partes da história e vários símbolos. Tal operação de teste impede o ajuste de um sistema de negociação para algum intervalo de histórico definido e fornece uma melhor compreensão dos sistemas de tendência e contrapressão. O próximo passo seria criar sistemas de negociação mais complexos com base na combinação de sinais simples já existentes do MQL5 Wizard set. Você pode testar e desenvolver sua intuição comercial, classificando sinais ruins de um sistema usando um filtro baseado em outro sistema sem meios de programação. O principal não é superar. Quanto mais parâmetros de entrada um sistema comercial possui, mais fácil será montar. Houve muitas discussões sobre as diferenças entre otimização e ajuste. Não há soluções amplamente aceitas aqui. Mas a visualização dos resultados da testoptimização e seu próprio senso comum podem ajudá-lo. Aprenda a identificar os parâmetros de entrada mais críticos que afetam seu sistema comercial 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 apresenta volatilidade dramática no caso de mudanças no mercado insignificantes. Você pode gastar tanto tempo nesta fase, conforme desejar, até ter certeza de que pode entender qualquer estratégia de negociação que examine resultados de teste e otimização. O conhecimento de pontos fortes e fracos dos sistemas padrão permitirá que você esteja melhor preparado ao criar seu próprio robô comercial. Programação de um robô de negociação Suponha que você tenha aprendido a aprender linguagem de programação MQL4 ou MQL5 e agora você está pronto para escrever seu primeiro consultor especialista para o terminal do cliente MetaTrader. Vários casos são possíveis aqui. Em primeiro lugar, você pode examinar vários robôs comerciais pré-fabricados descritos nos artigos para entender melhor as complexidades de programação. Em segundo lugar, você pode fazer perguntas sobre MQL4munity ou MQL5munity. Se você tiver problemas não resolvidos. Os participantes da comunidade experiente geralmente ajudam os recém-chegados a mostrarem interesse sincero no assunto. Em terceiro lugar, você pode solicitar imbricação ou desenvolvimento de um Consultor Especialista ou um indicador no serviço de Emprego. Se você não conseguir escrever um programa necessário por conta própria. 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, 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 consertar você mesmo. Não há necessidade de reinventar a roda Como encontrar sua própria estratégia comercial, ou pelo menos em que direção você deve concentrar 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 ready-made. 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 comercial genuíno. Os homens do exército de 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 estudantes da escola militar, - mas no fato de que exatamente você está estudando isso. A situação com sistemas de negociação é bastante similar: a maioria dos comerciantes usa idéias comerciais simples e bem conhecidas com modificações menores, por exemplo, adicionando Trailing Stop ou confirmações de indicadores de tendência. Existem muitos fóruns de comerciantes com acesso limitado onde os participantes se unem para desenvolver ou melhorar alguns sistemas comerciais secretos. O mais interessante é que esses 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. Então, é aperfeiçoado com alguns novos indicadores desconhecidos para o público em geral. Portanto, você pode facilmente obter códigos de código de robô comercial disponíveis e tentar usá-los corretamente com vários símbolos e prazos. Outro ditado popular pode ser mencionado aqui: Você não gosta de gatos. Você não sabe como cozinhar. É difícil de acreditar, mas a probabilidade de desenvolver algo realmente novo é muito pequena. O principal aqui é criar um sistema usando 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 os farão assim, por que ninguém usa idéias comerciais, se eles estão literalmente alcançados nas armas. A resposta provavelmente está na psicologia humana. A equipe de muitos bancos e grandes fundos de investimento inclui comerciantes que realizam negócios de acordo com regras rígidas e dentro de volumes limitados. Mas por algumas razões, apenas alguns comerciantes institucionais deixam suas empresas e começam a negociar usando seu próprio dinheiro. Acontece que você precisa não só de uma estratégia de negociação, mas também da disciplina de ferro para segui-la. Muitos comerciantes descobriram com arrependimento 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 me desvie ligeiramente do tema, 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 comerciante é uma autodisciplina e não um sistema top secreto. Infelizmente, a maioria dos recém-chegados não conseguirá seguir uma estratégia rentável, mesmo que obtenha gratuitamente. O problema é que a maioria das estratégias de negociação perfeitamente adequadas para o comércio manual dificilmente podem ser formalizadas e transcritas para uma linguagem de programação. As estratégias que podem ser facilmente formalizadas (por exemplo, as que envolvem a interseção de duas médias móveis) são muito simples e exigem muitos aprimoramentos 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 impedindo um robô comercial de entradas falsas e erros claramente visíveis para um desenvolvedor. Emerge uma questão de otimização de robô comercial. Este processo não deve se transformar em uma sobre-optimização e ajuste para 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 de teste direto não diferirem significativamente dos obtidos na seção de otimização, existe uma probabilidade de que um robô de negociação seja estável o suficiente por algum tempo após seu lançamento em uma conta de negociação. O comprimento de um intervalo para a otimização de parâmetros e um valor real de algum tempo dependem de um determinado sistema de negociação. Assim, a otimização de um robô comercial antes de lançá-lo em uma conta comercial lembra de desenrolar uma funda - mais com cuidado, desenrolamos e lançamos um projétil da funda, mais longe voará e a mais precisa sua trajetória será. Um robô de negociação completamente desenvolvido manterá um resultado positivo em uma conta de negociação por mais tempo do que um robô comercial obtido como resultado de uma montagem. Podemos dizer que o Grail é uma idéia de trabalho e ajuste correto dos parâmetros realizados de tempos em tempos nos momentos de mudanças nas condições do mercado. Isso pode ser ilustrado pelos resultados do Campeonato Automatizado de Negociação que é realizado por muitos anos já. Os assessores especializados de todos os participantes passaram por testes automáticos no intervalo de tempo de janeiro até o final de julho. O principal requisito para passar o teste automático é um lucro obtido por oito meses de testes. Mas menos de metade dos robôs comerciais admitidos para o Campeonato continuam lucrativos após os meses de trabalho autônomo. Você também pode tentar suas habilidades em fazer e ajustar o seu robô comercial para participar do Campeonato e obter os resultados de testes avançados do seu Consultor Especializado. Além disso, a participação é gratuita e os prêmios são impressionantes. Esperamos vê-lo lá. Conclusão Os comerciantes intradiários 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ão fazemos recomendações especiais aqui quanto ao aprendizado de línguas MQL4 ou MQL5, pois há muitos outros artigos úteis sobre esse assunto. O objetivo deste artigo foi fornecer alguma 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. Aviso: Todos os direitos sobre esses materiais são reservados pela MQL5 Ltd. É proibida a cópia ou reimpressão desses materiais, no todo ou em parte. MetaTrader 5 - Exemplos Crie seu próprio Robot de Negociação em 6 Passos Um Mais Tempo sobre o MQL5 Wizard O mundo que nos rodeia Está mudando rapidamente, e nós tentamos acompanhá-lo. 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 pelo mínimo de esforço. Especialmente para comerciantes, 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 leve MQL5 Wizard for Dummies e uma versão de 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 comercial, você pode permitir que o robô resultante seja comercializado em sua conta sem a necessidade de fazer qualquer outra coisa manualmente . Mas o problema surge quando o desenvolvedor traderMQL5 quer criar algo próprio, algo único que nunca foi descrito em qualquer lugar, e vai escrever seu próprio módulo de sinais comerciais. O comerciante abre a documentação MQL5, chega à Biblioteca Padrão e fica horrorizado ao ver. Five Terrible Classes True, o MQL5 Wizard simplifica grandemente 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 MQL5 Wizard, certifique-se de que seus componentes aderem a cinco classes básicas da seção Base Classes of Expert Advisors: CExpertBase é uma classe base para outras quatro classes. CExpert é a classe para criar um robô comercial. Essa é a classe que negocia. CExpertSignal é uma classe para criar um módulo de sinais comerciais, o artigo é sobre essa classe. CExpertTrailing é uma classe para arrastar uma perda de parada 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 telefone celular com muita função, e quase ninguém sabe como funciona. Não precisamos estudar tudo isso, só discutiremos algumas funções da classe CExpertSignal. Neste artigo, passaremos pelas etapas de criação de um módulo de sinais comerciais. E você verá como fazer isso sem ter que aprender o OOP ou as aulas. Mas se você quiser, você pode ir um pouco mais depois. 1. Criando uma classe do Scratch Não alteraremos nenhum módulo existente de sinais comerciais para nossas necessidades, porque é a maneira de se confundir. Portanto, simplesmente escreveremos nossa própria classe, mas primeiro usaremos o Navegador para criar uma nova pasta para armazenar nossos sinais no MQL5IncludeExpert. 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 comerciais. 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 nomeá-lo MACross. O Nome da Base é a classe da qual nossa classe é derivada. E devemos derivá-lo da classe base CExpertSignal. Clique em Terminar e um rascunho do nosso módulo está pronto. Está todo o leste até agora. Só precisamos adicionar a declaração de inclusão no arquivo resultante para que o compilador saiba onde encontrar a classe base CExpertSignal Verifique a classe resultante (deve estar livre de erros de compilação) e clique em F7. Não há erros e podemos seguir em frente. 2. Um identificador para o módulo Nossa classe está completamente vazia, não tem erros e podemos testá-lo - tentamos criar um novo consultor especialista no MQL5 Wizard com base nisso. Chegamos ao passo de selecionar um módulo de sinais comerciais e ver. Que nosso módulo não está lá. E como pode estar lá. Não adicionamos nenhuma indicação para o MQL5 Wizard para entender que nossa classe pode ser algo útil. Vamos corrigir isso. Se você olhar para os módulos do pacote padrão, você 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 (veja a descrição lógica em Sinais da Média de Mudança Adaptativa). E execute o MQL5 Wizard escolhendo este módulo. Compare: o último bloco no identificador refere-se aos parâmetros do módulo, a primeira linha contém o nome do módulo a ser exibido no MQL5 Wizard. 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 MQL5 Wizard. Tipo - a versão do módulo de sinais. Sempre deve ser SignalAdvanced. Nome - o nome do módulo após o seu é selecionado no MQL5 Wizard e é usado em comentários para descrever parâmetros internos do Expert Advisor gerado (de preferência 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 (apenas para módulos da entrega padrão). Em seguida, vem a descrição dos parâmetros na forma de Parameterlistofvalues, no 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 a 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 o alterar no MQL5 Wizard. Descrição do parâmetro, que você vê ao iniciar o Expert Advisor gerado no MQL5 Wizard. Agora, sabendo tudo isso, vamos criar o controle de nosso módulo de sinais comerciais. Então, estamos escrevendo um módulo para obter sinais comerciais na interseção de duas médias móveis. Precisamos definir pelo menos quatro parâmetros externos: FastPeriod - o período da média rápida média FastMethod - o tipo de alisamento da média rápida Media SlowPeriod - o período da média lenta SlowMethod - o tipo de alisamento da média 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 não muda nada fundamentalmente. Portanto, a versão atual é a seguinte: O identificador do módulo está pronto, e descrevemos o seguinte: Nome exibido no MQL5 Wizard - Sinais na interseção de duas médias móveis. Quatro parâmetros externos para configurar os sinais comerciais. FastPeriod - o período da média rápida com o valor padrão de 13. FastMethod - o tipo de alisamento da média móvel rápida, suavização simples por padrão. SlowPeriod - o período da média lenta com o valor padrão de 21. SlowMethod - o tipo de alisamento da média lenta, suavização simples por padrão. Salve as alterações e compile. Não deve haver nenhum erro. Execute o Assistente MQL5 para verificar. Você vê, o nosso módulo está agora disponível para seleção e mostra todos os nossos parâmetros Parabéns, nosso módulo de sinal comercial parece ótimo agora. 3. Métodos para definir parâmetros Agora é hora de trabalhar com os parâmetros externos. Uma vez que nosso módulo de negociação é representado pela classe MACross, seus parâmetros devem ser armazenados na mesma classe que os membros privados. Permite adicionar quatro linhas (igual ao número de parâmetros) à declaração de classe. Nós já descrevemos o parâmetro na alça e conhecemos 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 com o mesmo nome Na classe, ou seja, para adicionar quatro linhas à seção pública: quando você gera um Expert Advisor com base neste módulo usando o MQL5 Wizard e executá-lo 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 é configurar valores padrão para nossos parâmetros que serão usados ​​no caso de os métodos de configuração de valor não serem chamados. Cada variável ou membro da classe declarada deve ser inicializado. Esta técnica permite evitar muitos erros difíceis de encontrar. Para a inicialização automática, o melhor sutista é o construtor de classe, é sempre o primeiro a ser chamado ao criar um objeto. Para valores padrão, usaremos aqueles escritos no módulo de controle. Aqui, os alunos 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 indicados no identificador 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 correçã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 correção dos parâmetros deve ser verificada. No nosso caso, devemos verificar os períodos de médias móveis e o tipo de alisamento para o cálculo. Para esse efeito, 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 a programação orientada a objetos, lembre-se - na 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, adicionamos a declaração do método ValidationSettings () e, em seguida, adicionamos o corpo do método da seguinte forma: Primeiro vem o tipo de retorno, depois o nome da classe e, em seguida, o operador de resolução do escopo. E tudo isso é seguido pelo nome do método previamente declarado. Não esqueça que o nome e o tipo de parâmetros devem corresponder na declaração e descrição do método da classe. No entanto, o compilador irá alertá-lo sobre esse erro. Observe que primeiro o método da classe base é chamado e os parâmetros de entrada são verificados. Se você não adicionar esta linha, o Expert Advisor gerado não poderá inicializar o nosso módulo de sinais comerciais. 5. Onde estão os nossos indicadores É hora de trabalhar com os indicadores, desde que todos os trabalhos preparatórios com os parâmetros para eles foram concluídos. Cada módulo de sinais comerciais 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 nosso módulo. Primeiro, declare o método InitIndicators () na classe e cole o rascunho: então não há nada complicado, declaramos o método e, em seguida, criamos simplesmente 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 deixá-lo refletir o objetivo, então vamos chamar as funções CreateFastMA () e CreateSlowMA (). Isso é tudo, precisamos apenas escrever código que gera os indicadores MA e, de algum modo, integra 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 isso: O CIndicators é uma classe para coletar instâncias de timeseries e classes de indicadores técnicos. A classe CIndicators fornece criação de instâncias de classes de indicadores técnicos, seu armazenamento e gerenciamento (sincronização de dados, controle e gerenciamento de memória). Isso significa que devemos criar nossos indicadores e colocá-los nesta coleção. Uma vez que apenas os indicadores da forma CIndicator e seus filhos podem ser armazenados na coleção, devemos usar esse fato. Usaremos CiCustom. Qual é o filho acima mencionado. 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 indicadores, que será derivada de CIndicator. E implemente todos os métodos necessários para usar com o MQL5 Wizard. Mas, neste caso, queremos mostrar como você pode usar qualquer indicador personalizado no módulo de sinais comerciais usando CiCustom. Heres como ele 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 esta coleção. Em seguida, declare a estrutura MqlParam, especialmente projetada para armazenar parâmetros de indicadores personalizados e preenchê-lo com valores. Usamos a Média de Mudança Personalizada do pacote de entrega de terminal padrão como o indicador de MA personalizado. O nome do indicador deve ser indicado em relação à pasta datafolderMQL5Indicators. Uma vez que o Custom Moving Average. mq5 do pacote padrão está localizado nos exemplos de dados da informaçãoMQL5Indicadores, especificamos o seu caminho, incluindo a pasta Exemplos: Se você olhar para o código desse indicador, você pode ver todos os dados necessários: Os valores da estrutura contêm o Pares tipo-valor: tipo de parâmetro - string (para transferir o nome do indicador) o nome do arquivo executável do indicador personalizado - Custom Moving Averages. exe tipo de parâmetro - int (valor do período) período do parâmetro de média móvel Tipo - int (valor de mudança) deslocamento horizontal da média no tipo de parâmetro de barras - int (valor de enumeração é um inteiro) método de média Depois de preencher a estrutura, o indicador é inicializado pelo método Create () de todos os parâmetros necessários: símbolo Nome e horário em que é calculado, o tipo do indicador da enumeração ENUMINDICATOR, o número de parâmetros do indicador e a estrutura MqlParam com os valores dos parâmetros. E o último está especificando o número de buffers de indicadores usando o método NumBuffers (). O método CreateSlowMA () para criar a média lenta é simples. Ao usar indicadores personalizados no módulo, não esqueça que o consultor especializado gerado pelo MQL5 Wizard também será executado no testador. Assim, no início do nosso arquivo, adicionamos a propriedade property testerindicator que comunica ao testador a localização dos indicadores necessários: se usarmos vários indicadores diferentes, devemos adicionar esta linha para cada um deles. Então, adicionamos os indicadores. Para mais conveniência, podemos 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 SIndicator, que retorna um valor do buffer de indicador especificado na posição especificada . Se você precisar de aulas para trabalhar com indicadores clássicos do pacote padrão, eles estão disponíveis na seção Classes para trabalhar com indicadores. Estamos prontos para avançar para a fase final. 6. Definir os Métodos de LongCondition e ShortCondition Tudo está pronto para fazer o nosso módulo funcionar e gerar sinais de negociação. Esta funcionalidade é fornecida por dois métodos que devem ser descritos em cada filho do CExpertSignal. LongCondition () verifica as condições de compra e retorna a força do sinal Long de 0 a 100. ShortCondition () - verifica a condição de venda e retorna a força do sinal curto de 0 a 100. Se a função retorna um valor nulo, isso significa que não há sinal de negociação. Se houver condições para o sinal, você pode estimar a força 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 de forma flexível com base em vários módulos e modelos de mercado. Leia mais sobre isso no MQL5 Wizard: New Version. Como estamos escrevendo um módulo simples de sinais de negociação, podemos concordar que os sinais de compra e venda são avaliados igualmente (100). Permite adicionar os 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): Note que declaramos a variável idx, à qual o valor retornado pela função StartIndex () da classe principal CExpertBase é atribuído. A função StartIndex () retorna 0, se o Expert Advisor for projetado para funcionar em todos os carrapatos e, nesse caso, a análise começa com a barra atual. Se o Consultor Especializado for projetado para trabalhar 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 ignorará os tiques recebidos durante a formação da barra atual. Como ativar esse modo e como ele pode ser usado será descrito mais tarde no curso de acabamento. O módulo está pronto para uso, portanto, crie um robô comercial no MQL5 Wizard com base neste módulo. Verificando um consultor especialista no testador Para testar a eficiência do nosso módulo, vamos gerar um consultor especialista com base no MQL5 Wizard e executá-lo no gráfico. A guia Inputs da janela de início exibida contém os parâmetros do módulo MACross. Todos os outros parâmetros também foram adicionados pelo MQL5 Wizard ao gerar a EA com base no módulo de gerenciamento de dinheiro selecionado e módulo de manutenção de posição (Trailing Stop). Assim, nós só precisamos escrever um módulo de sinais comerciais e recebemos uma solução pronta. Esta é a principal vantagem de usar o MQL5 Wizard Now, vamos testar o robô comercial no MetaTrader 5 Strategy Tester. 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 passagens para otimização completa. Portanto, escolhemos otimização rápida (algoritmo genético) e, além disso, utilizamos a rede MQL5 Cloud para acelerar a otimização. A otimização foi feita em 10 minutos e obtivemos os resultados. Como você pode ver, a criação de um robô comercial no MQL5 e a otimização dos parâmetros de entrada levaram muito menos tempo do que seria necessário para escrever a lógica de manutenção do gerenciamento de posição, depuração e busca dos melhores algoritmos. Você pode pular este item ou voltar mais tarde quando estiver completamente à vontade com a técnica de escrever um módulo de sinais comerciais. Se você abrir o código-fonte do Expert Advisor gerado pelo MQL5 Wizard, você encontrará a variável global ExpertEveryTick com o valor falso. 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 o ExpertEveryTick verdadeiro e compilar o código, o robô comercial analisará cada tiquete recebido e, assim, tomará decisões sobre os valores da barra incompleta atual. Faça isso somente se 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 palavras-chave para o parâmetro ExpertEveryTick, e então você terá um novo parâmetro de entrada do Expert Advisor. Que você pode definir no arranque 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, então você não precisa mais escrever um consultor especialista desde o início. Basta criar um módulo de sinais de negociação e, com base neste módulo, gerar automaticamente um robô de negociação com os módulos de gerenciamento de volume avançado e comercializados. E mesmo que você não esteja familiarizado com o OOP ou não quer investigar muito a estrutura das classes de comércio, você pode passar por seis etapas: Crie uma nova classe usando o MQL5 Wizard em uma pasta separada MQL5IncludeMySignals. Nosso módulo de sinais comerciais será armazenado lá. Crie um identificador de módulo que descreva os parâmetros, seu tipo 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 esqueça de chamar ValidationSettings () da classe base CExpertSignal. Crie indicadores-objetos e adicione um método de inicialização predefinido InitIndicators (). Identificar as condições dos sinais de negociação nos métodos LongCondition () e ShortCondition (). Cada passo é simples e requer pouca habilidade na programação MQL5. Você só precisa escrever seu módulo uma vez, seguindo as instruções, e uma verificação adicional de qualquer idéia de comércio não demorará 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 com o MQL5 Wizard é tão complexa quanto o módulo de sinais comerciais que ele usa. Mas antes de começar a construir um sistema comercial 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 pré-fabricados de sinais de negociação, mas este é um tópico para outro artigo. Sistemas de codificação de sistemas de negociação são simplesmente conjuntos de regras que os comerciantes usam para determinar suas entradas e saídas de uma posição. Desenvolver e usar sistemas de negociação pode ajudar os comerciantes a obter retornos consistentes, limitando o risco. Em uma situação ideal, os comerciantes devem se sentir como robôs, executando trades de forma sistemática e sem emoção. Então, talvez você tenha se perguntado: o que é para impedir que um robô negocie meu sistema. A resposta: Nada. Este tutorial irá apresentá-lo às ferramentas e técnicas que você pode usar para criar seu próprio sistema de negociação automatizado. Como são os Sistemas de Negociação Automatizados Criados Os sistemas de negociação automatizados são criados convertendo suas regras de sistemas comerciais em códigos que seu computador pode entender. O seu computador executa essas regras através do seu software de negociação, que procura trocas que adiram às suas regras. Finalmente, os negócios são colocados automaticamente com seu corretor. Este tutorial se concentrará nas segunda e terceira partes deste processo, onde suas regras são convertidas em um código que seu software comercial pode entender e usar. O que o software de negociação suporta sistemas de negociação automatizados Existem muitos programas de negociação que suportam sistemas de negociação automatizados. Alguns gerarão automaticamente e colocam trocas com seu corretor. Outros encontrarão automaticamente negócios que atendam aos seus critérios, mas exigem que você coloque os pedidos com seu corretor manualmente. Além disso, os programas de negociação totalmente automáticos geralmente exigem que você use corretoras específicas que ofereçam suporte a tais recursos, você também pode ter que preencher um formulário de autorização adicional. Vantagens e desvantagens Os sistemas de negociação automatizados têm vários benefícios, mas também têm suas desvantagens. Afinal, se alguém tivesse um sistema de negociação que ganhasse dinheiro automaticamente o tempo todo, ele ou ela seria, literalmente, possuir uma máquina de fazer dinheiro. Vantagens: um sistema automatizado leva a emoção e ocupado - trabalha fora da negociação, o que permite que você se concentre em melhorar Sua estratégia e regras de gerenciamento de dinheiro. 13 Uma vez que um sistema lucrativo é desenvolvido, não requer nenhum trabalho de sua parte até que ele queque, ou as condições do mercado exigem uma mudança. Desvantagens: se o sistema não estiver corretamente codificado e testado, grandes perdas podem ocorrer muito rapidamente. 13 Às vezes, é impossível colocar certas regras em código, o que dificulta o desenvolvimento de um sistema de negociação automatizado. Neste tutorial, você aprenderá como planejar e projetar um sistema de negociação automatizado, como traduzir esse design para o código que seu computador irá entender, como testar seu plano para garantir o melhor desempenho e, finalmente, como colocar seu sistema em uso. Codificação de sistemas de negociação: Design de sistema Os sistemas de negociação automatizados minimizam as emoções, permitem uma entrada de pedidos mais rápida, levam a uma maior consistência e a resolver problemas de erro-piloto. Os comerciantes de sistemas dividem seu tempo entre negociação, desenvolvimento, backtesting, otimização e testes avançados, para criar sistemas de negociação viáveis ​​e de alta probabilidade. O software automatizado de negociação forex analisa o mercado para negociações favoráveis ​​com base na sua contribuição. Saiba mais sobre esta valiosa ferramenta forex. Ao misturar boas análises com implementação efetiva, você pode melhorar drasticamente seus lucros neste mercado. Aprenda a adicionar estrutura aos seus métodos de negociação com estas seis etapas importantes. A maioria dos corretores fornecerá registros comerciais, mas também é importante manter o controle por conta própria. O software tornou a negociação diária rápida e automática - mais razões para ser tão cuidadoso quanto possível ao escolher o caminho certo para suas necessidades. É impossível evitar o desastre sem regras de negociação - certifique-se de saber como elaborá-los para você. Essas etapas farão de você um comerciante mais disciplinado, mais esperto e, em última instância, mais rico. Perguntas freqüentes A depreciação pode ser usada como uma despesa dedutível para reduzir os custos tributários, reforçando o fluxo de caixa. Saiba como Warren Buffett se tornou tão bem sucedido por meio de sua participação em várias escolas de prestígio e suas experiências do mundo real. O Instituto CFA permite a um indivíduo uma quantidade ilimitada de tentativas em cada exame. Embora você possa tentar o exame. Conheça os salários médios do analista de mercado de ações nos EUA e diferentes fatores que afetam salários e níveis globais. Perguntas freqüentes A depreciação pode ser usada como uma despesa dedutível para reduzir os custos tributários, reforçando o fluxo de caixa. Saiba como Warren Buffett se tornou tão bem sucedido por meio de sua participação em várias escolas de prestígio e suas experiências do mundo real. O Instituto CFA permite a um indivíduo uma quantidade ilimitada de tentativas em cada exame. Embora você possa tentar o exame. Conheça os salários médios do analista de mercado de ações nos EUA e diferentes fatores que afetam salários e níveis globais.

No comments:

Post a Comment