Thursday 17 May 2018

Expert advisor tutorial mt4 forex


Tutorial de Expert Advisors. Registrado em março de 2006 Status: OBRIGADO MERLIN, TWEE e FF Equipe 4.620 Postagens Por favor, mantenha seu dinheiro no banco. Não use um EA até que você possa ser rentável de negociação em seu próprio país. Não há EA por aí que funciona o tempo todo. Você sempre terá que usar suas próprias habilidades de negociação para ser lucrativo. Este é um negócio e, como qualquer negócio, é preciso muito trabalho para que isso aconteça. Boa sorte, Scott, eu entendi mal o seu post. Aqui está a resposta que você procura. Está bem. Vou listar os passos e você pode ver se os seus estão corretos. 1. feche o MT4 2. clique com o botão direito do mouse no botão de início esquerdo. clique com o botão esquerdo em explorar. 3. Role para baixo até encontrar os arquivos do programa e clique no sinal. 4. desloque-se para baixo até encontrar a pasta do seu agente MT4 e clique no sinal 5. aqui, na pasta de especialistas, é onde você coloca o seu EA. (não na pasta do indicador) 6. Inicie o backup do seu programa MT4. 7. Certifique-se de que a janela do Navegador está aberta no lado esquerdo, abaixo dos preços da moeda. 8. desloque-se pelo navegador até encontrar o seu EA. 9. Arraste esse EA para a janela do gráfico. 10. Clique com o botão direito do mouse na janela do gráfico e selecione Expert Advisors e, em seguida, selecione properties. 10. Isso trará o menu de configurações. 11. Você pode ajustar as configurações para qualquer um que você tenha encontrado neste tópico ou usar o seu próprio. 12. selecione a guia comum e verifique se a opção Permitir Live Trading está selecionada. 13. pressione ok. 14. vá para o início do programa e certifique-se de que a guia do menu para Expert Advisors mostre uma seta verde e não um x vermelho. se o x vermelho estiver presente, basta pressionar a aba e ela ficará verde. 15. Agora você deve ter um rosto sorridente no canto direito da tela. Por favor, ignore os passos que você já conhece. Eu não tenho ideia do seu nível. espero que isto ajude. Existe algum tutorial para usar o EA para negociar automaticamente com o Metatrader 4, eu tenho uma conta demo de 500. Eu tentei muito, mas ninguém trabalha o que eu fiz de errado eu dou um duplo clique nele no Metatrader eo nome do sistema é mostrado em cima do gráfico, mas não trocas de pls help regards Por favor, mantenha seu dinheiro no banco. Não use um EA até que você possa ser rentável de negociação em seu próprio país. Não há EA por aí que funciona o tempo todo. Você sempre terá que usar suas próprias habilidades de negociação para ser lucrativo. Este é um negócio e, como qualquer negócio, é preciso muito trabalho para que isso aconteça. Boa sorte, Scott, eu entendi mal o seu post. Aqui está a resposta que você procura. Está bem. Vou listar os passos e você pode ver se os seus estão corretos. 1. feche o MT4 2. clique com o botão direito do mouse no botão de início esquerdo. clique com o botão esquerdo em explorar. 3. Role para baixo até encontrar os arquivos do programa e clique no sinal. 4. desloque-se para baixo até encontrar a pasta do seu agente MT4 e clique no sinal 5. aqui, na pasta de especialistas, é onde você coloca o seu EA. (não na pasta do indicador) 6. Inicie o backup do seu programa MT4. 7. Certifique-se de que a janela do Navegador está aberta no lado esquerdo, abaixo dos preços da moeda. 8. desloque-se pelo navegador até encontrar o seu EA. 9. Arraste esse EA para a janela do gráfico. 10. Clique com o botão direito do mouse na janela do gráfico e selecione Expert Advisors e, em seguida, selecione properties. 10. Isso trará o menu de configurações. 11. Você pode ajustar as configurações para qualquer um que você tenha encontrado neste tópico ou usar o seu próprio. 12. selecione a guia comum e verifique se a opção Permitir Live Trading está selecionada. 13. pressione ok. 14. vá para o início do programa e certifique-se de que a guia do menu para Expert Advisors mostre uma seta verde e não um x vermelho. se o x vermelho estiver presente, basta pressionar a aba e ela ficará verde. 15. Agora você deve ter um rosto sorridente no canto direito da tela. Por favor, ignore os passos que você já conhece. Eu não tenho ideia do seu nível. espero que isto ajude. Oi pessoal Talvez alguém aqui possa me ajudar com a possibilidade de anexar um indicador a um gráfico MetaTrader. Parece bastante simples, mas eu tenho baixado vários indicadores para minha pasta de indicadores personalizados. Quando vou abrir o Navegador o arquivo não está lá. Os arquivos que estou baixando têm a extensão mq4. Im completamente perdido como mover esses arquivos para o Navegador. Eu tenho baixado um arquivo e compilado, mas nada aparece. Sugestões são muito apreciadas. MCR, eu corri para a mesma coisa. Há provavelmente uma maneira "melhor" de fazer isso, mas eu encontrei o sucesso fazendo o seguinte. Primeiro, abra o MetaEditor e confirme que você pode encontrar o EA que deseja usar. Deve estar lá. Se não, dê um duplo clique na pasta de arquivos. Em seguida, abra um novo EA para criar um do zero. Dê-lhe um nome apropriado para o EA que você realmente deseja usar, mesmo que seja um novo EA "cotblank". Agora, copie o conteúdo do seu EA preferido e cole-o sobre o conteúdo do NOVO EA. Compile e você é bom para ir. Simple Expert Advisor Problema 29. Crie um Expert Advisor negociação. Argumentos preliminares Antes de começar a programar um Expert Advisor de negociação, é necessário definir os princípios gerais de um programa futuro. Não há regras rígidas de criação de programa. No entanto, depois de ter criado um programa, um programador geralmente continua a melhorá-lo. Para ser capaz de compreender facilmente o programa no futuro, ele deve ser criado de acordo com um esquema bem pensado e fácil de entender (é especialmente importante que um programa seja melhorado por outro programador). O programa mais conveniente é aquele que consiste em blocos funcionais, cada um dos quais é responsável por sua parte de cálculos. Para criar um algoritmo de um Expert Advisor, analise o que um programa operacional deve fazer. Um dos dados mais importantes na formação de ordens de negociação é a informação sobre ordens que já existem em um terminal de cliente. Algumas das estratégias de negociação permitem apenas uma ordem unidirecional. Geralmente, se uma estratégia de negociação permitir, várias ordens podem ser abertas em um terminal ao mesmo tempo, embora seu número deva ser razoavelmente limitado. Ao usar qualquer estratégia, as decisões comerciais devem ser tomadas levando em conta a situação atual. Antes que uma decisão comercial seja feita em um programa, é necessário saber quais ordens de negociação já foram abertas ou colocadas. Primeiro de tudo, um programa deve conter um bloco de contabilidade de ordens que está entre os primeiros a serem executados. Durante uma execução de EA, as decisões de negociação devem ser tomadas, cuja implementação leva à execução de operações de negociação. Parte de código responsável pela formação de ordens de negociação é melhor escrita em um bloco separado. Um Expert Advisor pode formar uma solicitação de negociação para abrir uma nova ordem pendente ou de mercado, fechar ou modificar qualquer um dos pedidos existentes ou não executar nenhuma ação. Um EA também deve calcular os preços do pedido, dependendo do desejo do usuário. As decisões comerciais devem ser tomadas em um programa com base em critérios comerciais. O sucesso de todo o programa depende da exatidão de se detectar critérios comerciais no programa. Ao calcular critérios comerciais, um programa pode (e deve) levar em conta todas as informações que podem ser úteis. Por exemplo, um Expert Advisor pode analisar a combinação de valores de indicadores técnicos, tempo de notícias importantes, hora atual, valores de alguns níveis de preços, etc. Por conveniência, a parte do programa responsável pelo cálculo dos critérios de negociação deve ser escrita em separado. quadra. Um Expert Advisor de negociação deve necessariamente conter um bloco de processamento de erros. A análise de erros que podem ocorrer na execução da operação de negociação permite, por um lado, repetir uma solicitação de negociação e, por outro lado, informar um usuário sobre uma possível situação de conflito. Estrutura de um Expert Advisor Simples Abaixo está um esquema estrutural de um Expert Advisor simples, construído com base em vários blocos funcionais, em cada bloco de uma determinada parte destacada de cálculos. No estágio de desenvolvimento do EA a seguir, ainda não há código de programa. Ao mesmo tempo, o algoritmo de um programa é em grande parte formado. Como o EA construído sobre as bases do esquema oferecido irá operar pode ser facilmente entendido simplesmente olhando o esquema e orientando sobre os nomes de blocos e matrizes de relações (controle de passagem) entre eles. Depois que o controle de início do programa é passado para o bloco de processamento preliminar. Neste bloco, alguns parâmetros gerais podem ser analisados. Por exemplo, se não houver barras suficientes em uma janela (barras necessárias para o cálculo de parâmetros de indicadores técnicos), um EA não poderá operar adequadamente. Nesse caso, um EA deve encerrar a operação preliminarmente informando um usuário sobre ele e relatando o motivo da rescisão. Se não houver contra-indicações de caráter geral, o controle é passado para ordenar o bloqueio contábil. No bloco de ordens contábeis, o número e a qualidade dos pedidos existentes em um terminal do cliente para uma segurança (para a janela da qual o EA está anexado) são detectados. Neste bloco, as ordens de outros títulos devem ser eliminadas. Se uma estratégia de negociação programada exigir o uso apenas de ordens de mercado (e não usar ordens pendentes), o fato da presença de ordens pendentes deve ser detectado. Se uma estratégia admite apenas uma ordem de mercado e na verdade existem várias ordens, esse fato também deve ser conhecido. A tarefa do bloco de contabilidade de pedidos (neste esquema) é definir se a situação atual de negociação corresponde a uma situação esperada, ou seja, aquela em que o EA pode operar adequadamente. Se a situação corresponder, o controle deve ser passado para o próximo bloco para continuar a operação dos EAs, caso contrário, a operação dos EAs deve ser encerrada e esse fato deve ser relatado a um usuário. Se não houver pedidos no terminal ou o número e a qualidade dos pedidos existentes corresponder ao esperado, o controle será passado para o bloco de definição dos critérios de negociação. Neste bloco são calculados todos os critérios necessários para a tomada de decisões comerciais, ou seja, critérios para abertura, fechamento e modificação de ordens. Mais controle é passado para o bloco de ordens de fechamento. É fácil entender por que, no esquema oferecido, o bloco de ordens de fechamento é executado antes do bloco de ordens de abertura. É sempre mais razoável processar os primeiros pedidos existentes (fechar ou modificar) e somente depois disso abrir novos pedidos. Geralmente, é correto ser guiado pelo desejo de ter o mínimo de ordens possível. Durante a execução deste bloco todas as ordens, para as quais o critério de fechamento foi ativado, devem ser fechadas. Depois que todos os pedidos necessários foram fechados, o controle é passado para um bloco de cálculo de tamanho de novos pedidos. Existem muitos algoritmos para calcular um volume de pedidos. O mais simples deles é usar um tamanho de lote fixo e constante. É conveniente usar esse algoritmo em um programa para testar estratégias. O método mais popular de definir um tamanho de pedido é definir o número de lotes, dependendo da quantidade de margem livre, por exemplo, de 30 a 40. Se a margem livre não for suficiente, o programa encerra sua operação informando o usuário sobre o motivo. Depois que o número de lotes para abertura de novos pedidos for definido, o controle é passado para o bloco de abertura do pedido. Se algum dos critérios calculados anteriormente apontar para a necessidade de abrir uma ordem de um certo tipo, um pedido de negociação para abrir um pedido é formado neste bloco. Há também um bloco de análise de erros em um Expert Advisor. Se alguma operação de negociação falhou, o controle (apenas neste caso) é passado para o bloco de processamento de erros. Se um erro retornado por um servidor ou terminal de cliente não for crucial, mais uma tentativa será feita para executar uma operação de negociação. Se um erro crucial for retornado (por exemplo, uma conta é bloqueada), um EA deve encerrar sua operação. Lembre-se, no MQL4 não há possibilidade de o programa terminar uma operação do EA em uma janela de segurança (diferentemente dos scripts, veja Funções Especiais). O que pode ser feito de uma maneira de programa é o término de start (). Em um novo início da função start () em um novo tick, o valor de um determinado flag de proibição de flag variável (neste caso habilitado como resultado de um erro crítico) pode ser analisado e o controle pode ser passado para o término do operação de função especial, a formação de novo pedido de comércio não é permitida. No esquema oferecido, o valor da bandeira é analisado no bloco de processamento preliminar. Estratégia de Negociação Os preços do mercado estão em constante movimento. O estado de mercado a qualquer momento pode ser condicionalmente caracterizado como uma tendência - forte mudança de preço unidirecional (aumento ou queda), ou como um movimento de preço flat-lateral com desvios fracos de uma certa média. Essas características de mercado são condicionais, porque não há critérios claros, de acordo com qual tendência ou flat podem ser identificados. Por exemplo, movimentos laterais longos com fortes desvios que não podem ser traçados nem em um plano nem em uma tendência. Geralmente assume-se que o mercado está principalmente no estado de movimento lateral e as tendências geralmente ocorrem 15-20 do tempo. Todas as estratégias de negociação também podem ser convencionalmente divididas em dois grupos principais. O primeiro grupo contém estratégias orientadas para planos. A idéia principal de tais estratégias é que, depois que um desvio evidente do preço deva retornar à posição anterior, é por isso que as ordens são abertas na direção contrária ao movimento do último preço. As estratégias do segundo grupo são estratégias de tendência, quando as ordens são abertas na mesma direção do movimento do preço de sal. Existem estratégias mais complicadas (combinadas). Tais estratégias levam em conta muitos fatores diferentes que caracterizam o mercado, como resultado, a negociação pode ser executada tanto no plano quanto na tendência. Não é difícil implementar a negociação de acordo com essa ou aquela estratégia tecnicamente - o MQL4 contém todos os meios necessários para isso. O principal trabalho na criação de uma vez própria estratégia consiste na busca de critérios de negociação. Critérios de Negociação Neste exemplo, tentaremos construir um Expert Advisor de tendência, ou seja, aquele que abrirá pedidos na direção do movimento de preços. Então, precisamos encontrar entre vários indicadores técnicos aqueles que detectam o início de uma tendência. Um dos métodos mais simples de pesquisar critérios de negociação é baseado na análise da combinação de MAs com diferentes períodos médios. A figura 111 e a figura 112 mostram a posição de dois MA diferentes (com períodos de média 11 e 31) em diferentes partes do mercado. Médias com pequeno período médio (linhas vermelhas) estão mais próximas de um gráfico de preços, sinuosas e móveis. Médias móveis com maior período de média (linha azul) são mais inertes, têm maior defasagem e estão mais distantes dos preços de mercado. Vamos prestar atenção aos lugares onde os MAs com diferentes períodos médios se cruzam e tentam decidir, se o fato do cruzamento MA pode ser usado como um critério de leitura. Fig. 111. Cruzamento de MA (11) e MA (31) quando a direção do movimento de preços muda. Na Fig. 111, vemos uma parte do mercado em que as ordens de abertura na direção do movimento de preços na passagem de MA são justificadas. No ponto A, a linha vermelha cruza a linha azul de baixo para cima, depois disso o preço de mercado continua crescendo por algum tempo. Além disso, o cruzamento de MA reverso indica a mudança de direção do movimento de preço. Se abrirmos uma ordem de compra no ponto A e fechá-la em B, obteremos lucro proporcional à diferença entre os preços A e B. Fig. 112. Cruzamento de MA (11) e MA (31) quando a direção do movimento de preços muda. Ao mesmo tempo, há outros momentos no mercado quando o MA se cruza, mas isso não leva a uma subida ou descida considerável dos preços (Fig. 112). Pedidos abertos no cruzamento do MA nesses momentos levarão a perdas. Se a venda for aberta em A e fechada em B, tal negociação trará perdas. O mesmo pode ser dito sobre uma ordem de compra aberta em B e fechada em C. O sucesso de toda a estratégia implementada com base no cruzamento de AM depende do número de peças que podem ser caracterizadas como tendências e planas. No plano, muitas vezes o cruzamento MA é um evento regular que interfere com qualquer estratégia de tendência. Inúmeros sinais falsos geralmente levam a perdas. É por isso que este cruzamento de MAs com diferentes períodos de média pode ser usado para construir estratégias de negociação apenas em combinação com outros sinais que provem uma tendência. Neste exemplo (para construir um Expert Advisor simples), teremos que recusar o uso deste sinal. Nós usaremos outro sinal. Analisando visualmente o caráter das mudanças de preço no mercado, podemos ver que uma alta ou baixa de preço de uma direção ocorre frequentemente como resultado de um movimento curto e forte. Em outras palavras, se em um curto período ocorreu um movimento forte, podemos esperar sua continuação em um período de médio prazo. A figura 113 mostra o período de mercado em que um movimento forte resultou na continuação da mudança de preço na mesma direção. Como o movimento forte da cota, podemos usar a diferença de MAs com diferentes períodos médios. Quanto mais forte o movimento, maior a defasagem do MA com maior período médio de MA com um pequeno período de média. Além disso, mesmo os movimentos de preços descontínuos fortes com retorno adicional não resultam numa grande diferença entre os MAs, isto é, numerosos sinais falsos não aparecem. Por exemplo, o salto de preço em 50 pontos com retorno adicional (no centro da Fig. 113) acarretou aumento de diferença entre os MAs apenas em 20 pontos. Ao mesmo tempo, um movimento realmente forte (que geralmente não é acompanhado por uma correção considerável) no ponto A resultou na diferença aumentar até 25 - 30 pontos. Se a ordem de compra for aberta quando um determinado valor de diferença entre os MAs for atingido, por exemplo, em A, o mais provável será que a ordem seja lucrativa quando um preço atingir um valor de ordem de parada predefinido. Vamos usar esse valor como um critério de negociação no nosso Expert Advisor. Número de pedidos Neste exemplo, analisamos um Expert Advisor que admite a presença de apenas um pedido de mercado, mas pedidos pendentes não são fornecidos. Tal abordagem é justificada não apenas neste exemplo, mas pode ser usada como base para qualquer estratégia. Geralmente, as ordens pendentes são usadas quando um desenvolvedor tem um critério bastante confiável para prever a mudança futura de preço com alta probabilidade. Se não houver tal critério, não há necessidade de usar pedidos pendentes. A situação em que várias ordens opostas para um título estão abertas também não pode ser considerada razoável. Foi escrito anteriormente que, do ponto de vista econômico, as ordens opostas são consideradas sem sentido, especialmente se os preços dos pedidos forem iguais (consulte Encerrando e Excluindo Pedidos). Nesse caso, devemos fechar um pedido por outro e esperar que um sinal abra uma ordem de mercado em uma determinada direção. Relação dos Critérios de Negociação A partir desta posição, torna-se claro quais as relações possíveis entre os critérios de negociação. A Figura 114 mostra três variantes de correlação de critérios de negociação, quando cada critério é importante (válido). Ações (abertura e fechamento de ordens de mercado) ocorrem no sentido horário nas figuras a seguir. Fig. 114. Correlação dos critérios de abertura e fechamento de ordens (aeb - correto, c - incorreto). A variante mais popular de um critério comercial corretamente formado é a variante a. Depois de ser aberto, uma ordem de compra do mercado é mantida até o momento em que o critério exige o seu gatilho de fechamento. Depois disso, uma pausa ocorre quando nenhum pedido é aberto. Além disso, uma ordem de venda do mercado pode ser aberta. As condições para o fechamento de uma ordem de venda (de acordo com os critérios corretamente formados) ocorrem mais cedo do que as condições para a abertura de uma ordem de compra. No entanto, uma ordem de compra pode ser aberta novamente, se um critério de negociação exigir isso. Mas, de acordo com essa variante, uma ordem de mercado não pode ser aberta se houver uma ordem de mercado aberto na direção contrária. Correlação de critérios semelhantes está na variante b. A diferença é que um critério para abrir qualquer ordem de mercado é, ao mesmo tempo, um critério para fechar a ordem oposta. Essa variante, como a variante a, não permite várias ordens abertas no terminal ao mesmo tempo em uma única garantia. A variante da correlação de critérios está incorreta. De acordo com esta variante, a abertura de uma ordem de mercado é permitida quando ordens contrárias ainda não estão fechadas, o que é insensato. Pode haver casos raros quando esta variante é parcialmente justificada. A abertura de uma ordem oposta é às vezes aceitável para compensar perdas ocorridas em pequenas correções após fortes movimentos de preços. Nesses casos, uma ordem oposta pode ser aberta com o mesmo valor ou menor que a já existente e, em seguida, fechada quando a correção é finalizada. Tal tática permite não interferir com a ordem "main" aberta na direção da tendência. Em geral, várias ordens de uma direção também são possíveis. Isso pode ser justificado quando um pedido aberto anteriormente é protegido por uma ordem Stop e o critério que aponta para o desenvolvimento do preço na mesma direção é acionado novamente. No entanto, ao criar essa estratégia, um desenvolvedor deve estar plenamente ciente de que, no caso de uma alteração brusca no movimento do preço, as ordens de parada colocadas podem não ser executadas por alguns corretores no primeiro toque de preço. E a perda será proporcional ao valor total das ordens de mercado unidirecionais. Em nosso exemplo, usamos a variante b da correlação dos critérios de negociação. Todas as ordens de mercado abertas são fechadas por uma ordem de parada ou após um critério de abertura de uma ordem em triggers de direção oposta (aqui o critério de fechamento de compra coincide com o de abertura de venda e vice-versa). Tamanho dos pedidos abertos Em qualquer estratégia de negociação, os tamanhos dos pedidos devem ser razoavelmente limitados. Em um caso simples, um tamanho de pedido fixo é usado em um Expert Advisor. Antes do início da operação do EA, um usuário pode definir qualquer tamanho de pedidos futuros e deixá-lo inalterado por algum tempo. Além disso, se o saldo for alterado, um usuário poderá definir um novo valor de números de lote de pedidos abertos. Um tamanho de pedido muito pequeno proporciona mais confiança na operação na imprevisível mudança de mercado, mas o lucro em caso de sucesso não será tão grande. Se o tamanho do pedido for muito grande, pode ser obtido um grande lucro, mas esse EA será muito arriscado. Normalmente, o tamanho dos pedidos abertos é configurado de modo que os requisitos de margem não excedam de 2 a 35% do saldo ou margem livre (se uma estratégia permitir apenas um pedido aberto, saldo e margem livre no momento anterior à abertura do pedido) igual). Neste exemplo, ambas as variantes são implementadas. Um usuário pode optar por indicar diretamente os valores dos pedidos ou definir o valor em porcentagem da margem livre. Detalhes de Programação Uma simples tendência Expert Advisor tradingexpert. mq4 construída com base em argumentos anteriores pode ser assim: Descrevendo Variáveis ​​Um outro critério na estimativa de programa é sua legibilidade. Um programa é considerado como escrito corretamente, se puder ser lido facilmente por outros programadores, é por isso que todas as principais partes do programa e principais momentos que caracterizam a estratégia devem ser comentados. É também por isso que é recomendado declarar e comentar todas as variáveis ​​no início do programa. No bloco 1-2 são descritas variáveis ​​externas e globais. De acordo com as regras, as variáveis ​​externas e globais devem ser abertas antes de seu primeiro uso (veja Tipos de Variáveis), por isso elas são declaradas na parte principal do programa. Todas as variáveis ​​locais da função start () são reunidas e descritas na parte superior da função (bloco 2-3) imediatamente após o cabeçalho da função. As regras de declarar variáveis ​​locais não exigem isso, mas também não proíbem. Se um programador enfrenta dificuldades em entender o significado de uma variável ao ler o programa, ele pode se referir à parte do programa superior e descobrir o significado e o tipo de qualquer variável. É muito conveniente na prática de programação. Bloco de processamento preliminar Neste exemplo, o pré-processamento consiste em duas partes (bloco 3-4). O programa termina a operação se não houver barras suficientes em uma janela de segurança em tal caso, é impossível detectar corretamente (no bloco 5-6) valores de médias móveis necessários para o cálculo dos critérios. Além disso, o valor da variável Work é analisado. Na operação normal do EA, o valor da variável é sempre verdadeiro (é definido uma vez durante a inicialização). Se ocorrer um erro crítico na operação do programa, false é atribuído a essa variável e start () conclui sua operação. Este valor não será alterado no futuro, é por isso que o seguinte código não é executado. Nesse caso, a operação do programa deve ser interrompida e a razão do erro crítico deve ser detectada (se necessário, um centro de negociação deve ser contatado). Depois que a situação é resolvida, o programa pode ser iniciado novamente, isto é, o EA pode ser anexado a uma janela de segurança. Pedidos contábeis O Expert Advisor descrito permite trabalhar somente com uma ordem de mercado. A tarefa do bloco de contabilidade de ordens (bloco 4-5) é definir as características de uma ordem aberta, se houver uma. No loop, passando por ordens para todas as ordens de mercado e pendentes existentes são verificadas, ou seja, do primeiro (int i1) para o último (iampltOrdersTotal ()). Em cada iteração de ciclo, o próximo pedido é selecionado pela função OrderSelect (). A seleção é feita a partir de uma fonte de ordens abertas e pendentes (SELECTBYPOS). Se a seleção for executada com sucesso (ou seja, houver mais uma ordem no terminal), é necessário analisar essa ordem e a situação: se a ordem está aberta para a segurança na qual a EA opera, se a ordem é de mercado ou pendente também deve ser levado em consideração ao contar pedidos. Na linha: todas as ordens abertas para outro título são eliminadas. Operador continua interrompe a iteração e as características de tal ordem não são processadas. Mas se o pedido for aberto para a segurança, para a janela da qual o EA é anexado, ele é analisado posteriormente. Se OrderType () retorna um valor maior que 1 (veja Types of Trades), o pedido selecionado é um pendente. Mas neste Expert Advisor, o gerenciamento de pedidos pendentes não é fornecido. Isso significa que a execução de start () deve ser finalizada, porque ocorreu uma situação de conflito. Nesse caso, após uma mensagem sobre o término da operação, a execução do start () é interrompida pelo retorno do operador. Se a última verificação mostrou que a ordem analisada é uma ordem de mercado, o número total de ordens para uma garantia é calculado e analisado. Para o primeiro de tais ordens, todas as características necessárias são definidas. Se na próxima iteração o contador de ordem (variável Total) encontrar a segunda ordem de mercado, a situação também será considerada em conflito, porque o EA não pode gerenciar mais de uma ordem de mercado. Nesse caso, a execução start () é interrompida depois de mostrar uma mensagem correspondente. Como resultado da execução do bloqueio contábil de pedidos (se todas as verificações foram bem-sucedidas), a variável Total preserva seu valor zero se não houver ordens de mercado ou obtém o valor 1 se houver uma ordem de mercado para nossa segurança. No último caso, algumas variáveis ​​configuradas em correspondência com as características do pedido (número, tipo, preço de abertura, níveis de parada e valor do pedido) também obtêm seus valores. Cálculo dos Critérios de Negociação No exemplo analisado, a definição dos critérios de negociação (bloco 5-6) é calculada com base na diferença entre Médias Móveis com diferentes períodos de média. De acordo com os critérios aceitos, um gráfico é direcionado a touro se o valor atual do MA com período menor for maior que o valor de MA com período maior, e a diferença entre os valores for maior que um determinado valor. Em um movimento de urso, o MA com período menor é menor que o MA com maior período e a diferença também é maior que um certo valor crítico. No bloco, os valores iniciais de MAs com os períodos médios PeriodMA1 e PeriodMA2 são calculados. O fato de significado de qualquer critério de negociação é expresso através do valor de uma variável correspondente. As variáveis ​​OpnB e OpnS denotam o critério de acionamento para abertura de ordens de compra e venda, variáveis ​​Cls e ClsS - para fechamento. Por exemplo, se um critério para abrir Buy não for acionado, o valor de OpnB permanecerá falso (definido na inicialização da variável) se tiver sido acionado, OpnB obterá o valor true. Neste caso, o critério para o fechamento do Sell coincide com o da abertura do Buy, o critério para a abertura do Sell coincide com o do fechamento do Buy. Os critérios de negociação aceitos neste exemplo são usados ​​apenas para fins educacionais e não devem ser considerados como uma diretriz ao negociar em uma conta real. Ordens de Encerramento Foi escrito anteriormente que este Expert Advisor é destinado para operação somente com uma ordem de mercado aberta para uma segurança, para qual janela o EA está anexado. Para o momento em que o controle no programa é passado para o bloco de fechamento de pedidos, sabe-se com certeza que no momento atual não há pedidos para a segurança, ou existe apenas uma ordem de mercado. É por isso que o código no bloco de fechamento de pedidos é escrito para que apenas um pedido possa ser fechado com êxito. Este bloco é baseado no laço infinito enquanto, o corpo do qual consiste de duas partes análogas: uma para fechar uma ordem de compra, outra para fechar uma ordem de venda. Enquanto é usado aqui para o propósito que no caso de uma falha na operação de negociação, ele pode ser repetido novamente. No cabeçalho do primeiro operador, se a condição para o fechamento de uma ordem de compra é calculada (ordens de venda são fechadas de maneira análoga). Se o tipo de um pedido aberto anteriormente corresponder a Comprar (consulte Tipos de Negociações) e o sinal de fechamento de Compra for relevante, o controle será passado para o corpo do operador se um pedido de fechamento for formado. Como um preço de fechamento de pedido na função OrderClose (), o valor de uma cotação em dois lados correspondente ao tipo de pedido é indicado (consulte Requisitos e limitações na realização de negociações). Se uma operação de negociação for executada com sucesso, depois que uma mensagem sobre o fechamento da ordem for mostrada, a corrente enquanto a iteração é interrompida e a execução do bloco de fechamento da ordem termina. Mas se a operação falhar, a função definida pelo usuário para processar os erros FunError () é chamada (bloco 10-11). Processando Erros Como um parâmetro passado em FunError (), o último código de erro calculado por GetLastError () é usado. Dependendo do código de erro, FunError () retorna 1 se o erro não for crítico e a operação puder ser repetida, e 0 se o erro for crítico. Erros críticos são divididos em dois tipos - aqueles, após os quais a execução de um programa pode ser continuada (por exemplo, um erro comum) e aqueles após os quais a execução de qualquer operação de negociação deve ser interrompida (por exemplo, conta bloqueada). se depois de uma operação de negociação malsucedida a função definida pelo usuário retorna 1, a corrente enquanto a iteração é terminada e durante a próxima iteração outra tentativa é feita para executar a operação - para fechar a ordem. Se a função retornar 0, a execução atual do start () será interrompida. No próximo tick start () será iniciado pelo terminal do cliente novamente e se as condições para o fechamento do pedido forem preservadas, outra tentativa de fechar o pedido será feita. Se durante o processamento de erros for descoberto que a execução posterior do programa é sem sentido (por exemplo, o programa opera em uma versão antiga do terminal do cliente) durante a próxima partida, a execução da função especial start () será encerrada no processamento preliminar quando analisando o valor da variável Work. Calculating Amount of Lots for New Orders Amount of lots can be calculated in accordance with a users settings following one of the two variants. The first variant is a certain constant value set up by a user. According to the second variant the amount of lots is calculated on the basis of a sum equal to a certain percentage (set by a user) of a free margin. At the beginning of the block of defining the amount of lots for new orders (block 7-8) necessary values of some variables are calculated - minimal allowed amount of lots and step of lot change set up by a broker, free margin and price of one lot for the security. In this example the following is provided. If a user has set up a certain non-zero value of the external variable Lts, for example 0.5, it is accepted as the amount of lots Lts when a trade request to open an order is formed. If 0 is assigned to Lts, the number of lots Lts is defined on the basis of the variable Prots (percentage), free margin and conditions set up by a broker. After Lts is calculated, a check is conducted. If this value is lower than the minimal allowed value, the minimal allowed value is accepted. but if free margin is not enough, after a corresponding message the start() execution is terminated. Opening Orders The block of opening orders (block 8-9) like the bloke of opening orders is an infinite loop while. In the header of the first operator if conditions for opening a Buy order are calculated: if there are no orders for the security (variable Total is equal to 0) and the sign for opening a Buy order is relevant (OpnB is true ), control is passed to if operator body for opening an order. In such a case after rates are refreshed prices for stop levels are calculated. Values of stop levels are initially set by a user in external variables StopLoss and TakeProfit. In a general case a user can set values for this parameters smaller that a broker allows. Besides a broker may change the minimal allowed distance at any moment (it is an often case at strong market movements, for example, before important news release). Thats why before each order opening stop levels must be calculate taking into account values set bu a user and the minimal allowed value set up by a broker. For calculating stop levels the user-defined function NewStop() is used as a passed parameter the stop level value set by a user is used. In NewStop() first the current minimal allowed distance is calculated. If the value set by a user corresponds to a brokers requirements, this value is returned. If it is smaller than the allowed value, the value allowed by a broker is used. Prices of stop requests are calculated from the corresponding two-sided quote (see Requirements and Limitations in Making Trades ). A trade request to open an order is formed using the function OrderSend(). For the calculation of order opening price and prices of stop requests the two-sided quote values corresponding to the order type are used. If a trade operation was successful (i. e. a server returned the number of an opened order) after a message about a successful order opening is shown. start() execution is finished. If an order was not opened and the client terminal returned an error, the error is processed according to the algorithm described earlier. Some Code Peculiarities The analyzed Expert Advisor code is oriented to the implementation of a certain strategy. Note, some program lines contain variables and calculations that would be changed, if the strategy were changed. For example, according to the accepted strategy the Expert Advisor is developed to work only with one order. This allowed to use the variable Ticket both for the identification of a closing order number (in block of closing 6-7) and for the identification of a success of a trade operation execution when opening an order (in the block of opening 8-9). In this case such a solution is acceptable. However, if we take the analyzed code as the basis for the implementation of another strategy (for example allow opposite orders) we will have to introduce one or several variables to be able to recognize numbers of opened orders and identify the success of trade operations. In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy. Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security. Besides, conditions for opening and closing orders will alslo change. This will entail the code changing in blocks of opening and closing orders. On the basis of this analysis we can easily conclude that the described simple Expert Advisor is not perfect. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed. Expert Advisors in MetaTrader 4 MQL4 for Complete Beginners Tutorial Part 21 2014-2016 ForexBoat. Todos os Direitos Reservados Forexboat Pty Ltd (ABN: 29 609 855 414) um Representante Autorizado Corporativo (AR No. 001238951) da HLK Group Pty Ltd (ACN: 161 284 500) que detém uma Licença Australiana de Serviços Financeiros (AFSL no. 435746). Qualquer informação ou conselho contido neste site é apenas de natureza geral e não constitui aconselhamento pessoal ou de investimento. Não nos responsabilizamos por qualquer perda ou dano, incluindo, sem limitação, qualquer perda de lucro, que possa surgir direta ou indiretamente do uso ou confiança em tais informações. Você deve procurar aconselhamento financeiro independente antes de adquirir um produto financeiro. Todas as transacções de valores mobiliários e produtos financeiros ou instrumentos envolvem riscos. Lembre-se de que os resultados de desempenho anteriores não são necessariamente indicativos de resultados futuros. As informações contidas neste site podem ser acessadas em todo o mundo, porém não são dirigidas a residentes em qualquer país ou jurisdição onde tal distribuição ou uso seja contrário à lei ou regulamentação local. A Forexboat Pty Ltd não está registrada em nenhum órgão regulador dos EUA, incluindo a National Futures Association (8220NFA8221) e a Commodity Futures Trading Commission (8220CFTC8221), portanto os produtos e serviços oferecidos neste site não são destinados a residentes nos Estados Unidos. Preencha este formulário e clique no botão abaixo para iniciar seu treinamento gratuito

No comments:

Post a Comment