Ea programação forex


Quero aprender como fazer o OWN EA?


Eu quero aprender a fazer minha própria EA. Mas eu não sei como criar EA / ROBÔ própria. Qualquer um pode me ajudar por aprender a fazer EA EA. Estou tentando muito tempo, mas não posso agradar que alguém me ajude. Como eu posso fazer minha própria EA.


Você precisa aprender pelo menos linguagem C simples + Alguma introdução ou princípios de linguagens de programação.


Depois disso, você simplesmente vai diretamente ao MQL4. você vai achar fácil de entender.


Concordo com tudo isso.


Se você quer uma rota de introdução fácil, você também pode ver vídeos de como Bilal Haider, ou Jim Dandy no youtube.


leia passo a passo.


Você precisa aprender pelo menos linguagem C simples + Alguma introdução ou princípios de linguagens de programação.


Depois disso, você simplesmente vai diretamente ao MQL4. você vai achar fácil de entender.


Dê-me c + livro de idiomas. Primeiro eu tenho que aprender c + language.


Eu quero aprender a fazer minha própria EA. Mas eu não sei como criar EA / ROBÔ própria. Qualquer um pode me ajudar por aprender a fazer EA EA. Estou tentando muito tempo, mas não posso agradar que alguém me ajude. Como eu posso fazer minha própria EA.


- Compreender os conceitos básicos do MetaEditor (iniciá-lo no MetaTrader 5)


- Compreender os conceitos básicos de programação de sinais e programação de EA.


- Compreender como acessar Sinais de uma EA e como trocar automaticamente de acordo com eles (talvez o objeto CTrade? Lol)


Então você deveria ter completado os requisitos iniciais para avançar na programação de uma EA inteligente, acho que :)


Como criar um Forex EA simples usando o Assistente MetaEditor.


Saudações, terráqueos! Estou de volta com outro artigo sobre os conceitos básicos da criação de um consultor especialista em forex. Mas antes de mergulhar diretamente no maravilhoso mundo da codificação, vamos começar com uma pequena ajuda do Gandalf dos robôs forex ... o MetaEditor Wizard!


Gostaria de poder dizer que esse mágico particular vem com vestes brancas brilhantes e tem uma equipe mágica, mas simplesmente se parece com isto:


Agora, esta pequena janela pop-up pode não parecer muito, mas asseguro-lhe que é tão poderoso como um assistente. Com esta ferramenta, você pode criar consultores especializados de forex simples que podem analisar automaticamente indicadores técnicos ou executar trocas sem ter que escrever uma única linha de código você mesmo.


Tudo o que você precisa fazer para convocar o feiticeiro é virado para o nordeste, bate palmas três vezes e cante ... Ah, espere, é por causa de uma queda no mercado. Nós não queremos isso. Para acessar o MQL Wizard, basta abrir o MetaEditor em sua plataforma de negociação e clicar em "Novo" no canto superior esquerdo:


Selecione "Expert Advisor (gerar)", que é a segunda opção na janela pop-up e clique em Avançar. Nesta tela, você pode definir as propriedades gerais da EA, como o nome, o autor e o link para a fonte.


Os parâmetros do sistema, que basicamente são seus rótulos para o par de moedas e prazos, já estão definidos por padrão. Não se preocupe com essas entradas ainda! Essas configurações padrão indicam que o EA pode ser aplicado ao par atual da moeda e ao período de tempo. Nós aprofundaremos os detalhes mais tarde.


Em seguida, você terá que definir as propriedades de sinal do seu consultor especializado. Você pode escolher entre o conjunto de indicadores técnicos já incluídos na plataforma MetaTrader, como boas médias móveis ole ou MACD, e até mesmo uma combinação de até 64 indicadores!


Para adicionar um indicador, basta clicar em Adicionar, em seguida, insira os campos necessários na janela pop-up. Neste exemplo, vou usar o 100 SMA e deixar o resto dos parâmetros padrão como este. Basta clicar duas vezes em cada campo para editar seu nome, valor ou tipo.


O próximo passo deve permitir que você determine o fim de término para a sua EA forex. Você pode decidir baseá-lo em um número fixo de pips, usar um indicador técnico ou não ter um. Neste exemplo, não vou ainda adicionar uma parada final.


Por último, você pode definir as regras de gerenciamento de risco ao decidir negociar com um volume fixo, margem ou porcentagem de risco. Sob os campos para parâmetros, você pode especificar o risco percentual ou o tamanho do lote por comércio. Neste exemplo, eu gostaria de trocar com um risco fixo de 1% da minha conta em cada comércio, como a maioria dos meus amigos comerciais.


Antes de atingir o botão Finish, respire fundo e certifique-se de estar pronto para ter linhas de código jogadas no seu rosto. Pronto? Ok, vou segurar sua mão. 3 ... 2 ... 1 ...


