Wednesday 22 November 2017

Gerador De Sinais Comerciais


MetaTrader 5 - Sistemas de Negociação MQL5 Wizard: Como Criar um Módulo de Sinais de Negociação Introdução O MetaTrader 5 fornece uma poderosa ferramenta para verificação rápida de idéias comerciais. Este é o gerador das estratégias de negociação do MQL5 Wizard. O uso do MQL5 Wizard para criação automática de códigos Expert Advisor é descrito no artigo MQL5 Wizard: Criando Expert Advisors sem programação. A abertura do sistema de geração de código permite que você adicione suas próprias classes de sinais comerciais, sistemas de gerenciamento de dinheiro e módulos de trânsito aos padrões. Este artigo descreve os princípios de escrever módulos de sinais comerciais para usá-los ao criar Expert Advisors com o MQL5 Wizard. O Expert Advisor criado com MQL5 Wizard. Baseia-se em quatro pilares - quatro classes base: a classe CExpert (ou sua subclasse) é o principal motor de um robô comercial. Uma instância do CExpert contém uma cópia de cada classe: CExpertSignal. CExpertMoney e CExpertTrailing (ou suas subclasses): CExpertSignal é a base do gerador de sinais comerciais. Uma instância da classe derivada CExpertSignal, incluída no CExpert. Fornece um consultor especialista com informações sobre a possibilidade de entrar no mercado, níveis de entrada e colocação de ordens de proteção, com base em algoritmos internos. A decisão final sobre a execução das operações de negociação é feita pela EA. CExpertMoney é a base dos sistemas de gestão de risco e dinheiro. Uma instância da classe derivada CExpertMoney calcula volumes para abrir posições e colocar ordens pendentes. A decisão final sobre o volume é feita pela EA. CExpertTrailing - é a base do módulo de suporte de posições abertas. Uma instância da classe derivada CExpertTrailing informa uma EA sobre a necessidade de modificar as ordens de proteção de uma posição. A decisão final sobre a modificação do pedido é feita pela EA. Além disso, os membros da classe CExpert são instâncias das seguintes classes: CExpertTrade (para negociação) CIndicadores (para controlar indicadores e timeseries envolvidos no trabalho da EA). CSincbolInfo (para obter informações sobre o instrumento) CAccountInfo (para obtenção de informações sobre o estado da conta de negociação) CPositionInfo (para obtenção de informações sobre posições) COrderInfo (para obtenção de informações sobre ordens pendentes) Daqui em diante, sob perito, queremos dizer uma instância de CExpert ou É a sua subclasse. Mais detalhes de CExpert e trabalhar com ele serão descritos em um artigo separado. 1. Classe base CExpertSignal CExpertSignal é a base do gerador de sinais comerciais. Para comunicação com o mundo exterior, CExpertSignal possui um conjunto de métodos virtuais públicos: Descrição dos Métodos 1.1. Métodos de inicialização: o método Init () é chamado automaticamente logo após uma instância de classe ser adicionada ao especialista. Não é necessária a substituição do método. O método ValidationSettings () é chamado diretamente do especialista após a definição de todos os parâmetros. Você deve substituir o método se houver algum parâmetro de configuração. O método substituído deve retornar verdadeiro, se todas as opções forem válidas (utilizável). Se pelo menos um dos parâmetros estiver incorreto, ele deve retornar falso (o trabalho adicional é impossível). A classe base CExpertSignal não tem parâmetros ajustáveis, portanto, o método da classe base sempre retorna verdadeiro sem realizar verificações. O método InitIndicators () implementa a criação e inicialização de todos os indicadores e timeseries necessários. É chamado do especialista depois que todos os parâmetros são definidos e sua correção é verificada com sucesso. O método deve ser substituído se o gerador de sinal de negociação usar pelo menos um indicador ou timeseries. Indicadores e ou timeseries devem ser usados ​​através das classes apropriadas da Biblioteca Padrão. Os ponteiros de todos os indicadores ou timeseries devem ser adicionados à coleção de indicadores de um especialista (um ponteiro para o qual é passado como um parâmetro). O método substituído deve retornar verdadeiro, se todas as manipulações com indicadores e ou timeseries tiveram sucesso (eles são adequados para uso). Se pelo menos uma operação com indicadores e ou timeseries falhar, o método deve retornar falso (o trabalho adicional é impossível). A classe base CExpertSignal não usa indicadores ou timeseries, portanto, o método da classe base sempre retorna verdadeiro, sem executar nenhuma ação. 1.2. Métodos de verificação do sinal de abertura da posição: o método CheckOpenLong () gera um sinal de abertura de uma posição longa, definindo o nível de entrada e os níveis de colocação de pedidos de proteção. É chamado por um especialista para determinar se é necessário abrir uma posição longa. O método deve ser substituído, se for esperado que um sinal de uma abertura de posição longa seja gerado. O método deve implementar o algoritmo de verificar a condição de uma abertura de posição longa. Se a condição for atendida, as variáveis ​​preço, sl, tp e expiração (referências a quais são passados ​​como parâmetros) devem ser atribuídos valores apropriados e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe básica CExpertSignal não possui algoritmo interno para gerar um sinal de uma abertura de posição longa, de modo que o método da classe base sempre retorna falso. O método CheckOpenShort () gera um sinal de abertura de uma posição curta, definindo o nível de entrada e os níveis de colocação de pedidos de proteção. É chamado por um especialista para determinar se é necessário abrir uma posição curta. O método deve ser substituído, se se espera que um sinal de abertura de uma posição curta seja gerado. O método deve implementar o algoritmo para verificar a condição para abrir uma posição curta. Se a condição for satisfeita, as variáveis ​​preço, sl, tp e expiração (referências a quais são passados ​​como parâmetros) devem ser atribuídos valores apropriados e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe base CExpertSignal não possui algoritmo interno para gerar um sinal de abertura de uma posição curta, de modo que o método da classe base sempre retorna falso. 1.3. Métodos de verificação do sinal de fechamento da posição: o método CheckCloseLong () gera um sinal de fechamento de uma posição longa, definindo o nível de saída. É chamado por um especialista para determinar se é necessário fechar uma posição longa. O método deve ser substituído, se se espera que um sinal de fechamento de posição longa seja gerado. O método deve implementar o algoritmo para verificar a condição para fechar a posição longa. Se a condição for satisfeita, o preço variável (a referência ao qual é passado como um parâmetro) deve ser atribuído ao valor apropriado e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe base CExpertSignal não possui algoritmo interno para gerar um sinal de fechamento de posição longa, de modo que o método da classe base sempre retorna falso. O método CheckCloseShort () gera um sinal de fechamento de uma posição curta, definindo o nível de saída. É chamado por um especialista para determinar se é necessário fechar uma posição curta. O método deve ser substituído, se for esperado que um sinal de fechamento de posição curta seja gerado. O método deve implementar o algoritmo para verificar a condição para fechar uma posição curta. Se a condição for satisfeita, o preço variável (a referência ao qual é passado como um parâmetro) deve ser atribuído ao valor apropriado e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe base CExpertSignal não possui algoritmo interno para gerar um sinal de fechamento de posição curta, portanto o método da classe base sempre retorna falso. 1.4. Métodos de verificação do sinal de inversão de posição: o método CheckReverseLong gera um sinal de reversão de uma posição longa, definindo o nível de reversão e os níveis de colocação de ordens de proteção. É chamado por um especialista para determinar se é necessário reverter uma posição longa. O método deve ser substituído, se se espera que um sinal de uma inversão de posição longa seja gerado. O método deve implementar o algoritmo para verificar a condição de reversão de posição longa. Se a condição for satisfeita, as variáveis ​​preço, sl, tp e expiração (referências a quais são passados ​​como parâmetros) devem ser atribuídos valores apropriados e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. Na classe base CExpertSignal, o seguinte algoritmo para gerar um sinal de inversão de posição longa é implementado: Verificar um sinal para fechar uma posição longa. Verificando um sinal para abrir uma posição curta. Se ambos os sinais estiverem ativos (as condições são atendidas) e os preços próximos e abertos combinam, as variáveis ​​preço, sl, tp e expiração (referências para quais são passados ​​como parâmetros) são atribuídos os valores apropriados e o método retorna verdadeiro. Se a condição não for cumprida, o método retornará false. O método CheckReverseShort gera um sinal de reversão de uma posição curta, definindo o nível de reversão e os níveis de colocação de ordens de proteção. É chamado por um especialista para determinar se é necessário reverter uma posição curta. O método deve ser substituído, se se espera que um sinal de uma inversão de posição longa seja gerado de acordo com o algoritmo que difere do implementado na classe base. O método deve implementar o algoritmo para verificar a condição de inversão de posição curta. Se a condição for satisfeita, as variáveis ​​preço, sl, tp e expiração (referências a quais são passados ​​como parâmetros) devem ser atribuídos valores apropriados e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. Na classe base CExpertSignal, o seguinte algoritmo para gerar um sinal de inversão de posição curta é implementado: Verificar um sinal para fechar uma posição curta. Verificando um sinal para abrir uma posição longa. Se ambos os sinais estiverem ativos (as condições são atendidas) e os preços próximos e abertos combinam, as variáveis ​​preço, sl, tp e expiração (referências para quais são passados ​​como parâmetros) são atribuídos os valores apropriados e o método retorna verdadeiro. Se a condição não for cumprida, o método retornará falso. 1.5. Métodos de verificação do sinal de modificação de ordem pendente: o método CheckTrailingOrderLong () gera o sinal de modificação de uma ordem de compra pendente, definindo um novo preço de pedido. É chamado por um especialista para determinar se é necessário modificar uma ordem de compra pendente. O método deve ser substituído, se se espera que seja gerado um sinal de modificação de uma ordem de Compra pendente. O método deve implementar o algoritmo para verificar a condição de modificação de uma ordem de compra pendente. Se a condição for satisfeita, o preço variável (a referência ao qual é passado como um parâmetro) deve ser atribuído ao valor apropriado e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe básica CExpertSignal não possui algoritmo interno para gerar um sinal de modificação de uma ordem de compra pendente, portanto o método da classe base sempre retorna falso. O método CheckTrailingOrderShort () gera o sinal de modificação de uma ordem de venda pendente, definindo um novo preço de pedido. É chamado por um especialista para determinar se é necessário modificar uma ordem de venda pendente. O método deve ser substituído, se se espera que seja gerado um sinal de modificação de uma ordem de Venda pendente. O método deve implementar o algoritmo para verificar a condição de modificação de uma ordem de venda pendente. Se a condição for satisfeita, o preço variável (a referência ao qual é passado como um parâmetro) deve ser atribuído ao valor apropriado e o método deve retornar verdadeiro. Se a condição não for cumprida, o método deve retornar falso. A classe base CExpertSignal não possui algoritmo interno para gerar um sinal de modificação de uma ordem de Venda pendente, pelo que o método da classe base sempre retorna falso. 2. Desenvolva o seu próprio gerador de sinais de negociação Agora, depois de ter analisado a estrutura da classe base CExpertSignal, você pode começar a criar seu próprio gerador de sinais comerciais. Como mencionado acima, a classe CExpertSignal é um conjunto de cordas virtuais públicas - métodos, usando o qual o especialista pode conhecer a opinião do gerador de sinais comerciais sobre entrar no mercado de uma direção ou outra. Portanto, nosso principal objetivo é criar nossa própria classe de gerador de sinais comerciais, derivando-o da classe CExpertSignal e substituindo os métodos virtuais apropriados, implementando os algoritmos necessários. Nosso segundo problema (o que não é menos importante) - para tornar a nossa classe visível para o MQL5 Wizard. Mas, primeiro as coisas primeiro. 2.1. Criando a classe do gerador de sinais comerciais Primeiro, criamos (por exemplo, usando o mesmo MQL5 Wizard) um arquivo de inclusão com a extensão mqh. No menu Arquivo, selecione Criar (ou pressione a combinação de teclas CtrlN) e indique a criação de um arquivo incluído: Figura 2. Crie um arquivo de inclusão usando o Assistente MQL5. Deve-se notar que, para que o arquivo seja então detectado pelo MQL5 Wizard como Um gerador de sinal, ele deve ser criado na pasta IncludeExpertSignal. Para não limpar na Biblioteca Padrão. Crie nossa própria pasta IncludeExpertSignalMySignals, na qual criamos o arquivo SampleSignal. mqh, especificando esses parâmetros no MQL5 Wizard: Figura 3. Configurando o local do arquivo de inclusão Como resultado da operação do MQL5 Wizard, temos o seguinte padrão: O seguinte é apenas manual trabalhos. Remova as peças desnecessárias e adicione o que é necessário (inclua o arquivo ExpertSignal. mqh da Biblioteca Padrão e uma descrição de classe que agora está vazia). Agora, é necessário escolher os algoritmos. Como base para o nosso gerador de sinais comerciais, tomamos o preço do modelo generalizado, cruza a média móvel. Mas fazemos mais uma suposição: depois de cruzar a média móvel, o preço retrocede, e só então vai na direção certa. Reflita isso em nosso arquivo. Geralmente, quando você está escrevendo algo, não esqueça os comentários. Depois de algum tempo, ler um código cuidadosamente comentado será tão confortável. Agora, vamos definir quais dados são necessários para tomar decisões sobre a geração de sinais comerciais. No nosso caso, este é o preço aberto e o preço de fechamento do bar anterior, e o valor da média móvel na mesma barra anterior. Para obter acesso a esses dados, usamos as classes de biblioteca padrão CiOpen. CiClose e CiMA. Bem, discuta os indicadores e timeseries mais tarde. Enquanto isso, vamos definir uma lista de configurações para o nosso gerador. Primeiro, precisamos configurar a média móvel. Esses parâmetros incluem o período, a mudança ao longo do eixo do tempo, o método de média e o objeto da média. Em segundo lugar, precisamos configurar o nível de entrada e os níveis de colocação das ordens de proteção e a duração de uma ordem pendente, porque vamos trabalhar com pedidos pendentes. Todas as configurações do gerador serão armazenadas em membros de dados protegidos da classe. O acesso às configurações será implementado através de métodos públicos apropriados. Permite incluir essas alterações no nosso arquivo: uma vez que estamos usando membros de dados protegidos, precisamos adicionar um construtor de classe. No qual vamos inicializar esses dados por valores padrão. Para verificar os parâmetros, substitua o método virtual ValidationSettings de acordo com a descrição da classe base. Descrição da classe: Implementação do método ValidationSettings (): Agora, quando terminamos a maior parte do trabalho preparatório, fale mais sobre indicadores e timeseries. Indicadores e timeseries são a principal fonte de informação para a tomada de decisões (você certamente pode usar o lance de moeda ou as fases da lua, mas eles são bastante difíceis de formalizar). Como já definimos acima, para tomar decisões, precisamos das seguintes informações: o preço aberto do bar anterior, o preço de fechamento da barra anterior e o valor da média móvel na mesma barra anterior. Para obter acesso a esses dados, usaremos as seguintes classes da Biblioteca Padrão: CiOpen - para acessar o preço aberto da barra anterior, CiClose - para acessar o preço de fechamento da barra anterior, CiMA - para acessar o valor do Média móvel na barra anterior. Você pode perguntar: Por que usar o indicador ou timeseries, embrulhado em uma classe, para obter um único número. Existe um significado oculto, que vamos revelar agora. Como usar os dados de um indicador ou timeseries Primeiro, precisamos criar um indicador. Em segundo lugar, precisamos copiar a quantidade necessária de dados para um buffer intermediário. Em terceiro lugar, precisamos verificar se a cópia está completa. Somente após essas etapas, você pode usar os dados. Usando as classes da Biblioteca Padrão. Você evita a necessidade de criar um indicador, cuidar da disponibilidade de intermediários intermediários e sobre o carregamento ou liberação de dados de um identificador. O objeto de uma classe apropriada fará isso por você. Todos os indicadores necessários serão gerados pelo gerador de sinal durante a fase de inicialização, e todos os indicadores serão fornecidos com o buffer temporário necessário. E, além disso, uma vez que adicionamos um objeto indicador ou timeseries na coleção (o objeto de uma classe especial), você pode deixar de se importar com a relevância dos dados (os dados serão atualizados automaticamente pelo especialista). Bem, coloque os objetos dessas classes nos membros de dados protegidos. Para cada objeto, criamos um método de inicialização e método de acesso a dados. Vamos substituir o método virtual InitIndicators (de acordo com a descrição da classe base). Descrição da classe: Implementação de métodos InitIndicators, InitMA, InitOpen, InitClose: Todos os trabalhos preparatórios estão concluídos. Como você pode ver, nossa classe cresceu significativamente. Mas agora estamos prontos para gerar sinais comerciais. Figura 4. Sinais de negociação para o preço que atravessa a média móvel Vamos considerar nossos algoritmos de novo com mais detalhes. 1. O sinal de compra aparece quando as seguintes condições foram cumpridas na barra anterior: o preço do bar aberto é inferior ao valor da média móvel, o preço de fechamento da barra é maior do que o valor da média móvel, a média móvel Está aumentando. Nesse caso, oferecemos para colocar uma ordem de compra pendente com os parâmetros definidos pelas configurações. Para este propósito, substituimos o método virtual CheckOpenLong e preenchê-lo com a funcionalidade correspondente. 2. O sinal de venda aparece quando as seguintes condições foram cumpridas na barra anterior: o preço do bar aberto é maior que o valor da média móvel, o preço de fechamento da barra é inferior ao valor da média móvel, a média móvel Está diminuindo. Nesse caso, oferecemos para colocar uma ordem de Venda pendente com os parâmetros definidos pelas configurações. Para isso, substituímos o método virtual CheckOpenShort e preenchê-lo com a funcionalidade correspondente. 3. Não geraremos sinais para fechar posições. Deixe as posições serem fechadas por Stop LossTake Profit. 4. Vamos propor a modificação de uma ordem pendente ao longo da média móvel na distância especificada pelas configurações. Para isso, substituimos os métodos virtuais CheckTrailingOrderLong e CheckTrailingOrderShort. Preenchendo-os com funcionalidade correspondente. Descrição da classe: Implementação dos métodos CheckOpenLong, CheckOpenShort, CheckTrailingOrderLong, CheckTrailingOrderShort: Então, resolvemos o primeiro problema. O código acima é um código fonte da classe de gerador de sinais comerciais que atende a nossa tarefa principal. 2.2. Preparando uma descrição da classe criada dos sinais de negociação para MQL5 Wizard Agora nos voltamos para resolver o segundo problema. Nosso sinal deve ser reconhecido pelo gerador de estratégias de negociação MQL5 Wizard. Nós fizemos a primeira condição necessária: colocamos o arquivo onde será encontrado pelo MQL5 Wizard. Mas isto não é o suficiente. O MQL5 Wizard não deve apenas encontrar o arquivo, mas também reconhecê-lo. Para fazer isso, devemos adicionar ao texto original o descritor de classe para o MQL5 Wizard. Um descritor de classe é um bloco de comentários compostos de acordo com certas regras. Vamos considerar essas regras. 1. O bloco de comentários deve começar com as seguintes linhas: 2. A próxima linha é um descritor de texto (o que veremos no MQL5 Wizard ao escolher o sinal) no formato TitleltTextgt. Se o texto for muito grande para uma linha, você pode adicionar mais uma linha (mas não mais) depois dela. No nosso caso, temos o seguinte: 3. Em seguida, vem uma linha com o tipo de classe especificado no formato TypeltTypegt. O campo ltTypegt deve ter o valor do sinal (além dos sinais, o MQL5 Wizard conhece outros tipos de classes). 4. A seguinte linha no formato NameltNamegt é o nome curto do sinal (é usado pelo MQL5 Wizard para gerar os nomes das variáveis ​​globais do especialista). Obtemos o seguinte: 5. O nome de uma classe é um elemento importante da descrição. Na linha com o formato ClassltClassNamegt, o parâmetro ltClassNamegt deve coincidir com o nome da nossa classe: 6. Não preenchemos esta linha, mas deve estar presente (este é um link para a seção de referência de idioma): 7. Além disso , Há descrições dos parâmetros de configuração do sinal. Este é um conjunto de linhas (o número de linhas é igual ao número de parâmetros). O formato de cada linha é ParameterltNameOfMethodgt, ltTypeOfParametergt, ltDefaultValuegt. Aqui está o nosso conjunto de parâmetros: 8. O bloco de comentários deve terminar com as seguintes linhas: Permite adicionar o descritor ao código-fonte. Bom, isso é tudo. O sinal está pronto para usar. Para as estratégias de negociação do gerador MQL5 Wizard para poder usar nosso sinal, devemos reiniciar o MetaEditor (o Assistente MQL5 verifica a pasta IncludeExpert somente na inicialização). Depois de reiniciar o MetaEditor. O módulo criado de sinais comerciais pode ser usado no MQL5 Wizard: Figura 5. O gerador criado de sinais de negociação no MQL5 Wizard Os parâmetros de entrada especificados na seção de descrição dos parâmetros do gerador de sinais comerciais estão agora disponíveis: Figura 6 . Parâmetros de entrada do gerador criado de sinais de negociação no MQL5 Wizard Os melhores valores dos parâmetros de entrada da estratégia de negociação implementada podem ser encontrados usando o Strategy Tester do MetaTrader 5 terminal. O gerador de estratégias de negociação do MQL5 Wizard simplifica muito o teste de idéias de negociação. O código do especialista gerado baseia-se nas classes de estratégias de negociação da Biblioteca Padrão, que são usadas para criar certas implementações de classes de sinal de negociação, classes de gerenciamento de risco e dinheiro e aulas de suporte de posição. O artigo discute como escrever sua própria classe de sinais comerciais com a implementação de sinais no cruzamento do preço e a média móvel e como incluí-lo no gerador de estratégias de negociação do MQL5 Wizard. Bem como descreve a estrutura e o formato da descrição da classe gerada para o MQL5 Wizard. EA Generator amplificador EA Creator Crie seu próprio consultor especializado sem programação Gerador EA - Explicação O EA Generator ou EA Creator é um software exclusivo sem análogos. A maior vantagem deste software é que ele é baseado em uma rede neural que revela a conexão implícita com movimentos de moeda que podem ser preditos por indicadores padrão. Outra vantagem importante desta ferramenta é que cada consultor especializado criado é único. EA Generator é uma nova tecnologia de negociação automatizada revolucionária baseada nos últimos desenvolvimentos no campo da inteligência artificial. É um verdadeiro avanço na negociação forex automática. Os indicadores técnicos são derivados de taxas e seus sinais atrasam em relação ao preço. É por isso que é mais eficaz usar padrões de preços de velas para um comércio mais produtivo, este método é amplamente conhecido e usado com bastante sucesso. No entanto, para usá-lo, um comerciante deve aprender a escolher e interpretar figuras gráficas características, analisando o histórico de taxas de instrumentos financeiros por longos intervalos de tempo. Essa aprendizagem requer boa memória, talento para o pensamento associativo visual e pode durar anos. Ainda assim, alguns comerciantes conseguem sucesso no tempo e comercializam com êxito e estável, mas é quase impossível formalizar seus sistemas de negociação sob a forma de um algoritmo. É a intuição que importa nesse tipo de negociação, ou seja, o processamento subconsciente escondido de informações comerciais e a entrega apenas do resultado final, por isso é muito difícil para um comerciante formular o processo mental que leva a esse resultado final. Para resolver problemas de automação de tais sistemas de negociação, oferecemos o uso do pacote de software HLAIMAN - MakeEA MT4, que se baseia no uso de métodos modernos de reconhecimento de máquinas de imagens gráficas em combinação com algoritmos treináveis ​​em rede neural. O processo de geração de estratégias (robôs comerciais) usando o software fornecido é realizado no terminal MetaTrader 4. Um conjunto de sinais de negociação sob a forma de objetos gráficos, colocado em um gráfico de preços em uma janela do instrumento de negociação específico, é Os dados iniciais para geração. O programa de geração lê automaticamente dados, os processa e forma um algoritmo de rede neural correspondente de uma estratégia de negociação, que implementa a lógica de negociação dada, coordenando-a com os padrões do gráfico de preços atual. Um módulo de robô comercial, salvo como um arquivo de consultor especializado, é um programa de software autônomo, pronto para uso na plataforma MT4. Você pode testar, otimizar e, além disso, treinar seu consultor especializado, usando não apenas o instrumento de negociação inicialmente escolhido, mas também quaisquer outros instrumentos e períodos adicionais. O EA Generator é uma ferramenta útil e útil para o desenvolvimento independente de consultores especializados de Forex automatizados que lhe permitem negociar usando sua própria estratégia. Você não precisa escrever uma única linha de codificação para criar um consultor especializado. Tudo o que você precisa é colocar vender e comprar trades em um gráfico de um instrumento escolhido e prazo na forma de objetos gráficos padrão ndash setas. Arrow up está comprando, a flecha abaixo está sendo vendida. O software EA Generator cria algoritmos complexos que ajudam a trazer sua estratégia à vida dentro de um consultor especializado automatizado. Graças a este software, você não precisa de habilidades de programação ou matemática ou precisa pagar um programador para desenvolver um consultor especializado automatizado. Você só precisa colocar trocas em um gráfico, obter um consultor especializado e com apenas alguns cliques, este consultor especialista começará a usar os princípios de negociação que foram desenvolvidos exclusivamente por você. O software EA Generator usa a interface gráfica do terminal MT4. Isso significa que você pode usar toda a gama da interface gráfica padrão do terminalrsquos para fazer seus negócios. Você pode adicionar sinais e objetos gráficos a um gráfico, usar indicadores padrão e de terceiros e assim por diante. Whatrsquos mais, você pode usar o software EA Generator para pesquisar estratégias novas e lucrativas e usá-las para criar consultores especialistas automatizados. O conjunto de entrega de software do EA Generator inclui um consultor especializado, o que ajudará a colocar automaticamente sinais sobre os negócios mais rentáveis ​​em qualquer gráfico. O uso desses dados para criar um consultor especializado automatizado pode trazer lucro. Neural Net Explicação. O programa EA Generator do Componente de Software do Programa kernel laquohlaim. exeraquo. Isto está situado na pasta do software EA Generator. MT4 laquoMakeSignalsraquo consultor especialista. Isto está situado na pasta do terminal quando o software EA Generator está instalado. Ele é usado para criar automaticamente sinais comerciais em um gráfico de instrumento ou cronograma. Script laquoMakeAlgorithmraquo. Isso também está localizado na pasta terminal quando o software EA Generator está instalado. Ele é usado para criar consultores especializados de Forex automatizados ao inserir sinais comerciais em um gráfico de instrumento ou cronograma. Secure EA Generator Formulário de aceitação sem risco Gerador de EA - 1 licença Garantia de 30 dias de devolução do dinheiro 247 Suporte ao cliente Atualizações gratuitas ao longo da vidaMetaTrader 5 - Exemplos Gerador de sinal de negociação com base em um indicador personalizado Introdução Neste artigo, eu direi como criar um Gerador de sinal de negociação com base em um indicador personalizado. Você verá como você pode escrever seu próprio modelo de negociação para um indicador personalizado. Também explicarei o propósito do modelo 0 e por que as estruturas de tipo ISPATTERNAGE (0) são usadas no módulo de sinal de negociação. O artigo usará dois tipos de código: o código que estamos prestes a modificar e o código que já modificamos. O código modificado será destacado da seguinte maneira: O código modificado é o código a ser copiado e colado no gerador de sinal de negociação. Espero que você compreenda melhor o código através do uso do destaque. 1. Indicador personalizado Estou certo de que deve haver um indicador não incluído na entrega padrão que você estava querendo usar por um longo período de tempo. E esse é o indicador com base no qual você deseja construir um módulo de sinal de negociação. Eu usarei o indicador MACD da entrega padrão como tal indicador. A localização do indicador é a seguinte. MQL5IndicatorsExamplesMACD. mq5. Cada indicador pode descrever um ou mais modelos de mercado. Um modelo de mercado é uma certa combinação do valor do indicador e do valor do preço. Os modelos disponíveis para o indicador MACD são inversão, cruzamento da linha principal e sinal, cruzamento do nível zero, divergência e dupla divergência. 1.1 Novo modelo de indicador. Vamos assumir que não estamos satisfeitos com os modelos de mercado disponíveis disponíveis para o indicador e queremos apresentar nosso próprio modelo de indicador. A nova descrição do modelo do indicador: se o indicador MACD estiver abaixo da linha zero e seus valores estão aumentando, podemos esperar mais crescimento e abrir uma posição longa: Figura 1: Modelo de crescimento do indicador prospectivo se o indicador MACD estiver acima da linha zero e Seus valores estão diminuindo, podemos esperar mais diminuir e abrir uma posição curta: Figura 2: Modelo de indicador prospectivo de queda Então, decidimos o indicador personalizado e apresentamos o novo modelo de negociação para o indicador e sua descrição. Vamos continuar escrevendo o código. 2. Escrevendo o gerador de sinal de negociação com base em nosso indicador personalizado Nosso gerador é o descendente da classe base CExpertSignal. A classe base CExpertSignal é uma classe para criar geradores de sinais comerciais. A classe CExpertSignal contém um conjunto de métodos públicos (ou seja, acessíveis externamente) que permitem que um Consultor Especial veja a indicação do gerador de sinal de negociação quanto à direção de entrada no mercado. Uma vez que estamos trabalhando no nosso próprio gerador de sinais comerciais, ele deve ser herdado da classe CExpertSignal, com os métodos virtuais relevantes redefinidos (preenchidos com o código correspondente). 3. Criando a Classe do Gerador de Sinal de Negociação O gerador de sinal de negociação deve, por padrão, estar localizado em. MQL5IncludeExpertSignal pasta. Não sobrecarregar o. Pasta de sinal da Biblioteca Padrão com muita informação, vamos criar uma nova pasta sob o. Expert pasta e chamar MySignals. Figura 3. Criando a nova pasta MySignals Em seguida, criaremos um arquivo de inclusão usando o MQL5 Wizard. No MetaEditor, selecione Novo no menu Arquivo e, em seguida, selecione Incluir arquivo (.mqh). Figura 4. MQL5 Wizard. Criando um arquivo de inclusão O nome da classe de gerador de sinal será o MySignal. Ele será localizado em IncludeExpertMySignalsMySignal. Permite especificá-lo: Figura 5. MQL5 Wizard. Localização do arquivo de inclusão Depois de clicar em Concluir, o MQL5 Wizard irá gerar um modelo vazio. A partir deste momento, faremos tudo manualmente e os dados do copypaste. Gostaria de chamar sua atenção para o fato de que, internamente, todos os sinais da Biblioteca Padrão são quase idênticos. Eles apenas diferem em algoritmos usados ​​para determinar modelos comerciais. Portanto, você pode levar qualquer arquivo da pasta IncludeExpertSignal, copiar seu conteúdo e colá-lo no seu modelo. Você pode então começar a editar o arquivo resultante do gerador de sinal de negociação. 4. Descrição da classe do gerador de sinal de negociação Como modelo, peguei o arquivo IncludeExpertSignalSignalEnvelopes. mqh do qual copiei tudo, exceto o cabeçalho: e coloquei tudo no nosso modelo MySignal. mqh quase vazio. Isto é o que eu obtive: aqui nós damos uma ordem ao pré-processador para incluir a classe base CExpertSignal para criar geradores de sinais comerciais em nosso modelo. Continuaremos editando o modelo. Para garantir que nosso modelo seja visível mais tarde no MQL5 Wizard, precisamos alterar a descrição da nossa classe: Então, vamos ver. A linha mostra o nome da nossa classe de sinal sob a qual será exibida no MQL5 Wizard. Vamos mudar esse nome para algo como isto: indica o nome para descrever variáveis ​​de nossa classe de sinal de negociação. Esta descrição será usada pelo MQL5 Wizard. Permite modificar esta linha da seguinte maneira: Daremos o mesmo nome para este parâmetro: A seguinte linha define o nome da classe: Vamos renomear esse parâmetro: Deixe o próximo parâmetro como está. O seguinte grupo de parâmetros é responsável pela descrição dos parâmetros do indicador subjacente ao gerador de sinal de negociação. Como mencionei anteriormente, vou usar. MQL5IndicatorsExamplesMACD. mq5 como o indicador personalizado. Possui os seguintes parâmetros: 4.1 Parâmetro Descrição Bloco Observe que os parâmetros fornecidos acima se aplicam apenas a MACD. mq5. Seu indicador personalizado pode ter parâmetros completamente diferentes. O principal aqui é combinar os parâmetros dos indicadores com suas descrições na classe de sinal de negociação. O bloco de descrição de parâmetro na classe de sinal de negociação para o indicador personalizado em consideração, MACD. mq5. Será o seguinte: Dê uma olhada em como os parâmetros no indicador agora combinam as descrições no bloco de descrição da classe. Após todas as modificações, o bloco de descrição da nossa classe será o seguinte: na programação, é considerada uma boa prática fornecer comentários para o código, facilitando assim a compreensão do código, ao voltar a ele depois de algum tempo ter passado . So, we will modify the following block: to match the description of our class: To avoid confusion, we need to replace all CSignalEnvelopes values with CSignalMyCustInd Figure 6. Replacing CSignalEnvelopes with CSignalMyCustInd Lets now have a look at some theoretical aspects. 5. The CiCustom Class We will need the CiCustom class to continue working on the code of the class of trading indicators of the custom indicator. The CiCustom class was created specifically for working with custom indicators. The CiCustom class provides creation, setting up and access to custom indicator data. 6. The CIndicators Class. CIndicators is the class for collecting instances of time series and technical indicator classes. The CIndicators class provides creation, storage and management (data synchronization, handle and memory management) of technical indicator class instances. We are particularly interested in the CIndicators class because of the Create method. This method creates an indicator of a specified type with specified parameters. 7. Continue Writing Our Trading Signal Class The next code block we are going to modify (lines 28-42) is as follows: 8. Creation of the Custom Indicator in the Trading Signal Generator Take a look at the code block provided above. The line declares an object - the CiEnvelopes class indicator. CiEnvelopes is the class for working with the technical indicator from the Standard Library. The CiEnvelopes class was created based on the technical indicator from the Standard Library. However, we are writing the code of the generator based on our custom indicator. Therefore there is no ready made class for our or your custom indicator in the Standard Library. What we can do is use the CiCustom class. Lets declare our indicator as the CiCustom class: 8.1 Four Variables Do you remember the parameter description block in the class There were three parameters in that description. In the protected area of our generator class, we will now declare four variables for passing the values to our four parameters: The following code block: This code declares variables that give weight to trading models of our trading signal generator. Lets replace the block of weights with the following code: 9. Model 0 As you remember, at the beginning of the article it was decided to describe only one new model that will be generated by our trading signal generator. However, in the above code I specified two market models (model 0 and model 1). Here, model 0 is an important auxiliary model. It is required when trading with pending orders. When applied, model 0 ensures that pending orders move together with the price. Lets take a look at our trading signal generator and the following conditions: the MACD custom indicator is below the zero line, and its values are increasing, we are trading with pending orders set 50 points from the bar opening price (four-digit price value). These conditions perfectly describe our trading model. Here is how things will be moving: Our trading model conditions will be checked upon appearing of the bar no. 1. What we have: MACD is below the zero line, yet it is gaining momentum. This corresponds to the buy signal. Therefore, we place a pending Buy Stop order: Upon appearing of the next bar no. 2, the condition check finds that MACD is below zero and is falling. According to our trading model, there are currently no conditions for buying or selling. However, note: as per the CExpertSignal class logic, since there are no conditions either for buying or selling, all pending orders should be DELETED. In this case, if the price goes up suddenly and dramatically, we will miss the opportunity to enter the market long to our advantage as there will be no pending order. This is where the auxiliary model 0 appears to be very useful. The auxiliary model 0 will apply, provided that: the MACD custom indicator is below the zero line. So we can place a pending Buy Stop order. Since we place an order 50 points from the bar opening price, we, in fact, simply move the pending Buy Stop order according to the price movement: Thus, by using the auxiliary model 0 we get the opportunity to move a pending order as per the price movement. 10. Further Modifications of the Template Code The next code block to be modified is as follows: In this block, we declare methods of setting adjustable parameters, methods of adjusting weights of trading models, method of verification of settings, indicator initialization method and methods of checking if the market models are generated. Taking into consideration that we have declared four variables in adjustable parameters, the block of methods for setting the parameters will be as follows: The next code fragment will remain unchanged: The next code block to be modified is as follows: This block will be heavily modified. Please note that I am using the GetData method of the CIndicator class. Names of the called methods will be provided directly in the code: The next code block is the constructor. In the constructor, we will change the names of the variables. Further, we will use only two series: USESERIESHIGHUSESERIESLOW Lets modify the ValidationSettings method of our class. In the checking block, we check the main condition for the given custom indicator: mperiodfastgtmperiodslow The next block deals with creation of indicators: As applied to our custom indicator: The following block is the indicator initialization block: First, we add an object to the collection. We then set the parameters of our indicator and create the custom indicator using the Create method of the CIndicators class: The next block checks buying conditions: According to our model 0 implementation. two models are checked: The following block checks selling conditions: According to our model 0 implementation. two models are checked: Conclusion I hope this article has helped you to understand how you can create a trading signal generator based on your custom indicator.

No comments:

Post a Comment