Saturday 19 August 2017

Simple Ea Moving Average


MetaTrader 4 - Experts Moving Average - especialista 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 encontra o preço na barra recentemente formada (índice de barra 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 e da tabela de preços de mercado. A verificação é executada pela função CheckForOpen (). Se a média móvel atingir a barra de tal forma que a primeira for superior ao preço de abertura mas inferior a preço de fechamento, a posição de compra será aberta. Se a média móvel se encontrar com a barra de tal forma que a primeira é inferior ao preço de abertura mas superior ao preço de fechamento, a posição de VENDA será aberta. Money Management usado no especialista é muito simples, mas eficaz: o controle sobre cada volume de posição é realizado, dependendo dos resultados das transações anteriores. Este algoritmo é implementado pela função LotsOptimized (). 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. Geralmente possui um valor entre 0,01 (1) e 1 (100). Por exemplo, se a margem livre (AccountFreeMargin) é igual a 20.500 e as regras de gerenciamento 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, lotes fraccionados com passo de 0,1 são permitidos. Uma transação com volume de 0,41 não será realizada. Para normalizar, a função NormalizeDouble () é usada com precisão até 1 caractere 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 os volumes de operação dependendo do sucesso de negociação, ou seja, negociar com o reinvestimento. Este é o mecanismo básico com a gestão obrigatória do capital para o aumento da eficiência comercial. DecreaseFactor é a medida em que o tamanho do lote será reduzido após negociação não rentável. Os valores normais são 2,3,4,5. Se as transações precedentes não fossem lucrativas, os volumes subseqüentes diminuirão por um fator de DecreaseFactor para esperar pelo período não lucrativo. Este é o principal fator no algoritmo de gerenciamento 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é que uma nova transação positiva é feita. O algoritmo permite desativar a redução de velocidade, para fazê-lo, é preciso especificar DecreaseFactor 0. O valor das últimas transações não lucrativas sucessivas é calculado no histórico de negócios. O lote básico será recalculado nessa base: Assim, o algoritmo permite efetivamente reduzir o risco que ocorre como resultado de uma série de transações não rentáveis. O tamanho do lote é obrigatoriamente verificado para o tamanho de lote mínimo permitido no final da função porque Os cálculos feitos anteriormente podem resultar no lote 0: O especialista é principalmente destinado a trabalhar com período diário, e no modo de teste - para fazer a preços fechados. Vai trocar apenas na abertura de uma nova barra, é por isso que os modos de cada modelo de carrapato não são necessários. Os resultados dos testes são representados no relatório. Atualmente, estou estudando como codificar o MQL4, embora não seja um programador. Meu objetivo é construir um EA simples baseado no crossover de 5 e 8 configurações de EMA. Crossover para o upside abre posições de compra, enquanto para a desvantagem fecha as posições de compra e abre vender posições automaticamente. Deve ser capaz de abrir pelo menos 10 posições simultaneamente. Tome lucro, Stop loss, eo número de posições será ajustável. Se alguém tiver experiência com EAs e tiver tempo para compartilhar seu conhecimento, por favor, sinta-se livre para ajudar a criar este EA, adicionando um post ou mensagens privadas me. Ninguém tem tempo para segurar as mãos. Heres o livro e algum exemplo. Bom Reading. Simple Expert Advisor Problema 29. Criar um Expert Advisor de negociação. Argumentos Preliminares Antes de começar a programar um Consultor Especialista em 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 no futuro, ele deve ser criado de acordo com um esquema bem-pensado e fácil de entender (é especialmente importante se um programa será melhorado por outro programador). O programa mais conveniente é aquele que consiste em blocos funcionais, cada um dos quais é responsável pela sua parte dos cálculos. Para criar um algoritmo de negociação Expert Advisor, permite analisar o que um programa operacional deve fazer. Um dos dados mais importantes na formação de ordens comerciais é a informação sobre ordens que já existem em um terminal cliente. Algumas das estratégias de negociação permitem apenas uma ordem unidirecional. Geralmente, se uma estratégia de negociação permitir, várias ordens podem ser abertas em um terminal ao mesmo tempo, embora seu número 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 de comércio é feita em um programa, é necessário saber o que as ordens de negociação já foram abertos ou colocados. Primeiro de tudo, um programa deve conter um bloco de contabilidade de pedidos que está entre os primeiros a ser executado. Durante uma execução de EA, devem ser tomadas decisões comerciais, cuja implementação leva à execução de operações comerciais. Parte de código responsável pela formação de ordens de negociação é melhor escrito em um bloco separado. Um Consultor Especializado 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 não realizar nenhuma ação. Uma EA também deve calcular os preços da ordem, dependendo do desejo de um usuário. As decisões comerciais devem ser tomadas num programa com base em critérios comerciais. O sucesso de todo o programa depende da correcção da detecção de critérios comerciais no programa. Ao calcular os critérios comerciais, um programa pode (e deve) levar 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, o tempo atual, valores de alguns níveis de preços, etc. Por conveniência, a parte do programa responsável pelo cálculo de critérios de negociação deve ser escrita em separado quadra. Um especialista em negociação deve necessariamente conter blocos de processamento de erros. Analisar os erros que podem ocorrer na execução da operação comercial permite, por um lado, repetir uma solicitação comercial e, por outro lado, informar ao usuário sobre uma possível situação de conflito. Estrutura de um Conselheiro Especialista Simples Abaixo está um esquema estrutural de um Conselheiro Especializado especial construído com base em vários blocos funcionais, em cada bloco uma determinada parte destacada dos cálculos. No estágio de desenvolvimento da EA a seguir, ainda não há código de programa. Ao mesmo tempo, o algoritmo de um programa é, em grande medida, formado. Como o EA construído sobre as bases do esquema oferecido irá operar pode ser facilmente entendido simplesmente olhando o esquema e orientando sobre nomes de blocos e matrizes de relações (controle passando) entre eles. Após o início do programa de 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 será capaz de operar adequadamente. Nesse caso, uma EA deve terminar a operação preliminarmente informando um usuário sobre ela e informando sobre o motivo da rescisão. Se não houver contraindicatons de um caráter geral, o controle é passado ao bloco da contabilidade da ordem. No bloco de ordens contábeis, é detectado o número e qualidade de ordens existentes em um terminal cliente para uma segurança (para a janela da qual o EA está conectado). Neste bloco, os pedidos de outros títulos devem ser eliminados. 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 existem realmente várias ordens, esse fato também deve ser conhecido. A tarefa do bloco de contabilidade de ordens (neste esquema) é definir se a situação de negociação atual 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 próximo bloco para continuar a operação EAs se não, a operação EAs deve ser encerrado e este fato deve ser relatado a um usuário. Se não houver ordens no terminal ou se o número e a qualidade das ordens existentes corresponderem ao esperado, o controle será passado para o bloco de critérios de negociação definidor. 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. Mais controle é passado para o bloco de ordens de fechamento. É fácil entender por que no esquema oferecido o bloco de ordens de fechamento é executado antes do bloco de ordens de abertura. É sempre mais razoável processar as primeiras encomendas existentes (fechar ou modificar) e só depois disso abrir novas encomendas. Geralmente, é correto ser guiado pelo desejo de ter o menor número possível de encomendas. Durante a execução deste bloco, todos os pedidos, para os quais o critério de fechamento foi ativado, devem ser fechados. Depois que todas as ordens necessárias foram fechadas, o controle é passado para um bloco de cálculo de tamanho de novos pedidos. Há um monte de algoritmos para calcular um volume de ordem. O mais simples deles é usar um tamanho de lote constante e fixo. É conveniente usar esse algoritmo em um programa para testar estratégias. 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 do mesmo. 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 abertura de novos pedidos é definido, o controle é passado para o bloco 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 um bloco de análise de erros em um Expert Advisor. 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 do cliente não for crucial, uma mais tentativa é feita para executar uma operação comercial. Se um erro crucial é retornado (por exemplo, uma conta está bloqueada), um EA deve encerrar sua operação. Lembre-se, em MQL4 não há possibilidade de programa encerrar uma operação EAs em uma janela de segurança (como distinto de scripts, consulte Funções Especiais). O que pode ser feito de uma forma de programa é o término de start (). Num novo início da função start () num novo tick o valor de uma determinada bandeira variável que proíbe a negociação (neste caso, activado como resultado de um erro crítico) pode ser analisado eo controlo pode ser passado para a terminação da função Operação de função especial, assim, a formação de novo pedido de comércio não é permitido. No esquema oferecido o valor da bandeira é 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 (subida ou descida), ou como um movimento de preços flat-lateral com desvios fracos de uma determinada média. Estas características do mercado são condicionais, porque não há critérios claros, de acordo com qual tendência ou apartamento pode ser identificado. Por exemplo, longos movimentos laterais com fortes desvios que não podem ser traçados nem a um plano nem a uma tendência. Geralmente é assumido que o mercado está principalmente no estado de movimento lateral e tendências costumam ocorrer 15-20 de tempo. Todas as estratégias de negociação também podem ser convencionalmente divididos em dois grupos principais. O primeiro grupo contém estratégias orientadas por planos. A idéia principal de tais estratégias é que depois de um evidente desvio preço deve retornar à posição anterior, thats porque 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ê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. Tais estratégias levam em conta muitos fatores diferentes que caracterizam o mercado como resultado negociação pode ser executado tanto em plano e tendência. Não é difícil implementar a negociação de acordo com essa ou aquela estratégia tecnicamente - MQL4 contém todos os meios necessários para isso. O trabalho principal na criação de uma vez 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 Expert Advisor, ou seja, a que irá abrir ordens na direção do movimento de preços. Então, precisamos encontrar entre os 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 de negociação 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 dois diferentes MA (com períodos de média 11 e 31) em diferentes partes do mercado. As médias com o período médio pequeno (linhas vermelhas) são mais perto de uma carta de preço, twisty e móvel. As médias móveis com maior período de média (linha azul) são mais inertes, têm maior defasagem e estão situadas mais distantes dos preços de mercado. Vamos prestar atenção aos lugares onde MAs com diferentes períodos de média cruz e tentar decidir, se o fato de MA cruzamento pode ser usado como um critério de leitura. FIG. 111. Cruzamento de MA (11) e MA (31) quando a direção de movimento de preço muda. Na Fig. 111 nós vemos uma parte do mercado onde as ordens de abertura no sentido da movimentação do preço no cruzamento do miliampère são justificadas. 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çar MA cruzamento indica a mudança de direção movimento de preço. Se abrirmos uma ordem de compra no ponto A e fecharmos em B, obteremos lucro proporcional à diferença de preços A e B. FIG. 112. Cruzamento de MA (11) e MA (31) quando a direção de movimento de preço muda. Ao mesmo tempo, existem outros momentos no mercado quando a MA atravessa, mas isso não leva a uma subida ou queda de preços considerável (Fig. 112). As ordens abertas na passagem MA nesses momentos levarão a perdas. Se Sell for 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 que podem ser caracterizadas como tendência e plana. Em flat muitas vezes MA cruzamento é um evento regular que interfere com qualquer tendência estratégia. Numerosos sinais falsos, como regra, levam a perdas. É por isso que este sign-crossing de MAs com período de média diferente - pode ser usado para construir 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 especializado) teremos de recusar usar este sinal. Usaremos outro sinal. Analisando visualmente o caráter de mudanças de preços no mercado, podemos ver que uma subida ou queda de preço de uma direção longa aparece frequentemente como resultado de um movimento forte curto. 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. FIG. 113 mostra o período de mercado em que um movimento forte resultou na continuação da mudança de preço na mesma direção. Como o movimento de quota 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, isto é, numerosos sinais falsos não aparecem. 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 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, provavelmente a ordem será rentável quando um preço atingir um valor de ordem de parada predefinido. Vamos usar esse valor como critério de negociação no nosso Expert Advisor. Número de Pedidos Neste exemplo, analisamos um Consultor Especialista que admite a presença de apenas uma ordem de mercado, as ordens pendentes não são fornecidas. Tal abordagem é justificada não apenas neste exemplo, mas pode ser usada como base para qualquer estratégia. Ordens pendentes geralmente são usadas quando um desenvolvedor tem um critério bastante confiável para prever a mudança futura de preços com alta probabilidade. Se não houver tal critério, não há necessidade de usar ordens pendentes. A situação em que várias ordens opostas para uma segurança estão abertas também não pode ser considerada 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. Relação de Critérios de Negociação Desta posição torna-se claro que relações são possíveis entre os critérios de negociação. 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 fechamento de ordens de mercado) ocorrem no sentido horário nas seguintes figuras. FIG. 114. Ordem de abertura e fechamento dos critérios de correlação (a e b - correta, c - incorreta). A variante mais popular de um critério de negociação corretamente formado é a variante a. Depois de ser aberto uma compra de ordem de mercado é realizada até o momento em que critério que exige o seu encerramento aciona. Depois disso, ocorre uma pausa quando nenhuma ordem é aberta. Além disso, uma ordem de mercado Sell 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 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 aberta se houver uma ordem de mercado aberto na direção contrária. Correlações de critérios semelhantes estão 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árias ordens abertas no terminal ao mesmo tempo em uma segurança. A variante de correlação de critérios está incorreta. De acordo com esta variante abertura de uma ordem de mercado é permitida quando 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 fortes movimentos de preços. Em tais casos, uma ordem oposta pode ser aberta do mesmo valor ou menor do que a já existente e então fechada quando a correção é excedida. Tal tática permite não interferir com o quotmainquot ordem aberta na direção da tendência. Em geral, também são possíveis várias ordens de um sentido. Isso pode ser justificado quando uma ordem aberta anterior é protegida por uma ordem Stop e o critério apontando para a evolução dos preços no mesmo sentido desencadeado novamente. No entanto, ao criar tal estratégia, um desenvolvedor deve estar plenamente ciente de que, em caso de uma mudança brusca de movimento de preço, 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, utilizamos 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 após um critério de abertura de uma ordem em giros de sentido oposto (aqui critério de fechamento de Compra coincide com o de abertura de Venda e vice-versa). Tamanho de ordens abertas Em qualquer estratégia de negociação tamanhos de ordem deve ser razoavelmente limitada. 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. Além disso, se o balanço mudar, um usuário pode 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 imprevisível do mercado, mas o lucro em caso de sucesso não será tão grande. Se o tamanho da ordem é 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% do saldo ou margem livre (se uma estratégia permitir apenas uma ordem, saldo e margem livre abertos no momento antes da abertura da ordem será igual). Neste exemplo, ambas as variantes são implementadas. Um usuário pode escolher indicar diretamente valores das ordens ou ajustar o valor na porcentagem da margem livre. Detalhes de programação Uma tendência simples Expert Advisor tradingexpert. mq4 construído com base em argumentos anteriores pode se parecer com isso: Descrevendo Variáveis ​​Um critério mais na estimação do programa é a sua legibilidade. Um programa é considerado corretamente escrito, se ele pode ser facilmente lido por outros programadores, é por isso que todas as principais partes do programa e principais momentos caracterizando a estratégia deve ser comentado. É também por isso que é recomendável 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 da primeira utilização (ver Tipos de Variáveis), por isso são declaradas 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 enfrenta dificuldades em entender 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. Bloco de processamento preliminar Neste exemplo, o pré-processamento consiste em duas partes (bloco 3-4). O programa termina a operação se não houver barras suficientes em uma janela de segurança, em tal caso é impossível detectar corretamente (no bloco 5-6) os 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, false é atribuído a esta variável e start () termina a sua 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 eo motivo do erro crítico deve ser detectado (se necessário, um centro de negociação deve ser contactado). Depois que a situação é resolvida, o programa pode ser iniciado mais uma vez, isto é, 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 pedidos (bloco 4-5) é definir as características de uma ordem aberta, se houver. No loop que passa por ordens para todo o mercado existente e as encomendas pendentes são verificadas, nomeadamente a partir da primeira (int i1) para a última (iampltOrdersTotal ()). Em cada iteração de ciclo, a ordem seguinte é selecionada pela função OrderSelect (). A seleção é feita a partir de uma fonte de pedidos abertos e pendentes (SELECTBYPOS). Se a seleção é executada com êxito (ou seja, há mais uma ordem no terminal), ainda 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 é mercado ou pendente Ele também deve ser levado em conta na contagem de 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 de que a EA é anexado, é analisado mais a fundo. Se OrderType () retorna valor mais de 1 (consulte Tipos de Trades), a ordem selecionada é uma pendente. Mas neste Expert Advisor o gerenciamento de pedidos pendentes não é fornecido. Isso significa que a execução de start () deve ser encerrada, porque ocorreu uma situação de conflito. Em tal caso depois de uma mensagem sobre a execução da operação start (), a execuçã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 para um título é calculado e analisado. Para a primeira dessas ordens são definidas todas as características necessárias. Se na próxima iteração o contador de ordens (variável 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 start () é 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. Neste último caso, algumas variáveis ​​ajustadas 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 de 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 ao touro se o valor atual do MA com período menor for maior que o valor do MA com período maior ea 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 ea diferença é também maior do que um determinado valor crítico. Aos valores de início de 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. Variáveis ​​OpnB e OpnS indicam o critério de disparo para abertura de ordens de compra e venda, variáveis ​​Cls e ClsS - para fechamento. Por exemplo, se um critério para abrir o Buy não for acionado, o valor de OpnB permanecerá falso (definido na inicialização da variável) se ele tiver disparado, o OpnB obtém o valor true. Neste caso o critério de fechamento Sell coincide com o de abertura de compra, critério de abertura Sell coincide com o de fechamento de 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. Encerramento Ordens Foi escrito anteriormente que este Expert Advisor destina-se a ser operado apenas com uma ordem de mercado aberta para uma segurança, para qual janela a EA está anexada. No momento em que o controle no programa é passado para o bloco de fechamento da 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 no bloco de fechamento de pedidos é escrito para que apenas uma ordem possa ser fechada 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. Embora seja usado aqui para o propósito de que, no caso de uma falha operação comercial poderia ser repetido mais uma vez. No cabeçalho do primeiro operador se for calculada a condição para fechar uma ordem de compra (as ordens de venda são fechadas de forma análoga). Se o tipo de uma ordem aberta anterior corresponder a Compra (consulte Tipos de Operações) eo sinal para fechar Compra for relevante, o controle será passado para o corpo do operador se for formado um pedido de fechamento. 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 na Criação de Negociações). Se uma operação comercial é executada com êxito, depois de uma mensagem sobre o encerramento da ordem é mostrada a corrente enquanto a iteração é interrompida e a execução do bloco de fechamento da ordem é mais. Mas se a operação falhar, a função definida pelo usuário para erros de processamento FunError () é chamada (bloco 10-11). Processando Erros Como um parâmetro passado em FunError () o último código de erro calculado por GetLastError () é usado. Dependendo do código de erro, FunError () retorna 1 se o erro não for crítico 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 uma execução do programa pode ser continuada (por exemplo, um erro comum) e aqueles, após o qual a execução de quaisquer operações comerciais deve ser interrompido (por exemplo, a conta bloqueada). Se após uma operação de troca 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 atual start () é interrompida. No próximo tick start () será iniciado pelo terminal do cliente novamente e se as condições para fechamento da ordem forem preservadas, outra tentativa de fechar a ordem será feita. Se durante o processamento de erros se verificar que a execução adicional do programa é sem sentido (por exemplo, o programa opera numa versão de terminal antigo) durante o próximo início a execução da função especial start () será terminada no bloco de processamento preliminar quando Analisando o valor da variável Trabalho. Cálculo da 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 numa soma igual a uma determinada percentagem (definida por um utilizador) de uma margem livre. No início do bloco de definição da quantidade de lotes para novos pedidos (bloco 7-8) são calculados os valores necessários de algumas variáveis ​​- quantidade mínima permitida de lotes e etapa de mudança de lote estabelecida por um corretor, margem livre e preço de Um lote para a segurança. 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, é aceito como a quantidade de lotes Lts quando uma solicitação de negociação para abrir uma ordem é formada. Se 0 é atribuído a Lts, o número de lotes Lts é definido com base na variável Prots (percentagem), margem livre e condições estabelecidas por um corretor. Após Lts é calculado, uma verificação é realizada. Se esse valor for menor que o 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 () é terminada. Ordens de Abertura O bloco de ordens de abertura (bloco 8-9) como o tipo de ordens de abertura é um loop infinito enquanto. No cabeçalho do primeiro operador são calculadas as condições para a abertura de uma ordem de compra: se não houver ordens para a segurança (a variável Total é igual a 0) eo sinal para abrir uma ordem de Compra for relevante (OpnB é verdadeiro), o controle É passado para se o corpo do operador para abrir uma ordem. Nesse caso, após as taxas serem 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 esses parâmetros menores que um corretor permite. Além de um corretor pode alterar a distância mínima permitida a qualquer momento (é um caso freqüentemente em movimentos de mercado forte, por exemplo, antes de lançamento de notícias importantes). É por isso que antes de cada ordem os níveis de parada de abertura devem ser calculados levando em conta os valores definidos por um usuário e o valor mínimo permitido estabelecido por um corretor. Para calcular os níveis de parada, a função definida pelo usuário NewStop () é usada como um parâmetro passado, o valor do nível de parada definido por um usuário é usado. Em NewStop (), primeiro, a distância mínima permitida atual é calculada. Se o valor definido por um usuário corresponder a requisitos de corretores, esse valor será retornado. Se for menor do que o valor permitido, o valor permitido por um corretor é usado. Os preços dos pedidos de paragem são calculados a partir da cotação correspondente a dois lados (ver Requisitos e Limitações na Realização de Negociações). 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 das solicitações de parada são utilizados os valores de cotação de dois lados correspondentes ao tipo de ordem. Se uma operação comercial foi bem sucedida (isto é, um servidor devolveu o número de uma ordem aberta) depois de ser apresentada uma mensagem sobre uma abertura de ordem bem sucedida. Start () é concluída. Se uma ordem não foi aberta eo terminal cliente retornou um erro, o erro é processado de acordo com o algoritmo descrito anteriormente. Algumas peculiaridades do código O código do Analista Especializado é orientado para a implementação de uma determinada estratégia. Observe que algumas linhas de programa contêm variáveis ​​e cálculos que seriam alterados se a estratégia fosse alterada. Por exemplo, de acordo com a estratégia aceita, o Expert Advisor é desenvolvido para funcionar apenas com uma ordem. Isto permitiu utilizar a variável Ticket tanto para a identificação de um número de ordem de fecho (no bloco de fecho 6-7) como para a identificação de um sucesso de uma execução de operação comercial ao abrir uma encomenda (no bloco de abertura 8-9 ). Neste caso, tal solução é aceitável. No entanto, se tomarmos o código analisado como a base para a implementação de outra estratégia (por exemplo, permitir ordens opostas), teremos de introduzir uma ou várias variáveis ​​para poder reconhecer o número de ordens abertas e identificar o sucesso das operações comerciais. Em outras modificações de estratégia, teremos que mudar as linhas de programas que contêm parte da lógica contida na estratégia de origem. Nomeadamente no bloco de contabilidade de pedidos, não teremos de encerrar a operação do programa se houver várias ordens abertas para uma segurança. 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. Simple Moving Averages Make Trends Stand Out Moving averages (MA) are one of the most popular and often-used technical indicators. A média móvel é fácil de calcular e, uma vez plotada em um gráfico, é uma poderosa ferramenta visual de tendência-spotting. Você vai ouvir muitas vezes sobre três tipos de média móvel: simples. Exponencial e linear. O melhor lugar para começar é entender o mais básico: a média móvel simples (SMA). Lets take a look at this indicator and how it can help traders follow trends toward greater profits. (For more on moving averages, see our Forex Walkthrough .) Trendlines There can be no complete understanding of moving averages without an understanding of trends. Uma tendência é simplesmente um preço que continua a se mover em uma determinada direção. Há apenas três tendências reais que uma segurança pode seguir: Uma tendência de alta. or bullish trend, means that the price is moving higher. Uma tendência de baixa. Ou tendência de baixa, significa que o preço está se movendo mais baixo. Uma tendência lateral. Onde o preço está se movendo de lado. A coisa importante a lembrar sobre as tendências é que os preços raramente se movem em linha reta. Portanto, linhas de média móvel são usadas para ajudar um comerciante a identificar mais facilmente a direção da tendência. Construção de média móvel A definição de texto de uma média móvel é um preço médio para uma segurança usando um período de tempo especificado. Vamos tomar a média móvel muito popular de 50 dias como um exemplo. Uma média móvel de 50 dias é calculada tomando os preços de fechamento dos últimos 50 dias de qualquer título e adicionando-os juntos. O resultado do cálculo de adição é então dividido pelo número de períodos, neste caso 50. Para continuar a calcular a média móvel numa base diária, substitua o número mais antigo pelo preço de fecho mais recente e faça a mesma matemática. Não importa quanto tempo ou curto de uma média móvel você está olhando para plotar, os cálculos básicos permanecem os mesmos. A alteração será no número de preços de fechamento que você usa. So, for example, a 200-day moving average is the closing price for 200 days summed together and then divided by 200. You will see all kinds of moving averages, from two-day moving averages to 250-day moving averages. It is important to remember that you must have a certain number of closing prices to calculate the moving average. Se uma garantia é nova ou apenas um mês de idade, você não será capaz de fazer uma média móvel de 50 dias, porque você não terá um número suficiente de pontos de dados. Além disso, é importante observar que nós escolhemos usar os preços de fechamento nos cálculos, mas as médias móveis podem ser calculadas usando preços mensais, preços semanais, preços de abertura ou mesmo preços intradiários. Figura 1: Uma média móvel simples no Google Inc. A Figura 1 é um exemplo de uma média móvel simples em um gráfico de ações do Google Inc. (Nasdaq: GOOG). A linha azul representa uma média móvel de 50 dias. In the example above, you can see that the trend has been moving lower since late 2007. The price of Google shares fell below the 50-day moving average in January of 2008 and continued downward. Quando o preço cruza abaixo de uma média móvel, pode ser usado como um simples sinal de negociação. Um movimento abaixo da média móvel (como mostrado acima) sugere que os ursos estão no controle da ação do preço e que o recurso mover-se-á provavelmente mais baixo. Por outro lado, uma cruz acima de uma média móvel sugere que os touros estão no controle e que o preço pode estar se preparando para fazer um movimento maior. (Read more in Track Stock Prices With Trendlines .) Other Ways to Use Moving Averages Moving averages are used by many traders to not only identify a current trend but also as an entry and exit strategy. Uma das estratégias mais simples baseia-se na passagem de duas ou mais médias móveis. O sinal básico é dado quando a média de curto prazo cruza acima ou abaixo da média móvel de longo prazo. Duas ou mais médias móveis permitem que você veja uma tendência a longo prazo em comparação com uma média móvel de curto prazo é também um método fácil para determinar se a tendência está ganhando força ou se está prestes a inverter. Figura 2: Uma média móvel de longo prazo e de curto prazo no Google Inc. A Figura 2 usa duas médias móveis, uma de longo prazo (50 dias, mostrada pelo Linha azul) eo outro prazo mais curto (15 dias, indicado pela linha vermelha). Este é o mesmo gráfico do Google mostrado na Figura 1, mas com a adição das duas médias móveis para ilustrar a diferença entre os dois comprimentos. Você notará que a média móvel de 50 dias é mais lenta para se ajustar às mudanças de preços. Porque usa mais pontos de dados em seu cálculo. Por outro lado, a média móvel de 15 dias é rápida para responder às mudanças de preços, porque cada valor tem uma maior ponderação no cálculo devido ao horizonte de tempo relativamente curto. Neste caso, usando uma estratégia cruzada, você iria observar a média de 15 dias para cruzar abaixo da média móvel de 50 dias como uma entrada para uma posição curta. Figura 3: A three-month O acima é um gráfico de três meses do United States Oil (AMEX: USO) com duas médias móveis simples. A linha vermelha é a média móvel mais curta, de 15 dias, enquanto a linha azul representa a média móvel mais longa de 50 dias. A maioria dos comerciantes usará o cruzamento da média móvel de curto prazo acima da média móvel de longo prazo para iniciar uma posição longa e identificar o início de uma tendência de alta. (Saiba mais sobre como aplicar esta estratégia em Trading The MACD Divergence.) O suporte é estabelecido quando um preço está tendendo para baixo. Há um ponto no qual a pressão de venda diminui e os compradores estão dispostos a intervir. Em outras palavras, um piso é estabelecido. Resistência acontece quando um preço está tendendo para cima. Lá vem um ponto em que a força de compra diminui e os vendedores pisam dentro. Isto estabeleceria um teto. Em ambos os casos, uma média móvel pode ser capaz de sinalizar um suporte precoce ou nível de resistência. Por exemplo, se uma segurança deriva mais baixo em uma tendência de alta estabelecida, então não seria surpreendente ver o estoque encontrar apoio em uma média móvel de longo prazo de 200 dias. Por outro lado, se o preço estiver tendendo mais baixo, muitos comerciantes verão para o estoque para saltar fora da resistência de médias móveis principais (50-dia, 100-dia, 200-dia SMAs). (Para mais informações sobre como usar suporte e resistência para identificar tendências, leia Trend-Spotting com a linha de acumulação / distribuição.) Conclusão As médias móveis são ferramentas poderosas. Uma média móvel simples é fácil de calcular, o que permite que ele seja empregado com bastante rapidez e facilidade. A maior média móvel é a sua capacidade de ajudar um comerciante identificar uma tendência atual ou identificar uma possível inversão de tendência. As médias móveis também podem identificar um nível de suporte ou resistência para a segurança, ou agir como um simples sinal de entrada ou saída. How you choose to use moving averages is entirely up to you. Moving Average - MA BREAKING DOWN Moving Average - MA As an SMA example, consider a security with the following closing prices over 15 days: Week 1 (5 days) 20, 22, 24, 25, 23 Week 2 (5 days) 26, 28, 26, 29, 27 Week 3 (5 days) 28, 30, 27, 29, 28 A 10-day MA would average out the closing prices for the first 10 days as the first data point. O ponto de dados seguinte iria cair o preço mais antigo, adicionar o preço no dia 11 e tomar a média, e assim por diante, como mostrado abaixo. Conforme mencionado anteriormente, MAs atraso ação preço atual, porque eles são baseados em preços passados ​​quanto maior for o período de tempo para o MA, maior o atraso. Assim, um MA de 200 dias terá um grau muito maior de atraso do que um MA de 20 dias porque contém preços nos últimos 200 dias. A duração da MA a ser utilizada depende dos objetivos de negociação, com MAs mais curtos usados ​​para negociação de curto prazo e MAs de longo prazo mais adequados para investidores de longo prazo. O MA de 200 dias é amplamente seguido por investidores e comerciantes, com quebras acima e abaixo desta média móvel considerada como sinais comerciais importantes. MAs também transmitir sinais comerciais importantes por conta própria, ou quando duas médias se cruzam. Um aumento MA indica que a segurança está em uma tendência de alta. Enquanto um declínio MA indica que ele está em uma tendência de baixa. Da mesma forma, o impulso ascendente é confirmado com um crossover de alta. Que ocorre quando um MA de curto prazo cruza acima de um MA de longo prazo. Momento descendente é confirmado com um crossover de baixa, que ocorre quando um MA de curto prazo cruza abaixo de um MA de longo prazo.

No comments:

Post a Comment