E lá você tem isso! Basta pressionar Compile ou F7 para garantir que seu código seja livre de erros. Agora vá e impressione a sua data por humilhar-se que você aprendeu a escrever centenas de linhas de código durante a noite, sem grandeza.


Na próxima semana, analisaremos mais de perto a estrutura de um consultor especializado em forex e como as funções são executadas. Fique ligado!


O sucesso é concentrar todo o poder de tudo o que você está no que você tem um ardente desejo de alcançar. Wilfred Peterson.


O BabyPips ajuda os comerciantes individuais a aprender como negociar o mercado cambial.


Apresentamos as pessoas ao mundo do comércio de moeda e fornecemos conteúdos educacionais para ajudá-los a aprender a se tornarem comerciantes rentáveis. Nós também somos uma comunidade de comerciantes que se apoiam na nossa jornada de negociação diária.


mql, programação, programador, serviço, codificação, mql4, ea, forex, trading, automatizado, metatrader, indicador, consultor especializado, e, estratégia, programação e, robô, indicadores personalizados, algorítmicos, profissionais, grátis, download.


mql, programação, programador, serviço, codificação, mql4, ea, forex, trading, automatizado, metatrader, indicador, consultor especializado, e, estratégia, programação e, robô, indicadores personalizados, algorítmicos, profissionais, grátis, download.


Esteja um passo à frente dos outros!


Se você está procurando suporte profissional na programação do MetaTrader você está no lugar certo! Podemos transformar suas idéias mais sofisticadas em códigos de alta qualidade e confiáveis. Podemos criar Expert Advisors, Custom Indicators ou Scripts.


Por que nos especializamos na plataforma MetaTrader 4? A resposta é simples. Porque é uma solução muito poderosa, flexível, leve e popular. A característica mais importante da plataforma MetaTrader 4 é a linguagem interna MQL 4. No MQL 4, quase todas as estratégias ou indicadores comerciais podem ser codificados, mas, como é uma linguagem bastante complexa, você deve confiar o trabalho de programação aos profissionais.


No entanto, a possibilidade de ter sua própria estratégia de negociação automatizada é inestimável. Além disso, para se beneficiar do uso do MQL 4, não é necessário possuir estratégia de negociação. Se você abrir e fechar apenas posições de acordo com regras rígidas, sua negociação pode ser automatizada graças a Expert Advisors e você pode aproveitar o tempo extra que você ganha. Seu dinheiro pode funcionar para você 24 horas por dia, 5 dias por semana, durante todo o ano!


Se você estiver interessado em nossos serviços, vá para a seção Solicitação para saber mais sobre preços e procedimentos de pedidos.


Além disso, oferecemos alguns programas gratuitos, Indicadores Personalizados e Scripts, que são descritos em detalhes na seção Download.


Download grátis.


A partir de agora você pode usar alguns dos nossos Indicadores Personalizados e Scripts gratuitamente. Visite a seção Download. Cada arquivo é descrito em detalhes.


Experimente o nosso ReportManager de freeware que pode combinar dois ou mais relatórios de backtest do MetaTrader em um. É muito útil especialmente quando você está testando a estratégia de várias moedas. Leia mais & gt; & gt;


Métodos de pagamento disponíveis.


Termos & amp; Condições | Copyright © 2007-2017 Vitaurus. Todos os direitos reservados.


mql, programação, programador, serviço, codificação, mql4, ea, forex, trading, automatizado, metatrader, indicador, consultor especializado, e, estratégia, programação e, robô, indicadores personalizados, algorítmicos, profissionais, grátis, download.


mql, programação, programador, serviço, codificação, mql4, ea, forex, trading, automatizado, metatrader, indicador, consultor especializado, e, estratégia, programação e, robô, indicadores personalizados, algorítmicos, profissionais, grátis, download.


Consultor Especialista Simples.


Esta seção se baseia nos princípios de criação de um consultor de especialistas de negociação simples.


Argumentos preliminares.


Antes de começar a programar um consultor especialista em negociação, é necessário definir princípios gerais de um programa futuro. Não existem regras estritas de criação de programas. No entanto, uma vez que criou um programa, um programador geralmente continua a melhorar. Para poder entender facilmente o programa no futuro, ele deve ser criado de acordo com um esquema bem pensado e fácil de entender (é especialmente importante se um programa for melhorado por outro programador). O programa mais conveniente é aquele que consiste em blocos funcionais, cada um dos quais é responsável pela parte dos cálculos. Para criar um algoritmo de um Expert Advisor comercial, vamos analisar o que um programa operacional deve fazer.


