Moving Average Ea Mql4


MetaTrader 4 - Expert. Moving Média - perito para MetaTrader 4. O especialista em Média Móvel para a formação de sinais de comércio usa uma média móvel Abertura e fechamento de posições são realizadas quando a média móvel se encontra com o preço no recém-formado bar índice de barras igual a 1 O tamanho do lote será otimizado de acordo com um algoritmo especial. O consultor especialista analisa a concorrência da média móvel eo gráfico de preço de mercado A verificação é realizada pela função CheckForOpen Se a média móvel atende a barra de tal forma que o primeiro é maior do que Preço aberto mas inferior ao preço de fechamento, a posição de COMPRA será aberta Se a média móvel atingir a barra de tal forma que a primeira é menor que o preço de abertura, mas superior a preço de fechamento, a posição de VENDA será aberta. O especialista é muito simples, mas eficaz o controle sobre cada volume de posição é realizado dependendo dos resultados das transações anteriores Este algoritmo é implementado pelo LotsOptimi Zed O tamanho do lote básico é calculado com base no risco máximo permitido. O parâmetro MaximumRisk exibe a porcentagem de risco básico para cada transação. Normalmente, possui um valor entre 0 01 1 e 1 100 Por exemplo, se a margem livre AccountFreeMargin é igual a 20.500 e Regras de gestão de capital prescrevem para usar o risco de 2, o tamanho do lote básico fará 20500 0 02 1000 0 41 É muito importante controlar a precisão do tamanho do lote e normalizar o resultado com os valores permitidos Normalmente, os lotes fracionários com o passo de 0 1 são permitidos Uma transação com volume de 0 41 não será executada Para normalizar, a função NormalizeDouble é usada com precisão até 1 caracter após o ponto Isso resulta no lote básico de 0 4 O cálculo do lote básico com base na margem livre Permite aumentar em volumes de operação dependendo da negociação bem sucedida, ou seja, para o comércio com o reinvestimento Este é o mecanismo básico com a gestão do capital obrigatório para o aumento de tr Ading effetiveness. DecreaseFactor é a medida em que o tamanho do lote será reduzido após negociação não rentável valores normais são 2,3,4,5 Se as transações precedentes não eram rentáveis, os volumes subseqüentes irá diminuir por um fator de DecreaseFactor, a fim de esperar por O período não rentável Este é o principal fator no algoritmo de gestão de capital A idéia é muito simples se a negociação está aumentando com sucesso, o especialista trabalha com o lote básico fazendo lucro máximo Após a primeira transação não rentável, o especialista irá reduzir a velocidade até um novo Positiva é feita O algoritmo permite desativar a redução de velocidade, para fazê-lo, é necessário especificar DecreaseFactor 0 O valor das últimas transações não lucrativas sucessivas é calculado no histórico de transações O lote básico será recalculado nesta base. Assim, o algoritmo Permite efetivamente reduzir o risco que ocorre como resultado de uma série de tamanho de lote não rentável é obrigatoriamente verificado para o mi Tamanho de lote máximo admissível no final da função, porque os cálculos feitos anteriormente pode resultar em lote 0. O especialista é principalmente destinado a trabalhar com o período diário, e no modo de teste - para fazer a preços fechados Será comercial apenas na abertura de Uma nova barra, é por isso que os modos de cada carrapato de modelagem não são needed. Testing resultados são representados no relatório. Tipicamente, duas médias móveis podem ser usados ​​para criar uma estratégia de forex EA para MT4 com estas regras. Compre quando o curto Período média móvel está acima da média móvel de longo período. Sell quando a média móvel de longo período está acima da média móvel de curto período. No gráfico a seguir do MetaTrader Terminal, a linha amarela é a média móvel período curto período 9 ea linha vermelha é O longo período de média móvel Período 18.Analizar o gráfico, poderíamos reescrever as regras de negociação ou sinais de forex como. Compre quando a linha amarela está acima da linha vermelha. Venda quando a linha amarela está abaixo da linha vermelha. Em vez de gastar um Muito tempo codificando esta estratégia de forex, com Molanis Strategy Builder você pode criar um diagrama de negociação que representa a estratégia de média móvel em minutos Basta arrastar e soltar dois blocos de análise técnica, um bloco de compra e um bloco de venda Ligue-os e defina os parâmetros de bloco para obter Um diagrama como o seguinte. Este diagrama de negociação tem dois caminhos de negociação A esquerda é destacada Ela vai do bloco START para o bloco END. One poderia lê-lo como comprar 1 lote de EURCAD com um lucro de 100 Pip e 50 pip Stop Loss Quando o curto período de média móvel 9 está acima da média de longo período de movimento 18 Lembre-se de ler o diagrama de negociação em sentido oposto ao fluxo de negociação. O caminho de negociação direita poderia ser lido como vender 1 lote de EURCAD com um lucro de 100 Pip e 50 Pip Stop Loss quando a média móvel de longo período 18 está acima da média móvel de curto período 9.Generando o código MQL para MetaTrader com apenas um clique. No menu Diagrama de Negociação, clique em Gerar Código MQL4 para obter E MQL4 janela de código Molanis Estratégia Construtor permite que você abra seu consultor perito diretamente com MetaTrader ou para salvá-lo como um arquivo MQ4. Não perca nosso tutorial em vídeo on. Simple Expert Advisor. Problem 29 Criar um negociante Expert Advisor. Preliminary Arguments. Before Começando a programar um Expert Expert de negociação, é necessário definir os princípios gerais de um programa futuro Não há um programa estrito criando regras No entanto, depois de ter criado um programa, um programador geralmente continua a melhorá-lo Para ser capaz de entender facilmente o programa em Futuro, ele deve ser criado de acordo com um bem-pensado e fácil de entender esquema é especialmente importante se um programa será melhorado por outro programador O programa mais conveniente é o que consiste em blocos funcionais, cada um dos quais É responsável pela sua parte de cálculos Para criar um algoritmo de um especialista em negociação Expert, vamos analisar o que um programa operacional deve fazer. Um dos dados mais importantes na A formação de ordens comerciais é 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 permite, várias ordens podem ser abertas em um terminal ao mesmo tempo, embora seu número deve Ser razoavelmente limitado Ao usar qualquer estratégia, as decisões comerciais devem ser tomadas levando em conta a situação atual Antes de uma decisão comercial é feita em um programa, é necessário saber o que as ordens de negociação já foram abertas ou colocadas Primeiro de tudo um programa deve conter Um bloco de ordens de contabilidade que está entre os primeiros a ser executado. Durante uma execução EA decisões comerciais devem ser feitas, cuja implementação leva à execução de operações comerciais Parte do código responsável pela formação de ordens de negociação é melhor escrito 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 uma das ordens existentes ou Todos Um EA também deve calcular os preços de ordem dependendo do desejo de um usuário. As decisões comerciais devem ser feitas em um programa com base em critérios comerciais O sucesso de todo o programa depende da correção de 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, 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, Responsável pelo cálculo dos critérios de negociação deve ser escrito em um bloco separado. Um especialista em negociação conselheiro deve necessariamente conter bloco de processamento de erro Analisar erros que podem ocorrer na execução da operação comercial permite, por um lado, repetir uma solicitação de comércio e, Por outro lado, para informar um usuário sobre uma situação de conflito possível. Structure de um Simple Expert Advisor. Below é um esquema estrutural de uma simples Exper T Conselheiro construído com base em vários blocos funcionais, em cada bloco uma determinada parte destacada dos cálculos. Fig 109 Esquema estrutural de um simples Expert Advisor. No estágio de desenvolvimento EA seguinte não há código de programa ainda. Ao mesmo tempo, o algoritmo de Um programa é formada em grande medida Como o EA construído sobre as bases do esquema oferecido irá operar pode ser facilmente entendido simplesmente olhando para o esquema e orientando sobre nomes de blocos e matrizes de relações controle passando entre eles. Depois de iniciar o controle 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 de barras necessárias para calcular parâmetros de indicadores técnicos, uma EA não será capaz de funcionar adequadamente Nesse caso, um EA Deve terminar a operação preliminarmente informar um usuário sobre ele e informar sobre o motivo da rescisão Se não houver contra-indicação de caráter geral, co Ntrol é passado para o bloco de contamento de ordem. No bloco de ordens de contabilidade o número e qualidade de ordens existentes em um terminal de cliente para uma segurança para a janela de que o EA está unido é detectado neste bloco encomendas de outros títulos deve ser eliminado Se Uma estratégia de negociação programada requer o uso de apenas ordens de mercado e não usa ordens pendentes o fato de presença de ordens pendentes deve ser detectado Se uma estratégia admite apenas uma ordem de mercado e há realmente várias ordens, esse fato também deve ser conhecido A tarefa da O bloco de contabilidade de ordem neste esquema é definir se a situação atual de negociação corresponde a uma esperada, isto é, aquela em que a EA pode operar adequadamente Se a situação corresponder, o controle deve ser passado para o bloco seguinte para continuar a operação da EA se não , A operação da EA deve ser encerrada e este fato deve ser relatado a um usuário. Se não houver ordens no terminal ou o número e qualidade das ordens existentes co Corresponde ao que se esperava, o controlo é 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, nomeadamente os critérios de abertura, encerramento e modificação de ordens. É 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 só depois disso abrir novas ordens Geralmente, é correto Ser guiado pelo desejo de ter o menor número possível de encomendas. Durante a execução deste bloco, todas as ordens, para as quais o critério de fechamento foi ativado, devem ser fechadas. Depois que todas as ordens necessárias foram fechadas, o controle é passado para um bloco de novas Cálculos de tamanho de pedidos Há um monte de algoritmos para calcular um volume de ordem O mais simples deles é usar um tamanho de lote constante, fixa É conveniente usar este algoritmo Em um programa para testar estratégias Mais método popular de definir um tamanho de ordem está ajustando o número de lotes dependendo da quantidade de margem livre, por exemplo 30-40 do mesmo Se a margem livre não é suficiente, o programa termina sua operação tendo informado um Usuário sobre a razão. Desde que o número de lotes para abertura de novas encomendas é definido, o controle é passado para bloqueio de abertura da ordem Se algum dos critérios calculados anteriormente aponta para a necessidade de abrir uma ordem de um determinado tipo, um pedido de comércio para abrir uma ordem É formado neste bloco. Há também bloco de análise de erro em um Expert Advisor Se alguma operação de comércio falhou, controle somente neste caso é passado para o bloco de processamento de erro Se um erro retornado por um servidor ou terminal de cliente não é crucial, mais um Tentativa é feita para executar uma operação de comércio Se um erro crucial é retornado, por exemplo, uma conta é bloqueada, um EA deve terminar a sua operação Lembre-se, em MQL4 não há possibilidade de programa de encerramento de uma EA s opera Ver em Funções Especiais O que pode ser feito de uma maneira programada é a terminação do início Em um novo começo da função, comece em uma nova marca o valor de uma determinada bandeira variável que proíbe a negociação neste Caso habilitado como resultado de um erro crítico pode ser analisado eo controle pode ser passado para o término da operação de função especial assim formação de novo pedido de comércio não é permitido No esquema oferecido o valor de sinalizador é analisado no bloco de processamento preliminar. Estratégia de Negociação. Os preços de mercado estão em constante movimento. O estado de mercado em qualquer momento do tempo pode ser condicionalmente caracterizado como uma tendência - forte mudança de preço unidirecional aumento ou queda, ou como um movimento de preços flat-lateral com desvios fracos de uma certa média Estas características de mercado São condicionais, porque não há critérios claros, de acordo com qual tendência ou plano pode ser identificado Por exemplo, movimentos laterais longos com desvio forte S que não pode ser traçado nem a um plano nem a uma tendência Geralmente é assumido que o mercado é principalmente no estado de movimento lateral e tendências geralmente ocorrem 15-20 de time. Fig 110 Flat e tendência no market. All negociação As estratégias também podem ser convencionalmente divididos em dois grupos principais. O primeiro grupo contém estratégias planas A idéia principal de tais estratégias é que após um evidente desvio preço deve retornar à posição anterior, é por isso que as ordens são abertas na direção contrária à 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 que o movimento do preço do sal Existem estratégias combinadas mais complicadas Essas estratégias levam em conta muitos fatores diferentes que caracterizam o mercado, Plano e tendência Não é difícil de implementar a negociação de acordo com esta ou essa estratégia tecnicamente - MQL4 contém todos os meios necessários para ele O trabalho principal no cr Eation de uma vez estratégia própria consiste na busca de critérios de negociação. Trading Criteria. In neste exemplo, vamos tentar construir uma tendência Expert Advisor, ou seja, o que vai abrir ordens na direção do movimento de preços Então, precisamos encontrar entre vários técnicos Indicadores que detectam um início de tendência Um dos métodos mais simples de procurar critérios de negociação 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 dois MA diferentes com períodos de média 11 e 31 em Diferentes partes do mercado Médias com pequenas linhas de média de período vermelho estão mais perto de um gráfico de preços, twisty e móveis Médias móveis com maior período de média linha azul são mais inertes, têm maior lag e estão situados mais distantes dos preços de mercado Vamos prestar atenção aos lugares onde MA com períodos de média diferentes atravessam e tentam decidir se o fato de cruzamento MA pode ser usado como um critério de leitura. Fig 111 Cruzamento de MA 11 e MA 3 1 quando movimento de preço changes. In sentido Fig 111 vemos uma parte do mercado onde as ordens de abertura no sentido de movimento de preços no cruzamento MA é justificada No ponto A a linha vermelha cruza o azul de baixo para cima, depois que o preço de mercado continua a crescer Por algum tempo Avanço adicional MA cruzamento indica a mudança de sentido de movimento de preço Se abrimos uma ordem de compra no ponto A e fechá-lo em B, vamos obter lucro proporcional à diferença de preços A e B. Fig 112 Cruzamento de MA 11 e MA 31 Quando mudanças de direção de movimento de preço. Ao mesmo tempo, existem outros momentos no mercado quando cruzam MA, mas isso não leva a maior aumento de preços ou queda considerável Fig 112 Ordens abertas em MA cruzamento em tais momentos levará a perdas Se Sell é Aberto em A e fechado em B, tal negociação trará perdas O mesmo pode ser dito sobre uma ordem de compra aberta em B e fechado em C. O sucesso de toda a estratégia implementada com base em MA cruzamento depende do número de peças t Chapéu pode ser caracterizado como tendência e plana Em plano muitas vezes MA cruzamento é um evento regular que interfere com qualquer estratégia de tendência Numerosos sinais falsos, como regra levar a perdas É por isso que este sinal cruzamento de MAs com período de média diferente - pode ser usado para Construindo estratégias de negociação apenas em combinação com outros sinais provando uma tendência Neste exemplo para a construção de um consultor perito simples teremos de recusar usando este sign. We usará outro sinal Analisando visualmente o caráter de mudanças de preços no mercado, podemos ver que Uma subida ou uma queda de preços em uma direção, muitas vezes aparece como resultado de um curto movimento forte. Em outras palavras, se em um curto período ocorrer um forte movimento, podemos esperar sua continuação em um período de médio prazo. Pode levar a um desenvolvimento de tendência. O gráfico 113 mostra o período de mercado quando um movimento forte resultou na continuação da mudança de preço na mesma direção. Como um movimento forte, podemos usar as diferenças Além disso, mesmo fortes movimentos de preços descontínuos com maior retorno não resultam em uma grande diferença entre MAs Por exemplo, salto de preço por 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 realmente forte que normalmente não é acompanhado por um Uma correção considerável no ponto A resultou no aumento da diferença até 25 - 30 pontos. Se a ordem de compra é aberta quando um determinado valor de diferença entre MAs é alcançado, por exemplo em A, muito provavelmente a ordem será rentável quando um preço atinge um Preset Stop order value Vamos usar este valor como um critério de negociação em nosso Expert Advisor. Number of Orders. Neste exemplo, analisamos um Expert Advisor que admite a presença de apenas um m Uma ordem pendente não é fornecida Tal abordagem é justificada não apenas neste exemplo, mas pode ser usada como base para qualquer estratégia. As ordens pendentes são normalmente 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 há necessidade de usar ordens pendentes. A situação quando várias ordens opostas para uma segurança estão abertas também não pode ser considerado razoável Foi escrito anteriormente que, do ponto de vista econômico, ordens opostas são consideradas sem sentido , Especialmente se os preços da ordem forem iguais veja Encerramento e exclusão de ordens Nesse caso, devemos fechar uma ordem por outra e esperar por um sinal para abrir uma ordem de mercado em uma determinada direção. Racionamento de Critérios de Negociação. Clarificar quais são as relações possíveis entre os critérios de negociação. A Fig. 114 mostra três variantes de correlação de critérios de negociação, quando cada critério é importante. Pening e encerramento de ordens de mercado ocorrem no sentido horário sobre as seguintes imagens. Fig 114 Ordem de abertura e fechamento de critérios correlação ae b - correto, c - incorreto. A variante mais popular de um corretamente formados critérios de negociação é a variante a Depois de ser aberto um mercado Ordem de compra é mantida até o momento em que o critério que exige o seu fechamento desencadeia Depois que uma pausa ocorre quando não ordens são abertas Mais uma ordem de mercado Venda pode ser aberto Condições para fechar uma ordem de venda de acordo com os critérios corretamente formados ocorrem mais cedo do que condições para Abertura de uma ordem de compra No entanto, uma ordem de compra pode ser aberta mais uma vez, se um critério de negociação exige isso Mas, de acordo com esta variante uma ordem de mercado não pode ser aberto se houver uma ordem de mercado aberto na direção contrária. 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 varia Nt a não permite várias ordens abertas no terminal ao mesmo tempo em um security. The variante de correlação de critérios é incorreto De acordo com esta variante abertura de uma ordem de mercado é permitido quando ordens contrárias não são fechadas ainda, o que é sem sentido Não pode Casos raros quando esta variante é parcialmente justificada A abertura de uma ordem oposta é por vezes aceitável para compensar as perdas que ocorrem em pequenas correcções após fortes movimentos de preços Em tais casos uma ordem oposta pode ser aberta do mesmo ou menor valor do que já existe e então Fechado quando a correção for excedida Tal tática permite não interferir com a ordem principal aberta na direção da tendência. Em geral, várias ordens de um sentido também são possíveis Isso pode ser justificado quando uma ordem aberta anterior é protegida por uma ordem Stop e No entanto, ao criar tal estratégia, um desenvolvedor deve ser Plenamente conscientes de que, em caso de uma mudança de movimento de preço afiado as ordens de parada colocados podem ser executadas por alguns corretores no primeiro toque de preço E a perda será proporcional ao valor total de ordens de mercado unidirecional. Em 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 paragem ou depois de um critério de abertura de uma ordem em direção oposta gatilhos aqui critério de fechamento Compra coincide com a de abertura Sell e vice-versa. Size de Opened Orders. In qualquer negociação Os tamanhos de ordem de estratégia devem ser razoavelmente limitados. Em um caso simples, um tamanho de ordem fixo é usado em um Expert Advisor Antes do início da operação EA, um usuário pode definir qualquer tamanho de pedidos futuros e deixá-lo inalterado por algum tempo. Configurar um novo valor de números de lote de ordens abertas. Um tamanho de ordem muito pequeno fornece 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 E Se o tamanho da ordem é muito grande, pode-se obter 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, equilíbrio e margem livre no momento antes da abertura da ordem será igual. Neste exemplo, as duas variantes são implementadas. Um usuário pode escolher indicar diretamente valores de ordens ou definir o valor em porcentagem a partir da Free margin. Programming Details. A tendência simples Expert Advisor construído com base em argumentos anteriores pode se parecer com este. Descrever Variáveis. One mais critério na estimativa do programa é a sua legibilidade Um programa é considerado ser escrito corretamente, se ele 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 é recomendável declarar e comentar todas as variáveis ​​no início do progr Am. No bloco 1-2 as variáveis ​​externas e globais são descritas. De acordo com as regras, as variáveis ​​externas e globais devem ser abertas antes do primeiro uso, ver Tipos de Variáveis, por isso são declaradas na parte da cabeça do programa. O início da função são reunidos e descritos no bloco de parte superior da função 2-3 imediatamente após o cabeçalho da função Regras de declarar as variáveis ​​locais não exigem, mas também não proíbem Se um programador enfrenta dificuldades em compreender o significado de uma variável ao ler O programa, ele pode se referir à parte superior do programa e descobrir o significado eo tipo de qualquer variável É muito conveniente na prática de programação. Block de preliminar processing. In neste exemplo o pré-processamento consiste em duas partes bloco 3-4 O programa termina 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 calcular os critérios A 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 eo início termina sua operação Valor não será alterado no futuro, é por isso que o código a seguir não é executado Em tal caso, a operação do programa deve ser interrompido eo motivo do erro crítico deve ser detectado, se necessário, um centro de negociação deve ser contactado Após a situação é resolvido , O programa pode ser iniciado mais uma vez, ou seja, o EA pode ser anexado a uma janela de segurança. Ordens de contabilidade. O perito Expert Advisor permite trabalhar apenas com uma ordem de mercado A tarefa do bloco de bloco de contabilidade de pedidos 4-5 é definir características de Uma ordem aberta, se houver um No loop passando ordens para todo o mercado existente e ordens pendentes são verificados, ou seja, a partir do primeiro int i 1 para o último i lt OrdersTotal Em cada cy A ordem seguinte é selecionada pela função OrderSelect A seleção é feita a partir de uma fonte de pedidos abertos e pendentes SELECTBYPOS. If a seleção é executada com êxito, ou seja, há mais uma ordem no terminal, mais esta ordem ea situação deve ser analisada Se a ordem é aberta para a segurança, em que a EA opera, se a ordem está no mercado ou pendente também deve ser levado em conta ao contar ordens Na linha. Todas as ordens abertas para outra segurança são eliminadas Operador continuar pára a iteração e As características de tal ordem não são processadas. Mas se a ordem é aberta para a segurança, para a janela da qual a EA está anexada, ela é analisada mais a fundo. Se OrderType retornar o valor mais de 1 ver Tipos de Trades, a ordem selecionada é uma Pendente um Mas neste especialista Advisor gerenciamento de pedidos pendentes não é fornecido Isso significa que a execução do início deve ser encerrado, porque uma situação de conflito ocorreu Em tal caso após Uma mensagem sobre a execução do início da execução da operação é interrompida pelo retorno do operador. Se o último cheque mostrou que a ordem analisada é uma ordem de mercado, o número total de pedidos de um título é calculado e analisado Para a primeira dessas ordens todas as características necessárias São definidos Se na próxima iteração a variável do contador de ordem Total encontrar a segunda ordem de mercado, a situação também é considerada como conflito, porque a EA não pode gerenciar mais de uma ordem de mercado. Nesse caso, a execução de início é interrompida depois de mostrar uma mensagem correspondente . Como resultado da execução do bloco de conta de ordem 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 ​​definidas Em correspondência com o número de características da ordem, tipo, preço de abertura, níveis de parada e valor da ordem também obter seus valores. Critérios de NegociaçãoCalculating. In ana Lyzed Exemplo de definição do critério de negociação O bloco 5-6 é calculado com base na diferença entre médias móveis com diferentes períodos de média De acordo com critérios aceitos, um gráfico é dirigido pelo touro se o valor atual do MA com período menor for maior que o valor De MA com período maior ea diferença entre os valores é maior que um certo valor Em um movimento de urso MA com menor período é menor do que MA com maior período ea diferença é também maior que um determinado valor crítico. Ao início do bloco valores 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 de disparo para abertura de Ordens de Compra e Venda, variáveis ​​Cls e ClsS - Por exemplo, se um critério para abrir o Buy não foi disparado, o valor de OpnB permanece definido como false na inicialização da variável se tiver trig O OpnB obtém o valor verdadeiro Neste caso, o critério de fechamento Sell coincide com o de abertura Buy, critério de abertura Sell coincide com o de fechamento Buy. Trading critérios aceitos neste exemplo são utilizados apenas para fins educacionais e não deve ser considerado Como uma diretriz ao negociar em uma conta real. Fechar ordens. Foi escrito mais cedo que este conselheiro perito é pretendido para a operação somente com uma ordem do mercado aberta para uma segurança, a que janela a EA é unida ao momento em que o controle no programa É passado para o bloco de fechamento de ordem é sabido 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 em blocos de fechamento de pedidos é escrito para que apenas uma ordem pode Ser fechado com sucesso. Este bloco é baseado no loop infinito, enquanto, o corpo do qual consiste em duas partes análogas uma para fechar uma ordem de compra, outra para fechar uma ordem de venda Enquanto é usado aqui para th E propósito que no caso de uma falha de operação comercial poderia ser repetido mais uma vez. No cabeçalho do primeiro operador se condição para fechar uma Ordem de Compra é calculada As ordens de venda são fechadas de forma análoga Se o tipo de uma ordem aberta anterior corresponde Para comprar ver Tipos de negócios eo sinal para fechar Compra é relevante, o controle é passado para o corpo de se operador onde um pedido para fechar é formado Como um preço de fechamento de ordem na função OrderClose o valor de uma cotação de dois lados correspondente a O tipo de ordem é indicado consulte Requisitos e Limitações na Realização das Operações Se uma operação comercial é executada com sucesso, após uma mensagem sobre o fechamento da ordem é mostrada a corrente enquanto a iteração é interrompida ea execução do bloco de fechamento da ordem é excedida Mas se a operação falhar , A função definida pelo usuário para erros de processamento FunError é chamado de bloco 10-11.Processing Errors. As um parâmetro passado em FunError o último código de erro calculado por GetLastError é usado Depe O 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 de um programa pode ser continuada, por exemplo, um Erro comum e aqueles, após o que a execução de quaisquer operações comerciais deve ser interrompida, por exemplo, conta bloqueada. if após uma operação de comércio mal sucedida 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 retorna 0, a execução de início atual é interrompida No próximo início do tick 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á Se durante o processamento de erro é descoberto que a execução do programa adicional é sem sentido, por exemplo, o programa opera em uma versão de terminal antigo cliente durante o próximo início t A execução do início da função especial será terminada no bloco de processamento preliminar ao analisar o valor da variável Work. Calculating Quantidade de lotes para New Orders. 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 utilizador De acordo com a segunda variante o montante dos lotes é calculado com base numa soma igual a uma determinada percentagem fixada por um utilizador de uma margem livre. O bloco de definir a quantidade de lotes para o novo bloco de ordens 7-8 valores necessários de algumas variáveis ​​são calculados - quantidade mínima permitida de lotes e etapa de mudança de lote criada por um corretor, margem livre e preço de um lote para o título. Neste exemplo, o seguinte é fornecido Se um usuário tiver configurado um certo valor não-zero da variável externa Lts, por exemplo 0 5, ele é aceito como a quantidade de lotes Lts quando um pedido de comércio para abrir uma ordem é formado Se 0 é como Assinado a Lts, o número de lotes Lts é definido com base na variável Prots percentual, margem livre e condições estabelecidas por um corretor. Depois de Lts é calculado, uma verificação é realizada Se esse valor for menor que o valor mínimo permitido, O valor mínimo permitido é aceito, mas se a margem livre não é suficiente, após uma mensagem correspondente a execução de início é terminada. Opening Orders. O bloco de abertura ordens bloquear 8-9 como o bloke de ordens de abertura é um loop infinito enquanto no cabeçalho Do primeiro operador se as condições para abrir uma ordem Buy forem calculadas se não existirem ordens para a variável de segurança Total é igual a 0 eo sinal para abrir uma ordem Buy é relevante O OpnB é verdadeiro, o controlo é passado para se o corpo do operador for aberto Uma ordem Neste caso, após as taxas são atualizadas os preços para os níveis de parada são calculados. Valores de 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 esta par Ameters menor que um corretor permite Além de um corretor pode alterar a distância mínima permitida a qualquer momento é um caso frequentemente em movimentos de mercado forte, por exemplo, antes de lançamento de notícias importantes Isso é por que antes de cada fim de abertura de ordem níveis devem ser calculados tendo em conta Valores definidos por um usuário e o valor mínimo permitido configurado por um broker. Para calcular níveis de parada, a função definida pelo usuário NewStop é usada como um parâmetro passado o valor de nível de parada definido por um usuário é usado Em NewStop primeiro a distância mínima permitida atual É calculado Se o valor definido por um usuário corresponde aos requisitos de um corretor, este valor é retornado Se for menor que o valor permitido, o valor permitido por um corretor é usado Os preços de solicitações de parada são calculados a partir da cotação correspondente em dois lados Consulte Requisitos e limitações na realização de negócios. Uma solicitação de negociação para abrir uma ordem é formada usando a função OrderSend Para o cálculo do preço de abertura da ordem e dos preços dos pedidos de parada t Se valores de cotação de dois lados correspondentes ao tipo de ordem são usados ​​Se uma operação comercial foi bem sucedida, um servidor retornou o número de uma ordem aberta depois que uma mensagem sobre uma abertura de ordem bem-sucedida é mostrada a execução de início é concluída Se uma ordem não foi aberta ea O terminal do cliente retornou um erro, o erro é processado de acordo com o algoritmo descrito anteriormente. Algumas Código Peculiaridades. O código Expert Advisor analisado é orientado para a implementação de uma determinada estratégia Nota, algumas linhas de programa contêm variáveis ​​e cálculos que seriam alterados, se 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 Howeve r, 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 bloc ks 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 think and manage all other functions, i e call them when needed.

Comments

Popular Posts