MetaTrader 5 - Examples. Universal Expert Advisor Modos de Negociação de Estratégias Parte 1.Várias tarefas podem surgir ao implementar algoritmos de negociação automatizados, incluindo a análise do ambiente de mercado para interpretar os sinais de entrada no mercado e fechamento de uma posição existente Outra possível tarefa é o controle sobre Expert Operações de consultoria e tratamento adequado de erros de negociação Finalmente, é uma tarefa de acesso fácil e conveniente aos dados de mercado e posições de negociação do Consultor Especial Todas essas tarefas são implementadas diretamente no código-fonte Expert Advisor. Por outro lado, devemos separar A parte técnica do processo de negociação ea idéia implementada no Custom Expert Advisors Com a abordagem orientada a objeto, podemos separar estas duas tarefas de comércio essencialmente diferentes e confiar a implementação do processo de negociação para uma classe especial comum a todas as estratégias, que É por vezes também referido como o mecanismo de negociação. Este é o primeiro artigo da série de artigo S que descrevem a operação de tal motor, que pode ser chamado um perito universal do perito Este nome unifica um jogo das classes que permitam o desenvolvimento fácil de algoritmos negociando por uma enumeração usual das condições da entrada e da saída da posição Você não necessitará adicionar dados requeridos e negociar Lógicas para o consultor perito, por exemplo, pesquisa de posição todos os procedimentos necessários são feitos pelo mecanismo de negociação. O material para o artigo proposto é extenso, portanto, é dividido em quatro partes Aqui estão os detalhes dessas partes. Parte 1 Modos de negociação de estratégias Eles São descritos neste artigo A primeira parte descreve o conceito de gestão de posição original com base em modos de negociação Uma lógica de negociação Expert Advisor pode ser facilmente definida usando os modos de negociação Um consultor especializado escrito neste estilo é fácil de depurar A lógica destes EAs se torna universal e semelhante , Que também facilita a gestão de tais estratégias As idéias expressas neste material são universais e não requer Isto significa que, independentemente de você usar ou não o conjunto de bibliotecas oferecido ou não, este material pode ser útil para você. Parte 2 Modelo do Evento e Protótipo da Estratégia de Negociação Esta seção descreve um modelo de evento original baseado na manipulação centralizada de eventos Isso significa que todos os eventos são reunidos em um lugar da lógica de negociação EA que os processa. Além disso, os eventos são multi-moeda Por exemplo, se um Expert Advisor está sendo executado no gráfico EURUSD, é possível receber um evento de um novo tick De GBPUSD Este modelo de evento pode ser extremamente útil ao desenvolver Expert Advisors que negociam múltiplos instrumentos financeiros Nesta parte, vamos também descrever a classe base do mecanismo de negociação CStrategy ea classe CPositionMT5 que representa uma posição no MetaTrader 5.Parte 3 Custom Strategies E Classes Comerciais Auxiliares O material abrange o processo de desenvolvimento de Expert Advisor personalizado A partir deste artigo você vai descobrir como criar um Expert Advisor por Uma simples enumeração das condições de entrada e saída de posição Esta parte também descreve vários algoritmos auxiliares que podem simplificar consideravelmente o acesso a informações comerciais. Parte 4 Negociação em um grupo e gerenciamento de um portfólio de estratégias Esta parte contém uma descrição de algoritmos especiais para integrar várias lógicas de negociação Em um único módulo ex5 executável Ele também descreve mecanismos, que podem ser usados para gerar um conjunto de estratégias personalizadas usando um arquivo XML. Métodos para abrir novas posições e gerenciar Ones existentes. Para entender a abordagem oferecida neste artigo, vamos primeiro tentar Para descrever um sistema comercial clássico baseado em duas médias móveis, uma das quais tem um curto período de média e a segunda tem um período longo Assim, a média móvel com um grande período de média é mais lenta do que a média móvel com um período menor Da média As regras de negociação são simples se a média rápida está acima da lenta, a EA é comprar Por outro lado, se a rápida av A tabela a seguir mostra nossa estratégia de forma esquemática. Fig 1 O gráfico de um sistema de negociação baseado em duas médias móveis. A linha vermelha mostra a média móvel rápida simples com um período de 50 O azul Linha mostra a média móvel lenta com um período de 120 Quando intersectam cruzamentos são marcados com linhas pontilhadas a azul, a direção da posição de Consultor Especial inverte Do ponto de vista da abordagem não-algorítmica, a descrição é suficiente para qualquer comerciante para entender como Para o comércio usando esta estratégia No entanto, esta descrição não é suficiente para a criação de um Expert Advisor com base nesta estratégia. Vamos considerar ações comerciais que a EA precisaria executar em um momento em que o MA rápido cruza o lento de baixo para cima. Se a EA tiver uma posição curta aberta quando as MAs se cruzarem, esta posição deve ser fechada. A existência de uma posição longa aberta deve ser verificada. Se não existir uma posição longa, deve-se abrir se uma p longa Para um cruzamento oposto quando o MA rápido atravessa o lento de cima para baixo, ações opostas devem ser realizadas. Se o EA tiver uma posição longa aberta quando as MAs se cruzarem, esta posição deve ser fechada. A existência de uma posição curta aberta deve ser verificada Se não houver uma posição curta, deve-se abrir Se uma posição curta já existe, nada deve ser feito. Temos quatro ações de negociação para descrever o processo de negociação da estratégia Duas ações de negociação Descrever a posição longa de abertura e manutenção de regras Duas outras ações descrevem a abertura de posição curta e manter regras Pode parecer que uma sequência de quatro ações é demais para a descrição de um processo de negociação tão simples Na verdade, as entradas de posição comprida coincidem com o curto Posição sai em nossa estratégia, por isso não seria mais fácil combiná-los em uma negociação ou, pelo menos, ação lógica Não, não seria Para provar isso, vamos mudar as condições de nossa i Por exemplo, uma posição longa será aberta quando a média móvel rápida com um período de 50 cruza a lenta com um período de 120 e uma posição curta será Ser aberto quando a média móvel rápida com um período de 20 cruza o lento com um período de 70 Agora comprar sinais serão diferentes de vender sinais que ocorrerão em momentos diferentes, em diferentes situações de mercado. As regras propostas não são pensadas Estratégias muitas vezes Usar condições de espelho para entrada e saída entrar em uma posição longa significa sair de um curto e vice-versa No entanto, outros casos também são possíveis, e se queremos criar um protótipo universal de um Expert Advisor, precisamos levar isso em conta, por isso Teremos quatro regras. Além disso, vamos considerar nossas ações de um ângulo diferente A tabela abaixo mostra o tipo de operação de negociação Compra ou Venda eo tipo de ação de negociação aberto ou fechar As células da tabela contém um específico Conjunto de ações. BuyInit SellInit BuySupport SellSupport. Table 2 Expert Advisor Modos de negociação. Todos os modos de negociação são dadas através da implementação prática em MQL usando uma estrutura especial ENUMTRADESTATE Aqui está sua descrição. Estes modos permitem que qualquer Expert Advisor desenvolvido sob a abordagem proposta de flexibilidade Conectar e desconectar os módulos de negociação, assim, para alternar para um ou outro modo de negociação no fly. CTradeState modo de negociação switch. Using modos de negociação, o conselheiro perito será sempre capaz de entender em que ponto de tempo para executar determinadas ações No entanto, este O ponto de tempo deve ser determinado individualmente para cada Consultor Especializado. O controle do modo de negociação é particularmente necessário quando a negociação da seção FORTES da negociação MICEX FORTS tem várias características específicas, sendo a principal a compensação realizada duas vezes por dia, de 14 00 a 14 03 compensação intermediária E de 18 45 para 19 00 clearing principal É aconselhável não permitir Expert Advisors para realizar operações comerciais Durante a compensação. Evidentemente, se um EA apenas executa operações com a chegada de novos carrapatos ou a formação de novas barras, ele não funcionará enquanto o mercado está fechado, porque não há novas cotações serão recebidas Mas muitos Expert Advisors operam em intervalos especificados usando Um temporizador Para tais EAs, o controle sobre as ações de negociação é essencial Além disso, às vezes os comércios podem ser realizados nos fins de semana e feriados, e alguns corretores de Forex permitem a negociação mesmo nos fins de semana No entanto, devido à baixa volatilidade desses dias, bem como a sua baixa estatística Significa que estes dias devem ser melhor ignorados. De qualquer forma, o controle sobre os modos de negociação é um procedimento necessário para qualquer comerciante algorítmico profissional Esta tarefa pode ser confiada ao módulo CTradeState especial Este módulo é implementado como uma classe MQL5 e sua tarefa é retornar o Modo de negociação correspondente à hora atual Por exemplo, se a hora atual corresponde ao tempo de compensação, o módulo retornará o estado TRADEWAIT Se for hora de fechar al L, o módulo retornará TRADESTOP Vamos descrever seus métodos de operação e configuração em mais detalhes Aqui está o cabeçalho desta classe. A principal tarefa desta classe é retornar ao modo atual da estratégia, para o qual é necessário Chamar seu método GetTradeState Antes que o módulo seja capaz de retornar o estado, este estado deve ser adicionado usando o método SetTradeState. O algoritmo de operação do módulo é semelhante ao guia Schedule do agente de teste do MetaTrader 5.Fig 3 A guia Schedule no MetaTrader 5 Testing agent. This janela permite que você defina os dias da semana durante os quais o agente pode executar tarefas da MQL5 Cloud Network A classe CTradeState funciona de forma semelhante, mas permite que você defina um dos cinco valores de ENUMTRADESTATE para cada intervalo. Para melhor entender como usar CTradeState, vamos configurar o módulo de estados de negociação Para operações diárias no mercado FORTS, o autor do artigo usa a seguinte configuração apresentada como uma tabela. Brief de Dados Contábeis. É rastreado por nós desde julho de 2017 Ao longo do tempo ele foi classificado como alta como 15 243 599 no mundo Todo este tempo, foi de propriedade Universal Trading Estratégias de UNIVERSAL TRADING STRATEGIES PTY LTD foi hospedado pela Dreamscape Networks. Utscorp tem o Menor pagerank do Google e maus resultados em termos de Yandex índice de citação tópica Descobrimos que é mal socializado em relação a qualquer rede social De acordo com o Google SiteAdvisor e análise de navegação segura, é um domínio seguro, sem comentários de visitantes. Worldwide Audience. It parece que O tráfego neste site é muito baixo para ser exibido, sorry. Traffic Analysis. It parece que o número de visitantes e pageviews neste site é muito baixo para ser exibido, sorry. Subdomains Tráfego partes. Não tem subdomínios com tráfego considerável. Ainda não é eficaz em suas táticas de SEO que tem Google PR 0 Também pode ser penalizado ou falta de inbound links valiosos. MetaTrader 5 - Exemplos. Universal Expert Advisor Trading em um grupo e gerenciar um portfólio de estratégias Parte 4.Table of Contents. We Muitas vezes precisam criar algoritmos que devem se relacionar uns com os outros, ou seja, a operação de um algoritmo não deve ser influenciada pelas ações de outros algoritmos realizados ao mesmo tempo Esta situação ocorre quando você precisa combinar vários algoritmos em um ex5 módulo executável Apesar de sua Aparente simplicidade, estas tarefas têm algumas armadilhas significativas características algorítmicas que devem ser considerados ao construir o mecanismo de negociação strategies. The CStrategy mecanismo de negociação inclui um conjunto de algoritmos que implementam a cooperação de dois e mais estratégias de negociação Vamos discuti-los em detalhe em A quarta parte desta série Também vamos criar um perfil de negociação de um grupo de Expert Advisors negociando simultaneamente, a fim de diversi Fy riscos de negociação A classe CStrategyList um contêiner de estratégias tipo CStrategy pertence aos algoritmos que fornecem operação simultânea de estratégias A classe permite carregar a apresentação baseada em XML das estratégias, bem como criá-los dinamicamente usando o método correspondente uma fábrica de estratégias. O anexo O vídeo demonstra o processo de testar várias estratégias no MetaTrader 5 Strategy Tester Todas as estratégias baseadas no motor de negociação descrito têm um painel personalizado padrão, que ajudam você facilmente controlar estratégias separadas diretamente do gráfico. O segundo artigo do Universal A série de consultores especializados descreveu a classe CStrategy e seus módulos principais. Através do uso desta classe e de sua funcionalidade implementada nos módulos, toda estratégia herdada mantém uma lógica de negociação unificada. No entanto, organizar um processo de negociação usando robôs é mais do que mera execução de comércio É importante assegurar a A classe CStrategyList especial é usada para este propósito específico. Como você pode adivinhar a partir de seu nome, esta classe fornece uma lista de estratégias de tipo CStrategy, mas sua operação é um pouco mais complicada do que a Operação de um contêiner de dados usual O módulo resolve as seguintes tarefas. assurando operação simultânea de várias estratégias de negociação. delivering eventos de comércio para cada instância de estratégia. creação de objetos de estratégia a partir da lista unificada XML de estratégias de dados deserializing. interaction com o painel personalizado usado para EA Configuração. Aqui está o cabeçalho da classe CStrategyList. Como você pode ver, a maioria dos métodos apresentados são manipuladores de eventos comerciais Eles têm conteúdo do mesmo tipo Vamos analisar um deles, OnBookEvent. As visto a partir do conteúdo da classe, ele Busca estratégias de CStrategy na lista e chama um evento apropriado em cada uma das estratégias. A operação de outro método de evento S é semelhante. Além de passar de eventos, CStrategyList executa procedimentos especiais carregando estratégias a partir do arquivo XML Para obter mais informações sobre como ele funciona, por favor, leia a próxima seção. Loading Estratégias de uma lista XML A Portfolio of Strategies. If um executável ex5 Módulo contém vários algoritmos de negociação, precisamos de ferramentas para gerar um portfólio de estratégias Suponha que dois algoritmos com diferentes parâmetros de comércio em um módulo executável Como configurar esses parâmetros A coisa mais simples é a saída dos parâmetros de cada estratégia na janela de propriedades EA Mas o que Para fazer quando muitas estratégias são usadas, cada um dos quais tem muitos parâmetros Neste caso, a lista de parâmetros com diferentes modificadores, bandeiras, seqüências de caracteres e comentários seria enorme Isso é o que a janela de parâmetros de um Expert Advisor negociação três estratégias seria semelhante. Fig 1 A lista de parâmetros da EA negociação três strategies. AN Expert Advisor pode usar ainda mais estratégias Neste caso, o lis T de parâmetros poderia ter tamanho inimaginável O segundo aspecto importante do comércio de carteira é a criação de estratégias sobre o fluxo Suponha que queremos executar a mesma estratégia com dois conjuntos diferentes de parâmetros O que devemos fazer Obviamente, apesar dos diferentes conjuntos de parâmetros, estes dois Estratégias são uma e a mesma estratégia, embora com configurações diferentes Em vez de criar cada uma das estratégias manualmente, podemos confiar esta tarefa para uma classe separada A classe pode criar automaticamente um objeto de estratégia e configurá-lo corretamente. Antes de criar uma estratégia sobre o fluxo , É necessário fornecer a sua descrição completa. A descrição deve conter os seguintes detalhes: • o nome da estratégia; • uma ID de estratégia única ou seu número mágico; • o símbolo da estratégia está sendo executada; • o calendário de trabalho da estratégia. Parâmetros de estratégias de uma lista individual para cada estratégia. Strategy descrição pode conter outras propriedades, além da lista acima A melhor maneira Para fornecer essa descrição está usando XML A linguagem foi criada como uma ferramenta de descrição especial Permite descrever convenientemente objetos complexos, de modo que um objeto como uma estratégia de negociação pode ser convertido em um documento XML de texto e um documento de texto pode ser convertido Para uma estratégia Por exemplo, com base em um documento XML, o mecanismo de negociação pode criar uma estratégia e configurar corretamente seus parâmetros Para trabalhar com esse tipo de documentos diretamente do MQL5, devemos usar uma biblioteca XML-Parser especial disponível na Base de código. Aqui está um exemplo da descrição XML de um portfólio que carrega três estratégias de MovingAverage com parâmetros diferentes. Cada uma das estratégias forma a unidade de Estratégia Os seguintes atributos são especificados nela Símbolo, Tempo, Mágica e Nome da Estratégia Do exemplo acima, vemos que Cada uma das três estratégias tem seu próprio símbolo, número mágico e cronograma Além desses parâmetros necessários, outras propriedades da estratégia são especificadas no XML lis T Seção TradeStateStart especifica o modo de negociação no momento da estratégia de lançamento Secção Params contém os parâmetros da estratégia. No arranque, o mecanismo de negociação irá tentar carregar as estratégias de negociação a partir do arquivo XML acima Uma estratégia é carregada e criar com base em Este documento na classe CStrategyList em seu LoadStrategiesFromXML método Abaixo estão o conteúdo deste método, bem como de todos os métodos relacionados. A parte mais interessante dos métodos é a criação de uma estratégia usando o método estático especial CStrategy GetStrategy O nome da estratégia Deve ser passado para ele como um parâmetro O método retorna uma instância específica da estratégia associada com este nome O método foi feito estático para permitir o acesso a ele antes de um objeto de estratégia é criado GetStrategy é escrito em um arquivo de cabeçalho separado, porque ao contrário de outros Partes do mecanismo de negociação você precisará editá-lo de vez em quando adicionando novas estratégias para ele Se você quiser que sua estratégia seja carregada A partir de XML, o seu procedimento de criação deve ser adicionado diretamente a este método O código-fonte deste arquivo de cabeçalho é o seguinte. Once a estratégia foi criada, ele deve ser inicializado com os parâmetros necessários a partir da seção Params Como os parâmetros de cada estratégia são Em vez disso, a classe base da estratégia pode chamar o método virtual ParseXmlParams Se a estratégia, em seguida, substitui esse método e analisa corretamente a lista de parâmetros como um nó XML para Ele será capaz de especificar os valores necessários de seus próprios parâmetros. Por exemplo, veja o método ParseXmlParams da estratégia CMovingAverage que negocia com base em duas médias móveis, seu algoritmo é descrito no primeiro capítulo deste artigo. Esta estratégia é descrita no terceiro artigo da série, que abrange o desenvolvimento de estratégias personalizadas. Usando o mecanismo de criação de estratégia a partir de um arquivo, i T é possível configurar um conjunto de estratégias uma vez e, em seguida, carregá-lo a partir de um arquivo cada vez que você pode ir ainda mais e escrever um algoritmo de auto-otimização que salva os conjuntos de parâmetros de suas melhores execuções para um arquivo XML O mecanismo de negociação Leia este arquivo na inicialização e formará um conjunto de estratégias em sua base. Gerenciar estratégias usando um painel personalizado. Do ponto de vista do usuário, as estratégias podem ser convenientemente controladas usando um painel personalizado especial Este painel seria exibido em um gráfico Após o lançamento da EA e permitiria realizar operações simples com cada um dos algoritmos de negociação. Substituindo o modo de negociação de estratégia. Comprando ou vendendo o volume necessário em vez da estratégia. A última opção é útil se a EA não executar a ação apropriada para Alguma razão, e você precisa sincronizar seu estado com a situação atual do mercado. Descrição das classes que criam painéis personalizados e caixas de diálogo está além do escopo do assunto discutido, e requir O painel de controle do Expert Advisor é implementado em uma classe CPanel separada que inclui vários controles, como listas, botões e etiquetas de texto. Todas as classes para criação de gui estão disponíveis em Datafolder MQL5 Include Panel Para garantir a operação do painel, é necessário manipular o evento OnChartEvent diretamente no arquivo mq5 do EA O manipulador de eventos de gráfico está localizado na classe CStrategyList, por isso basta chamar esse manipulador no OnChartEvent. Esses eventos no CStrategyList os envia diretamente para o painel. Ao clicar em qualquer botão do painel, ele define a ação a ser executada e executa-a. Por exemplo, se selecionarmos uma estratégia da lista de estratégias, o índice do atual Estratégia será igual ao selecionado, então você pode executar outras ações comerciais Por exemplo, você pode alterar o modo de negociação da estratégia eleita, selecionando a opção apropriada A partir da lista drop-down dos modos de estratégia. Fig 2 A lista de modos de uma estratégia selecionada. Buying e venda em nome da estratégia selecionada é realizada da mesma forma Um ponteiro para a estratégia chama os métodos Buy e Sell da CStrategy Classe base Estes métodos de comprar e vender o volume passado neles Neste caso, o número mágico nas operações realizadas corresponde ao número mágico da estratégia, por isso é impossível distinguir a negociação manual das ações da EA. It deve ser observado Que a lógica de negociação de EA é implementada de modo que todas as posições abertas por um usuário são então mantidas por este Consultor Especializado no modo normal Ele gerencia tais posições como as suas próprias posições automaticamente aberto. Expert Advisors Trading em um Group. We pode montar um portfólio De estratégias de negociação As estratégias devem conter métodos responsáveis pela análise de parâmetros XML, ou seja, precisamos substituir o ParseXmlParams método É também necessário adicionar a criação da Pe de estratégia para o método CStrategy GetStrategy Finalmente, vamos precisar criar um arquivo XML com uma lista de estratégias e seus parâmetros Depois disso, a classe CStrategyList criará instâncias de estratégias e as adicionará à sua lista de estratégias. O painel personalizado exibirá Essas estratégias depois disso. Vamos criar um portfólio de estratégias consistindo dos Expert Advisors descritos acima. Exemplos de análise de configurações XML para o CMovingAverage e CChannel estratégias estão disponíveis nas seções 3 5 e 4 3.O conteúdo do CStrategy GetStrategy para a criação de As duas estratégias serão as follows. The toque final é para substituir o método responsável pelo nome completo da EA Realizar a substituição para a estratégia CMovingAverage. Now tudo está pronto para a criação de um portfólio de estratégias Nosso portfólio irá incluir quatro sistemas de negociação cada um dos Duas estratégias serão baseadas em MovingAverage, e duas outras usarão BollingerBands A mais det Ailed descrição dessas estratégias está disponível no artigo anterior Universal Expert Advisor Estratégias personalizadas e Classes Comércio Auxiliar parte 3.Our portfólio XML será como follows. This arquivo deve ser salvo uma pasta de dados comuns da plataforma como MetaTrader. Aqui está a fonte Código do módulo mq5 que cria um Expert Advisor. Custom variáveis StrategiesXMLFile e LoadOnlyCurrentSymbol são definidos na classe CStrategyList Eles são usados dentro desta classe para especificar a lista de estratégias para carregar eo modo que permite carregar apenas as estratégias com o símbolo Igual ao nome do instrumento que o Expert Advisor está sendo executado Observe também que alguns eventos, como OnBookEvent e OnTimer, não são usados Isso significa que eles não serão usados em estratégias personalizadas. A compilação deve ser bem-sucedida Depois que o Expert Advisor Nomeado no projeto está pronto para uso Vamos tentar executá-lo no gráfico Antes disso, devemos ter certeza de que todos os símbolos usados estão disponíveis no E MetaTrader Market Watch Após o início com êxito, o ícone Expert Advisor aparecerá no canto superior direito do gráfico. Outro botão é adicionado ao canto superior esquerdo do gráfico, maximiza o painel personalizado. Se selecionarmos a lista de EAs chamada Agente no Painel, uma lista de quatro Expert Advisors será open. Fig 3 Lista de carregados Expert Advisors. The captura de tela apresenta a lista de Expert Advisors formado pelo nosso arquivo XML Depois de um tempo, as estratégias começarão a negociar cada estratégia em seu símbolo individual. Analyzing Expert Advisor no Testador de Estratégia. Tendo gerado um portfólio de estratégias, podemos testá-lo no Testador de Estratégia para certificar-se de que ele funciona corretamente Nenhuma ação específica adicional é necessária, porque a lista de estratégias XML está localizada na pasta de dados global, acessível Através do Testador de Estratégia Após o lançamento do módulo EA nela, todos os símbolos necessários serão carregados automaticamente. Cada Expert Advisor executará operações de As regras de negociação individuais e, adicionalmente, desenhar o seu próprio conjunto de indicadores O vídeo abaixo mostra o teste de um portfólio de estratégias em quatro instrumentos diferentes. Simulação de estratégias baseadas CStrategy no Testador de Estratégia é semelhante ao comércio em tempo real usando essas estratégias A opção de teste visual permite Você facilmente verificar a exatidão das entradas e saídas das estratégias. Temos considerado algoritmos permitindo criar conjuntos aleatórios de estratégias de negociação com estes conjuntos ou portfólios de estratégias, você pode de forma flexível e eficiente escalar o processo de negociação, enquanto o gerenciamento de múltiplos algoritmos de negociação Localizado no mesmo módulo executável Os algoritmos são particularmente úteis para as estratégias que usam múltiplos instrumentos de negociação simultaneamente Usando a abordagem proposta, a criação de algoritmos comerciais semelhantes é tão fácil como desenvolver estratégias de negociação convencionais.
No comments:
Post a Comment