Um dos dados mais importantes na formação de ordens comerciais é a informação sobre pedidos 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ários pedidos podem ser abertos em um terminal ao mesmo tempo, embora seu número seja razoavelmente limitado. Ao usar qualquer estratégia, as decisões comerciais devem ser feitas levando em consideração a situação atual. Antes de uma decisão comercial ser tomada em um programa, é necessário saber quais ordens de negociação já foram abertas ou colocadas. Antes de tudo, um programa deve conter um bloco de contabilidade de pedidos que está entre os primeiros a serem executados.


Durante uma execução EA, as decisões comerciais devem ser tomadas, cuja implementação leva à execução de operações comerciais. A parte do código responsável pela formação de pedidos comerciais é melhor escrita em um bloco separado. Um Consultor Especialista pode formar uma solicitação comercial para abrir uma nova ordem pendente ou de mercado, fechar ou modificar qualquer uma das ordens existentes ou executar nenhuma ação. Uma EA também deve calcular os preços das ordens dependendo do desejo de um 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 correção da detecção de critérios comerciais no programa. Ao calcular critérios de comércio, um programa pode (e deve) ter em conta todas as informações que podem ser úteis. Por exemplo, um Consultor Especializado pode analisar a combinação de valores de indicadores técnicos, o tempo de lançamentos de notícias importantes, a hora atual, os 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 de forma separada. quadra.


Um consultor especialista em negociação deve necessariamente conter o bloco de processamento de erros. Analisar os erros que podem ocorrer na execução da operação comercial permite, por um lado, repetir um pedido comercial e, por outro lado, informar um usuário sobre uma possível situação de conflito.


Estrutura de um consultor experiente simples.


Abaixo está um esquema estrutural de um simples Consultor Especial construído com base em vários blocos funcionais, em cada bloco uma certa parte dos cálculos.


Fig. 109. Esquema estrutural de um simples consultor especialista.


Na fase de desenvolvimento de EA a seguir, ainda não existe um código de programa. Ao mesmo tempo, o algoritmo de um programa é formado em grande parte. A forma como a EA construída nas bases do esquema oferecido irá operar pode ser facilmente entendida simplesmente olhando o esquema e orientando-se sobre nomes de blocos e matrizes de relações (controle de passagem) entre eles.


Após o início do programa, o controle é 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 calcular parâmetros de indicadores técnicos), uma EA não poderá operar adequadamente. Nesse caso, uma EA deve encerrar a operação informando preliminarmente um usuário sobre isso e informando sobre o motivo do término. Se não houver contra-indicações de caráter geral, o controle é passado para o bloco de contabilização de pedidos.


No bloco de ordens contábeis, o número e a qualidade das ordens existentes em um terminal cliente para uma segurança (para a janela da qual o EA está anexado) são detectados. Neste bloqueio, as ordens de outros títulos devem ser eliminadas. Se uma estratégia de negociação programada requer o uso de apenas ordens de mercado (e não usa ordens pendentes), o fato da presença de ordens pendentes deve ser detectado. Se uma estratégia admite apenas uma ordem de mercado e existem várias ordens, esse fato também deve ser conhecido. A tarefa do bloco de contabilidade de ordem (neste esquema) é definir se a situação comercial atual corresponde a uma esperada, ou seja, na qual a EA pode operar adequadamente. Se a situação corresponder, o controle deve ser passado para o próximo bloco para continuar a operação da EA; caso contrário, a operação da EA deve ser encerrada e esse fato deve ser reportado a um usuário.


Se não houver pedidos no terminal ou o número e a qualidade das ordens existentes correspondem ao esperado, o controle é passado para o bloco de definir critérios de negociação. Neste bloco são calculados todos os critérios necessários para tomar decisões comerciais, nomeadamente critérios para abertura, encerramento e modificação de pedidos. O controle adicional é passado para o bloco de pedidos de fechamento.


É fácil entender por que no esquema oferecido o bloco de pedidos de fechamento é executado antes do bloco de ordens de abertura. É sempre mais razoável processar as primeiras ordens existentes (fechar ou modificar) e somente depois disso para abrir novos pedidos. Geralmente, é correto guiar pelo desejo de ter tão poucas ordens quanto possível. Durante a execução deste bloco, todos os pedidos, para os quais o critério de fechamento foi ativado, devem ser fechados.


Depois de todas as ordens necessárias terem sido fechadas, o controle é passado para um bloco de novo cálculo de tamanho de ordens. Há muitos algoritmos para calcular um volume de pedidos. O mais simples é usar um tamanho de lote constante e fixo. É conveniente usar esse algoritmo em um programa para testar estratégias. O método mais popular de definir um tamanho de ordem é definir o número de lotes dependendo da quantidade de margem livre, por exemplo, 30-40%. Se a margem livre não for suficiente, o programa encerra sua operação informando um usuário sobre o motivo.


