воскресенье, 17 июня 2018 г.

Consultor especialista em mudança de mediação móvel


The Moving Average Cross Expert Advisor A média móvel média é uma das estratégias de negociação básicas mais populares. Ele usa duas ou mais médias móveis de diferentes períodos para determinar a direção da tendência. Quando a média móvel mais rápida está acima da (s) média (ões) mais lenta, uma posição longa é aberta e vice-versa para uma posição curta. A média média móvel se destaca durante tendências longas e sustentadas como uma estratégia de negociação de médio alcance. As estratégias baseadas na cruz da média móvel sempre foram freqüentemente solicitadas por nossos clientes, e é por isso que oferecemos o conselheiro perito cruzado em média móvel. Agora você pode comprar este consultor especialista em mais de 50 anos. Anteriormente 45, o consultor especial de Luxo de Promessa Média está agora apenas 19.95 Até 3 linhas médias móveis. Use duas médias móveis ou adicione um terceiro para filtrar as tendências a longo prazo. Tipos médios móveis. Simples. Exponencial. Liso ou linear ponderado. Dados de preços. Escolha entre Close, Open, High, Low, Median, Typical ou Weighted Close. Mudança . Mude as linhas médias móveis para frente ou para trás. Múltiplos prazos. Cada média móvel pode ser definida para qualquer período de tempo do gráfico. Gerenciamento de dinheiro - O tamanho do lote é calculado automaticamente para que o risco máximo por comércio seja limitado a uma porcentagem do seu patrimônio. Trailing Stop Break Even Stop - Ajuste automaticamente a perda de parada à medida que o comércio se move em lucro. Defina níveis mínimos de lucro, arrastar passo a passo em incrementos e mais Temporizador de comércio diário - Limite sua negociação intradiária às horas em que o mercado está mais ativo. Você pode fechar opcionalmente todas as ordens abertas no final do dia. Controle de Ordem Manual - Coloque ordens manuais em seu gráfico com um comentário de comércio especificado, e o MA Cross EA irá percorrer a parada de perda e fechar a ordem automaticamente em uma cruz oposta. Executar uma vez por barra ou todos os tiques. Escolha com que frequência verificar as condições de abertura e encerramento do pedido. Você pode negociar em todos os tiques, ou apenas no final de cada barra. Close On Cross - Feche a posição atualmente aberta em uma cruz média móvel na direção oposta. Se desativado, os pedidos só serão fechados em uma perda de parada ou manualmente. Robusto. Manipulação e notificação de erros completos, repetição em requotes e muito mais. Totalmente compatível com ECN e corretores de 5 dígitos. Alertas - Escolha entre alertas de áudio, a caixa de diálogo de alerta incorporada, alertas de e-mail ou notificações enviadas para o seu smartphone. Você pode comprar a média média móvel EA imediatamente por apenas 19,95 Problema simples do consultor especial 29. Criar um consultor especialista em negociação. 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 consultor de especialistas em negociação, 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 comerciais 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 não realizar nenhuma ação. Uma EA também deve calcular os preços das ordens dependendo do desejo dos usuários. 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 Especialista pode analisar a combinação de valores de indicadores técnicos, tempo de lançamentos de notícias importantes, tempo 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 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 de especialistas simples Abaixo está um esquema estrutural de um consultor de especialistas simples construído com base em vários blocos funcionais, em cada bloco uma certa parte dos cálculos. 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 EAs, caso contrário, a operação EAs 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 os 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 ordens 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 cálculo de novos tamanhos de pedidos. 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 pedido é 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 um pedido é 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 um programa encerrar uma operação de EAs em uma janela de segurança (diferente dos scripts, consulte Funções especiais). O que pode ser feito de uma forma 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, não é permitida a formação de novo pedido comercial. 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, é assumido que o mercado está principalmente no estado do movimento lateral e as tendências geralmente ocorrem 15-20 do tempo. 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 tendenciais, 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 consideração muitos fatores diferentes que caracterizam o mercado como resultado, a negociação pode ser executada tanto no plano como 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 consiste na 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. FIG. 111 e 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 MA 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 posterior do 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 uma ordem de compra aberta em B e fechada em C. O sucesso de toda a estratégia implementada com base no cruzamento de MA depende do número de peças 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, levam 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 longo prazo em um lado geralmente aparece como resultado de um curto movimento forte. Em outras palavras, se dentro de um curto período de tempo ocorreu um forte movimento, podemos esperar sua continuação em um período de médio prazo. 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 a quota de 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 um período de média maior em 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 de diferença entre MAs apenas por 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 certo valor de diferença entre MAs for alcançado, por exemplo, em A, muito provavelmente a ordem será rentável quando um preço atingir um valor de ordem Stop pré-definido. Permite usar esse valor como critério de negociação no nosso Consultor Especialista. Número de encomendas Neste exemplo, analisamos um consultor especialista que admite 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 tem 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 são iguais (ver Encerramento e Extinção de Ordens). 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. FIG. 114 mostra três variantes de correlação de critérios comerciais, quando cada critério é importante (válido). As ações (abertura e fechamento de ordens de mercado) ocorrem no sentido horário nas seguintes imagens. FIG. 114. Correspondência de critérios de abertura e fechamento de pedidos (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 disparadores 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 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 ocorrendo em pequenas correções após movimentos de preços fortes. Nesses casos, uma ordem oposta pode ser aberta com o mesmo valor ou menor que a já existente e depois fechada quando a correção acabou. Essa tática permite não interferir com o quotmainquot order 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, o 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 tamanho de ordem de estratégia comercial deve ser razoavelmente limitado. 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 balanço 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, pode-se adquirir grande lucro, mas tal EA será muito arriscado. Normalmente, o tamanho das ordens abertas é configurado de modo que os requisitos de margem não excedam 2-35% 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 será 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ído com base em argumentos anteriores pode ser assim: Descrevendo variáveis ​​Um critério mais na estimativa do programa é a legibilidade. Um programa é considerado corretamente escrito, se pode ser facilmente lido por outros programadores, é por isso que todas as partes principais 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), e é 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 declarar 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 das médias móveis necessárias para o cálculo dos 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, falso é atribuído a esta variável e o início () 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 de contabilidade O Consultor Especializado 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 começo, as ordens para todos os pedidos existentes no mercado e pendentes são verificadas, desde o primeiro (int i1) até o último (iampltOrdersTotal ()). 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 (SELECTBYPOS). 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 está aberta para a segurança, na qual a EA opera, se a ordem é comercializada ou pendente Também deve ser levado em consideração ao contar pedidos. Na linha: todos os pedidos abertos para outra segurança são eliminados. O operador continua para 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 Expert Advisor, o gerenciamento de pedidos 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 Na definição de exemplo analisada de critérios de negociação (bloco 5-6) é calculado 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 do MA com um período menor for maior do 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 que um determinado valor crítico. Nos valores iniciais do bloco de MAs com períodos de média PeriodMA1 e PeriodMA2 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 ​​OpnB e OpnS indicam o critério desencadeante para abrir pedidos de compra e venda, variáveis ​​Cls e ClsS - para fechamento. Por exemplo, se um critério para abrir o Buy não tiver disparado, o valor de OpnB permanece falso (definido na inicialização da variável) se ele tiver disparado, o OpnB obtém o valor true. 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. 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. Encomendas de encerramento Foi escrito anteriormente que este Consultor Especialista se destina à operação apenas com um único pedido de mercado aberto para uma segurança, a qual janela está 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 para que apenas uma ordem possa ser fechada com sucesso. Este bloco é baseado no loop infinito, enquanto o corpo composto por duas partes análogas: um para fechar uma ordem de compra, outro para fechar uma ordem de venda. Embora seja usado aqui para a finalidade de que, em caso de falha na operação comercial, possa ser repetida mais uma vez. No cabeçalho do primeiro operador se a condição para fechar uma ordem de Compra é calculada (as ordens de venda são fechadas da maneira análoga). Se o tipo de ordem aberta anterior corresponder à Compra (ver Tipos de Operações) e o sinal para fechar a Compra é relevante, o controle é passado para o corpo do operador se o operador onde uma solicitação de fechamento for 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 (consulte Requisitos e Limitações em Making Trades). Se uma operação comercial for executada com sucesso, após uma mensagem sobre o fechamento da ordem, a corrente enquanto a iteração é interrompida ea 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 FunError () é chamada (bloco 10-11). Processando Erros Como um parâmetro passado no FunError (), o último código de erro calculado pelo GetLastError () é usado. Dependendo do código de erro FunError () 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 depois de uma operação comercial sem sucesso a função definida pelo usuário retorna 1, a corrente enquanto a iteração é 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 as condições para o fechamento da ordem forem preservadas, 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 a quantidade de lotes para novas encomendas 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 ordens (bloco 7-8), os 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 enquanto. No cabeçalho do primeiro operador, se as condições para a abertura de uma ordem Comprar 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 (OpnB é verdade), controle É passado para o corpo do operador 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 em 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. Além disso, um corretor pode alterar a distância mínima permitida em qualquer momento (é um caso freqüente de fortes movimentos do mercado, por exemplo, antes do importante comunicado de imprensa). É por isso que, antes de cada ordem, os níveis de parada de abertura devem ser calculados tendo em conta os valores estabelecidos por um usuário e o valor mínimo permitido configurado por um corretor. 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. Adjustable MA Expert Advisor Adjustable MA Forex expert advisor is a customizable moving average EA that offers flexible tuning of the traditional 2-MA cross strategy. You can set different MA periods, MA types, minimum difference, stop-loss, take-profit, trailing stop and slippage. This expert advisor always opens position on cross and closes it on the next cross. The back-test of the Adjustable MA MetaTrader expert advisor has shown 12.2 profit with 12.6 maximum drawdown during a 6-year period. O volume usado da posição39 foi ajustado para 0.1 lotes padrão. The EA made 647 trades, of which 56.41 were profitable. As configurações padrão foram usadas nesta prova posterior no gráfico EURUSD M5. As you can see, the results are not very good. It is not recommended to use this EA on live account. O que é o stop-loss e o lucro-benefício usados ​​por este EA Por padrão, ele usa stop-loss fixo em 100 pips e take-profit a 70 pips. A parada final é desativada por padrão. How often does it trade On 5-minute EURUSD chart (the back-test settings) this EA will trade once every day on average. Any settings other than default can be used The limited forward test (which should be more reliable than a back-test) on AUDUSD M5 chart showed some profitable set-up for this expert advisor. These parameters should be changed from default: StopLoss mdash 30 TakeProfit mdash 50 TrailingStop mdash 20 Period1 mdash 50 Period2 mdash 10 This EA is ECN-compatible. Você deve definir o parâmetro de entrada ECNMode como verdadeiro para habilitar a compatibilidade ECN para este consultor especialista. Caso contrário, você provavelmente irá ver as mensagens OrderSend Error 130 quando a EA tentará abrir posições. Isso ocorre porque, se você estiver negociando com um corretor ECN (com execução de mercado para pedidos), você não pode configurar o SLTP na abertura da posição. Você deve abrir uma posição primeiro sem SLTP e somente depois modificá-la, adicionando stop-loss e ou nível de lucro. Aviso de Discussão Antes de fazer perguntas básicas sobre a instalação dos consultores especializados, leia este Tutorial MT4 Expert Advisors para obter o conhecimento elementar sobre como lidar com eles. Do you have your own trading results or any other remarks regarding this expert advisor Discuss Adjustable MA with other traders and MQL programmers on the experts forums.

Комментариев нет:

Отправить комментарий