Depois que o número de lotes para abrir novos pedidos é definido, o controle é passado para o bloco de abertura de pedidos. Se algum dos critérios calculados anteriormente aponta para a necessidade de abrir uma ordem de um determinado tipo, um pedido comercial para abrir uma ordem é formado neste bloco.


Há também erro de análise de bloqueio em um consultor especialista. Se alguma operação comercial falhou, o controle (somente neste caso) é passado para o bloco de processamento de erros. Se um erro retornado por um servidor ou terminal cliente não for crucial, mais uma tentativa é feita para executar uma operação comercial. Se um erro crucial for retornado (por exemplo, uma conta é bloqueada), uma EA deve encerrar sua operação. Lembre-se, no MQL4 não há possibilidade de encerrar o programa de uma operação de EA em uma janela de segurança (como distinto dos scripts, consulte Funções especiais). O que pode ser feito de uma maneira de programa é o término do início (). Em um novo começo da função start () em um novo tick, o valor de uma certa bandeira de variáveis ​​que proíbe a negociação (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; assim, a formação de um novo pedido comercial 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 constantemente em movimento. O estado do mercado em 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 plano - lateral com desvios fracos de uma certa média. Essas características de mercado são condicionais, porque não há critérios claros, segundo os quais a tendência ou o plano podem ser identificados. Por exemplo, movimentos laterais longos com fortes desvios que não podem ser traçados nem para um plano nem para uma tendência. Geralmente, presume-se que o mercado esteja principalmente no estado do movimento lateral e as tendências geralmente acontecem entre 15 e 20% do tempo.


Fig. 110. Plano e tendência no mercado.


Todas as estratégias comerciais também podem ser convencionalmente divididas em dois grupos principais. O primeiro grupo contém estratégias orientadas para o plano. A idéia principal de tais estratégias é que, após um preço de desvio evidente deve retornar à posição anterior, é por isso que as ordens são abertas na direção contrária ao último movimento de preços. As estratégias do segundo grupo são estratégias de tendências, quando as ordens são abertas na mesma direção que o movimento do preço do 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 esta ou essa estratégia tecnicamente - MQL4 contém todos os meios necessários para isso. O principal trabalho na criação de uma estratégia própria é a busca de critérios de negociação.


Critérios de negociação.


Neste exemplo, tentaremos construir uma Tendência Consultor Especialista, ou seja, aquele que abrirá ordens na direção do movimento de preços. Então, precisamos encontrar entre vários indicadores técnicos aqueles que detectam um início de tendência. Um dos métodos mais simples de busca de critérios comerciais baseia-se na análise da combinação de MAs com diferentes períodos de média. A Fig. 111 e a Fig. 112 mostram a posição de duas MA diferentes (com períodos de média 11 e 31) em diferentes partes do mercado. As médias com pequeno período de média (linhas vermelhas) estão mais próximas de um gráfico de preços, torção e móveis. As médias móveis com um período maior de média (linha azul) são mais inertes, têm atraso maior e estão mais distantes dos preços do mercado. Vamos prestar atenção aos lugares onde MAs com diferentes períodos de média cruzam e tentam decidir se o fato de cruzamento de 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 do preço muda.


Na Fig. 111, vemos uma parte do mercado onde as ordens de abertura na direção do movimento de preços no cruzamento de AMs são justificadas. No ponto A, a linha vermelha cruza o azul de baixo para cima, depois disso o preço do mercado continua a crescer por algum tempo. O cruzamento inverso adicional MA indica a mudança na direção do movimento do preço. Se abrirmos uma ordem de compra no ponto A e fechá-la em B, obteremos lucro proporcional à diferença dos preços A e B.


Fig. 112. Cruzamento de MA (11) e MA (31) quando a direção do movimento do preço muda.


Ao mesmo tempo, há outros momentos no mercado quando MA atravessa, mas isso não leva a aumento ou queda considerável de preços (Fig. 112). As ordens abertas no cruzamento de MA em tais momentos levarão a perdas. Se a Vender for aberta em A e fechada em B, essa negociação trará perdas. O mesmo pode ser dito sobre um pedido de compra aberto em B e fechado em C.


O sucesso de toda a estratégia implementada com base no cruzamento do MA depende do número de partes que podem ser caracterizadas como tendência e plana. Em plano, muitas vezes o cruzamento de MA é um evento regular que interfere com qualquer estratégia de tendências. Numerosos sinais falsos, em regra, conduzem a perdas. É por isso que este sinal - cruzamento de MAs com diferentes períodos de média - pode ser usado para construir estratégias de negociação somente em combinação com outros sinais que comprovem uma tendência. Neste exemplo (para construir um simples Consultor Especialista), teremos que recusar usar este sinal.


Usaremos outro sinal. Analisando visualmente o caráter das mudanças de preços no mercado, podemos ver que um aumento ou queda de um longo passo de uma direção geralmente aparece como resultado de um curto movimento forte. Em outras palavras, se, dentro de um curto período, um forte movimento acontecesse, podemos esperar sua continuação em um período de médio prazo.


Fig. 113. Um forte movimento de preços pode levar a um desenvolvimento de tendências.


A Fig. 113 mostra o período de mercado quando um forte movimento resultou na continuação da mudança de preço na mesma direção. Como o "movimento forte" podemos usar a diferença de MAs com diferentes períodos de média. Quanto mais forte o movimento, maior é o atraso de MA com maior período de média de MA com um pequeno período de média. Além disso, mesmo fortes movimentos de preços descontínuos com retorno adicional não resultam em uma grande diferença entre MAs, ou seja, numerosos sinais falsos não aparecem. Por exemplo, o salto de preço em 50 pontos com retorno adicional (no centro na Fig. 113) implicou aumento da diferença entre MAs apenas por 20 pontos. Ao mesmo tempo, um movimento muito 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 certo valor de diferença entre MAs for atingido, por exemplo, em A, muito provavelmente a ordem será rentável quando um preço atingir um valor de ordem Stop pré-definido. Vamos usar esse valor como critério de negociação em nosso Consultor Especialista.


Número de encomendas.


Neste exemplo, analisamos um Consultor Especialista que admite a presença de apenas um pedido de mercado, não são fornecidas ordens pendentes. Tal abordagem é justificada não só neste exemplo, mas pode ser usada como base para qualquer estratégia.


As ordens pendentes geralmente são usadas quando um desenvolvedor possui um critério bastante confiável para prever a futura mudança de preço com alta probabilidade. Se não houver tal critério, não é necessário usar ordens pendentes.


A situação em que várias ordens opostas para uma segurança está aberta 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 das ordens forem iguais (ver Fechamento e Executando Pedidos). Nesse caso, devemos fechar um pedido por outro e esperar um sinal para abrir uma ordem de mercado em uma determinada direção.


Relação de Critérios de Negociação.


A partir desta posição, fica claro quais as relações possíveis entre os critérios comerciais. A Fig. 114 mostra três variantes de correlação de critérios de negociação, quando cada critério é importante (válido). As ações (abertura e encerramento de pedidos de mercado) ocorrem no sentido horário nas seguintes imagens.


Fig. 114. Correspondência de critérios de abertura e fechamento de ordem (a e b - correto, c - incorreto).


A variante mais popular de um critério comercial corretamente formado é a variante a. Depois de abrir uma ordem de mercado, a compra é realizada até o momento em que o critério exige os seus gatilhos de fechamento. Depois disso, ocorre uma pausa quando nenhuma ordem é aberta. Além disso, uma venda de mercado pode ser aberta. As condições para fechar uma ordem de Venda (de acordo com os critérios corretamente formados) ocorrem mais cedo do que as condições para abrir uma ordem Comprar. No entanto, uma ordem de compra pode ser aberta novamente, se um critério de negociação exigir isso. Mas de acordo com esta variante, uma ordem de mercado não pode ser aberta se houver uma ordem de mercado aberto na direção contrária.


A correlação de critérios semelhante 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. Esta variante como a variante a não permite vários pedidos abertos no terminal ao mesmo tempo em uma segurança.


A variante da correlação de critérios está incorreta. De acordo com esta variante, a abertura de um pedido de mercado é permitida quando as ordens contrárias ainda não estão fechadas, o que é sem sentido. Pode haver casos raros quando esta variante é parcialmente justificada. A abertura de uma ordem oposta às vezes é aceitável para compensar perdas que ocorrem em pequenas correções após fortes movimentos de preços. Em tais casos, uma ordem oposta pode ser aberta do mesmo ou menor valor que o já existente e depois fechado quando a correção acabou. Essa tática permite não interferir com o "principal" O pedido foi aberto 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 uma ordem aberta anterior é protegida por uma ordem Stop e o critério apontando para o desenvolvimento de preços na mesma direção desencadeada mais uma vez. No entanto, ao criar essa estratégia, um desenvolvedor deve estar plenamente consciente de que, no caso de uma mudança de movimento de preço acentuada, as ordens de parada colocadas podem ser executadas por alguns corretores no primeiro toque de preço. E a perda será proporcional ao valor total das ordens de mercado unidirecionais.


No nosso exemplo, usamos a variante b de correlação de 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 um pedido em giros de direção oposta (aqui o critério de fechamento de Compra coincide com o de abertura de Vender e vice-versa).


Tamanho das ordens abertas.


Em qualquer estratégia de negociação, os tamanhos de pedidos devem ser razoavelmente limitados. Em um caso simples, um tamanho de ordem fixa é usado em um consultor especialista. Antes de iniciar a operação EA, um usuário pode definir qualquer tamanho de pedidos futuros e deixá-lo inalterado por algum tempo. Além disso, se o saldo mudar, um usuário pode configurar um novo valor de lote de números de pedidos abertos.


Um tamanho de ordem muito pequeno proporciona mais confiança na operação na mudança de mercado imprevisível, mas o lucro em caso de sucesso não será tão grande. Se o tamanho da ordem for muito grande, grande lucro pode ser adquirido, mas tal EA será muito arriscado. Normalmente, o tamanho das ordens abertas é configurado de forma que os requisitos de margem não excedam 2-35% por cento do saldo ou margem livre (se uma estratégia permite apenas uma ordem aberta, saldo e margem livre no momento antes da abertura do pedido seja igual).


Neste exemplo, ambas as variantes são implementadas. Um usuário pode escolher indicar valores diretos de ordens ou definir o valor em porcentagem da margem livre.


Detalhes da programação.


Uma tendência simples Expert Advisor tradingexpert. mq4 construída com base em argumentos anteriores pode ser assim:


Descrevendo Variáveis.


Mais um critério na estimativa do programa é a legibilidade. Um programa é considerado corretamente escrito, se pode ser facilmente lido por outros programadores, é por isso que todas as principais partes do programa e os 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 do seu primeiro uso (ver Tipos de Variáveis), é por isso que eles são declarados na parte da cabeça 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. Regras de declaração de variáveis ​​locais não exigem, mas também não proíbem. Se um programador tiver dificuldades para 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 encerra a operação se não houver barras suficientes em uma janela de segurança; nesse caso, é impossível detectar corretamente (no bloco 5-6) valores de médias móveis necessários para o cálculo de critérios. Além disso, o valor da variável Trabalho é analisado. Na operação EA normal, 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 esta variável e start () termina a operação. Esse valor não será alterado no futuro, é por isso que o código a seguir não é executado. Nesse caso, a operação do programa deve ser interrompida e o motivo do erro crítico deve ser detectado (se necessário, um centro de negociação deve ser contatado). Depois que a situação for resolvida, o programa pode ser iniciado novamente, ou seja, o EA pode ser anexado a uma janela de segurança.


Ordens contábeis.


O Expert Advisor descrito permite trabalhar apenas com uma ordem de mercado. A tarefa do bloco de contabilidade de ordens (bloco 4-5) é definir características de uma ordem aberta, se houver uma. No loop que passa por ordens para "todas as encomendas pendentes e de mercado existentes são verificadas, desde o primeiro (int i = 1) até o último (i & amp; lt; = OrdersTotal ()). Em cada ciclo, a ordem seguinte é selecionada pela função OrderSelect (). A seleção é feita a partir de uma fonte de pedidos pendentes e pendentes (SELECT_BY_POS).


Se a seleção for executada com sucesso (ou seja, há mais uma ordem no terminal), além disso, esta ordem e a situação devem ser analisadas: se a ordem é 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 na contagem de pedidos. Na linha:


Todos os pedidos abertos para outra segurança são eliminados. O operador "continuar" pára a iteração e as características de tal ordem não são processadas. Mas se a ordem for aberta para a segurança, para a janela da qual a EA está anexada, ela é analisada posteriormente.


Se OrderType () retorna valor superior a 1 (veja Tipos de Operações), a ordem selecionada é pendente. Mas neste consultor especialista, gerenciar ordens pendentes não é fornecido. Isso significa que a execução do início () deve ser encerrada, porque ocorreu uma situação de conflito. Nesse caso, após uma mensagem sobre o início da terminação da operação (), a execução é interrompida pelo "retorno" do operador.


Se o último controle mostrou que a ordem analisada é uma ordem de mercado, o número total de pedidos de segurança é calculado e analisado. Para o primeiro desses pedidos, todas as características necessárias são definidas. Se na próxima iteração o contador de pedidos (variável Total) encontrar a segunda ordem de mercado, a situação também é considerada um conflito, porque a EA não consegue gerenciar mais do que uma ordem de mercado. Em tal caso, a execução de início () é interrompida após mostrar uma mensagem correspondente.


Como resultado da execução do bloco de contabilidade de ordem (se todas as verificações tiverem sido bem-sucedidas), a variável Total preserva seu valor zero se não houver ordens de mercado ou obtenha o valor 1 se houver um pedido de mercado para nossa segurança. No último caso, algumas variáveis ​​definidas em correspondência com as características da ordem (número, tipo, preço de abertura, níveis de parada e valor da ordem) também obtêm seus valores.


Cálculo de 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 as Médias Móveis com diferentes períodos de média. De acordo com os critérios aceitos, um gráfico é dirigido por touros se o valor atual da MA com um período menor for maior que o valor de MA com um período maior e a diferença entre os valores for maior que um determinado valor. Em um movimento de urso MA com menor período é menor do que MA com maior período e a diferença também é maior do que um determinado valor crítico.


Nos valores iniciais do bloco de MAs com períodos de média Period_MA_1 e Period_MA_2 são calculados. O fato de significância de qualquer critério de negociação é expresso através do valor de uma variável correspondente. As variáveis ​​Opn_B e Opn_S indicam o critério desencadeante para abrir ordens de compra e venda, variáveis ​​Cls_В e Cls_S - para fechamento. Por exemplo, se um critério para abrir o Buy não tiver disparado, o valor de Opn_B permanece "falso" (definido na inicialização da variável); Se ele disparou, Opn_B obtém o valor 'verdadeiro'. Nesse caso, o critério de fechamento da Vender coincide com o da abertura da Compra. O critério de abertura da Varecila coincide com o encerramento da Compra.


Ordens de encerramento.


Foi escrito anteriormente que este Consultor Especialista destina-se a operação somente com um único pedido de mercado aberto para uma segurança, a qual janela anexada. No momento em que o controle no programa é passado para o bloco de fechamento de pedidos, é conhecido com certeza que, no momento atual, não há ordens para a segurança, ou há apenas uma ordem de mercado. É por isso que o código no bloco de fechamento de pedidos está escrito de modo que apenas uma ordem possa ser fechada com sucesso.


Este bloco é baseado no loop infinito 'enquanto', cujo corpo consiste em duas partes análogas: uma para fechar uma ordem de compra, outra para fechar uma ordem de venda. "Enquanto" é usado aqui para a finalidade de que, no caso de uma falha na operação comercial, ela poderia ser repetida mais uma vez.


No cabeçalho da primeira condição do operador 'if' para fechar uma ordem de compra é calculada (as ordens de venda são fechadas da maneira análoga). Se o tipo de uma ordem aberta anterior corresponder a Comprar (ver Tipos de Operações) e o sinal de fechamento de Compra é relevante, o controle é passado para o corpo do operador 'if' onde uma solicitação para fechar é formada. Como um preço de fechamento de ordem na função OrderClose (), o valor de uma cotação de dois lados correspondente ao tipo de ordem é indicado (ver Requisitos e Limitações na Fazendo Negociações). Se uma operação de comércio for executada com sucesso, após uma mensagem sobre o fechamento da ordem, a iteração "while" atual é parada e a execução do bloco de fechamento da ordem acabou. Mas se a operação falhar, a função definida pelo usuário para processar erros Fun_Error () é chamada (bloco 10-11).


Erros de processamento.


Como um parâmetro passado no Fun_Error (), o último código de erro calculado pelo GetLastError () é usado. Dependendo do código de erro Fun_Error () retorna 1 se o erro não for crítico ea operação pode ser repetida e 0 se o erro for crítico. Os erros críticos são divididos em dois tipos - aqueles, após os quais a execução do programa pode ser continuada (por exemplo, um erro comum) e aqueles, após os quais a execução de operações comerciais deve ser interrompida (por exemplo, conta bloqueada).


se, após uma operação comercial sem êxito, a função definida pelo usuário retorna 1, a iteração atual quando está encerrada 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 início () está parada. No próximo começo do tiquetaque () será iniciado pelo terminal do cliente novamente e se forem preservadas as condições para o encerramento da ordem, outra tentativa de fechar a ordem será feita.


Se, durante o processamento do erro, descobrir que a execução adicional do programa é sem sentido (por exemplo, o programa funciona em uma versão antiga do terminal do cliente) durante o próximo início, a execução do início da função especial () será encerrada no bloco de processamento preliminar quando analisando o valor da variável Trabalho.


Calculando quantidade de lotes para novas encomendas.


A quantidade de lotes pode ser calculada de acordo com as configurações de um usuário seguindo uma das duas variantes. A primeira variante é um determinado valor constante configurado por um usuário. De acordo com a segunda variante, o montante dos lotes é calculado com base em uma soma igual a uma determinada porcentagem (definida por um usuário) de uma margem livre.


No início do bloco de definir a quantidade de lotes para novas encomendas (bloco 7-8), valores necessários de algumas variáveis ​​são calculados - quantidade mínima permitida de lotes e passo de mudança de lote configurado por um corretor, margem livre e preço de Um lote para a segurança.


Neste exemplo, o seguinte é fornecido. Se um usuário configurou um certo valor não-zero da variável externa Lts, por exemplo, 0,5, é aceito como a quantidade de lotes Lts quando uma solicitação comercial para abrir uma ordem é formada. Se 0 for atribuído a Lts, o número de lotes Lts é definido com base na variável Prots (percentual), margem livre e condições configuradas por um corretor.


Depois que Lts é calculado, um cheque é conduzido. Se esse valor for inferior ao valor mínimo permitido, o valor mínimo permitido será aceito. mas se a margem livre não for suficiente, após uma mensagem correspondente, a execução start () é encerrada.


Ordens de abertura.


O bloco de ordens de abertura (bloco 8-9) como o bloqueio das ordens de abertura é um loop infinito 'while'. No cabeçalho do primeiro operador, as condições de "se" para abrir uma ordem de compra são calculadas: se não houver ordens para a segurança (a variável Total é igual a 0) eo sinal para abrir uma ordem Comprar é relevante (Opn_B é verdade) , o controle é passado para o corpo do operador 'if' para abrir um pedido. Nesse caso, após as taxas são atualizados os preços para os níveis de parada são calculados.


Os valores dos níveis de parada são inicialmente definidos por um usuário nas variáveis ​​externas StopLoss e TakeProfit. Em um caso geral, um usuário pode definir valores para esses parâmetros menores que um corretor permite. 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). That's 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 New_Stop() is used; as a passed parameter the stop level value set by a user is used. In New_Stop() first the current minimal allowed distance is calculated. If the value set by a user corresponds to a broker's 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.


EA-PROGRAMMERS.


. automating your ideas.


Começando.


Each project begins with us gathering as much content as possible from you, we try and get a clear idea of what you are looking for, what you expect the final project to look like and what functionality the project will need.


PRICING & PAYMENTS.


We offer very competitive pricing. Unlike many other programming services, our pricing is not based on a per hour basis. Rather our pricing is calculated on a per job basis instead. All pricing is set depending on the complexity of the.


DELIVERY Timing.


Our aim is to provide the best service and delivery terms at the most reasonable prices on the market. We will consder all aspects of your request and give you acceptable price and fast delivery (usually with 1-3 days).


CUSTOMER RIGHTS.


All customers receive the original source code for their programming projects. The customer is free to distribute the code in any way, including for profit. We would never share your strategy or information our clients send to us.


EA Programmers is a software development company specialised in Forex software programming, Expert Advisor programming, Forex Signal Service, Metatrader programming e. t.c. Our company provide sophisticated automated trading solutions for various platforms as well as websitde design and programming services. We also develop cross-platform and web based solutions for your financial business. If you are a Forex trader, signal provider, or even a broker our team can offer excellent software solutions and supply custom integrations with external data sources.


Nossos serviços.


MQL4 Programming MQL5 Programming Easy Language - MQL conversions DLL Protection / Programming License Management System IPN Programming Forex Sales Website Design PHP Programming Forex Signal Website Programming Forex Joint Venture Website Design Website Maintenance Email Marketing Premium Support RSS Signal Configuration.


PEDIR UMA CITAÇÃO.


CALL US (T-FREE) : +1 (877) 778 - 6274.


Nossa Experiência.


Our expertise is at the heart of what we do.


The desire to commit further, to explore a new technology; the need to work at height on a complex project.


Our greatest asset is our programmers' expertise. Day after day, our specialists are working on innovative solutions for our clients.


EA Programmers Inc. has invested heavily in a wide range of current technologies.


We strive to use the technology best-suited for the client's needs, rather than bend the requirements to meet the strengths of one specific technology.


100% MoneyBack Guarantee in case of incomplete projects (Terms Apply).


Our COMMITMENT.


At EA Programmers Inc. , we recognize that people are our key asset. We have helped our customers to develope breakthrough ideas for their financial businessand stay connected to whats most important to them.


Being motivated by our clients, we are committed to putting quality into action throughout all our processes, from understanding cusstomers ideas to to final project deployment.


We are committed long term to the mission of helping our customers make the most out of their Forex tradings. Just as we constantly update and improve our horizon, we want to continually evolve our company to be in the best position to accelerate new technologies as they emerge and to better serve our customers.


TESTEMUNHOS.


EDU (South Africa)


You have done a fantastic job, thank you very much. I have searched programmer for 6 months for this job. Everybody got stuck in money management, they could not understand, I dont know why, I dont know maybe it was my bad time, one person charged 500 eurosm but you programmed it for such a cheap amount. Thumbs up!.


Rithadhama CS (India)


EA-Programmers Inc. В© 2018 Copyright Information. Todos os direitos reservados.

Comments

Popular posts from this blog

Cara daftar kontes instaforex

Dilkush forex soluções privadas limitadas

3 níveis zz semafor forex factory