Sunday, 11 March 2018

Simple moving average source code


MetaTrader 4 - Peritos Média Móvel - expert para MetaTrader 4 O especialista em Média Móvel para formar sinais de negociação usa uma média móvel. Abertura e fechamento de posições são realizadas quando a média móvel atende ao preço na barra recém-formada (índice de barra igual a 1). O tamanho do lote será otimizado de acordo com um algoritmo especial. O consultor especialista analisa a concordância da média móvel e do gráfico de preços de mercado. A verificação é executada pela função CheckForOpen (). Se a média móvel atender a barra de tal forma que a primeira seja maior que o preço Aberto, mas menor do que o preço Fechado, a posição COMPRAR será aberta. Se a média móvel atender a barra de tal forma que a primeira seja menor do que o preço Aberto, mas maior que o preço de fechamento, a posição VENDER será aberta. O Money Management usado no especialista é muito simples, mas efetivo: o controle sobre cada volume de posição é executado dependendo dos resultados das transações anteriores. Este algoritmo é implementado pela função LotsOptimized (). O tamanho básico do lote é calculado com base no risco máximo permitido: O parâmetro MaximumRisk exibe a porcentagem básica de risco para cada transação. Geralmente possui um valor entre 0,01 (1) e 1 (100). Por exemplo, se a margem livre (AccountFreeMargin) for igual a 20.500 e as regras de gerenciamento de capital prescrevem para usar o risco de 2, o tamanho básico do lote fará com que 20500 seja 0,02 / 1.000 0,41. É muito importante controlar a precisão do tamanho do lote e normalizar o resultado com os valores permitidos. Normalmente, lotes fracionários com 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 de 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 comercial, ou seja, negociar com o reinvestimento. Este é o mecanismo básico com gerenciamento de capital obrigatório para aumentar a efetividade do negócio. DecreaseFactor é a medida em que o tamanho do lote será reduzido após negociações não lucrativas. Valores normais são 2,3,4,5. Se as transações anteriores não forem lucrativas, os volumes subseqüentes diminuirão por um fator DecreaseFactor para aguardar o período não lucrativo. Esse é 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 para obter o máximo lucro. Após a primeira transação não lucrativa, o especialista reduzirá a velocidade até que uma nova transação positiva seja feita. O algoritmo permite desabilitar a redução de velocidade, pois, para isso, é 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 com base nisso: Assim, o algoritmo permite efetivamente reduzir o risco que ocorre como resultado de uma série de transações não lucrativas. O tamanho do lote é obrigatoriamente verificado pelo tamanho mínimo permitido do lote no final da função, porque os cálculos feitos anteriormente podem resultar no lote 0: O especialista destina-se principalmente a trabalhar com período diário e no modo de teste - para fazer a preços reduzidos. Ele será negociado apenas na abertura de uma nova barra, é por isso que os modos de modelagem de cada tick não são necessários. Os resultados dos testes são representados no relatório. Média móvel O indicador técnico de média móvel mostra o valor médio do preço do instrumento para um determinado período de tempo. Quando se calcula a média móvel, calcula-se a média do preço do instrumento para este período de tempo. À medida que o preço muda, sua média móvel aumenta ou diminui. Existem quatro tipos diferentes de médias móveis: Simples (também conhecida como Aritmética), Exponencial. Suavizado e Ponderado. A Média móvel pode ser calculada para qualquer conjunto de dados sequenciais, incluindo preços de abertura e fechamento, preços mais altos e mais baixos, volume de negociação ou quaisquer outros indicadores. É frequentemente o caso quando médias móveis duplas são usadas. A única coisa em que as médias móveis de tipos diferentes divergem consideravelmente umas das outras é quando os coeficientes de ponderação, que são atribuídos aos dados mais recentes, são diferentes. No caso estamos falando de média móvel simples. Todos os preços do período de tempo em questão são iguais em valor. Média móvel exponencial e Média móvel ponderada linear agregam mais valor aos preços mais recentes. A maneira mais comum de interpretar a média móvel dos preços é comparar sua dinâmica com a ação do preço. Quando o preço do instrumento sobe acima de sua média móvel, um sinal de compra aparece, se o preço cair abaixo de sua média móvel, o que temos é um sinal de venda. Este sistema de negociação, que é baseado na média móvel, não é projetado para fornecer entrada no mercado em seu ponto mais baixo, e sua saída no pico. Permite agir de acordo com a seguinte tendência: comprar logo após os preços chegarem ao fundo, e vender logo após os preços terem atingido seu pico. Médias móveis também podem ser aplicadas a indicadores. É aí que a interpretação das médias móveis dos indicadores é semelhante à interpretação das médias móveis dos preços: se o indicador subir acima da sua média móvel, isso significa que o movimento do indicador ascendente provavelmente continuará: se o indicador cair abaixo de sua média móvel, significa que é provável que continue indo para baixo. Aqui estão os tipos de médias móveis no gráfico: Média Móvel Simples (SMA) Média Móvel Exponencial (EMA) Média Móvel Suavizada (SMMA) Média Móvel Ponderada Linear (LWMA) Você pode testar os sinais de negociação deste indicador criando um Expert Advisor no Assistente MQL5. Média Móvel Simples de Cálculo (SMA) Simples, em outras palavras, a média móvel aritmética é calculada somando-se os preços de fechamento do instrumento em um certo número de períodos únicos (por exemplo, 12 horas). Este valor é então dividido pelo número de tais períodos. SMA SUM (FECHAR (i), N) / N SUM SUM FECHAR (i) preço de fechamento do período atual N número de períodos de cálculo. Média móvel exponencial (EMA) A média móvel suavizada exponencialmente é calculada pela adição de uma determinada parcela do preço de fechamento atual ao valor anterior da média móvel. Com médias móveis exponencialmente suavizadas, os preços de fechamento mais recentes são mais valiosos. A média móvel exponencial percentual P será semelhante a: EMA (FECHAR (i) P) (EMA (i - 1) (1 - P)) FECHAR (i) preço de fechamento do período atual EMA (i - 1) valor da Média Móvel de um período anterior P a porcentagem de uso do valor do preço. Média Móvel Suavizada (SMMA) O primeiro valor dessa média móvel suavizada é calculado como a média móvel simples (SMA): SUM1 SUM (FECHAR (i), N) A segunda média móvel é calculada de acordo com esta fórmula: SMMA (i) (SMMA1 (N-1) FECHADO (i)) / N As médias móveis sucessivas são calculadas de acordo com a fórmula abaixo: PREVSUM SMMA (i - 1) N SMMA (i) (PREVSUM - SMMA (i - 1) FECHAR (i) ) / N SUM soma SUM1 soma total dos preços de fechamento para N períodos é contada a partir da barra anterior PREVSUM soma suavizada da barra anterior SMMA (i-1) média móvel suavizada da barra anterior SMMA (i) média móvel suavizada da barra anterior barra atual (exceto a primeira) FECHAR (i) preço de fechamento atual N período de suavização. Após as conversões aritméticas, a fórmula pode ser simplificada: SMMA (i) (SMMA (i - 1) (N - 1) FECHADO (i)) / N Média Móvel Ponderada Linear (LWMA) No caso de média móvel ponderada, os dados mais recentes é mais valioso do que dados mais antigos. A média móvel ponderada é calculada multiplicando cada um dos preços de fechamento dentro da série considerada, por um certo coeficiente de ponderação: LWMA SUM (FECHAR (i) i, N) / SUM (i, N) SUM soma FECHAR (i) fechamento atual preço SUM (i, N) soma total dos coeficientes de peso N período de suavização. É possível implementar uma média móvel em C sem a necessidade de uma janela de amostras Ive descobriu que eu posso otimizar um bit, escolhendo um tamanho de janela que é um poder de dois para permitir a mudança de bits em vez de dividir, mas não precisar de um buffer seria bom. Existe uma maneira de expressar um novo resultado de média móvel apenas como uma função do resultado antigo e da nova amostra Definir um exemplo de média móvel, em uma janela de 4 amostras a ser: Adicionar nova amostra e: Uma média móvel pode ser implementada recursivamente , mas para um cálculo exato da média móvel, você deve se lembrar da amostra de entrada mais antiga na soma (ou seja, a no seu exemplo). Para um comprimento N média móvel você calcula: onde yn é o sinal de saída e xn é o sinal de entrada. Eq. (1) pode ser escrito recursivamente como Então você sempre precisa se lembrar da amostra xn-N para calcular (2). Como apontado por Conrad Turner, você pode usar uma janela exponencial (infinitamente longa), que permite calcular a saída apenas da saída anterior e da entrada atual: mas não é uma média móvel padrão (não ponderada), mas uma exponencial média móvel ponderada, onde as amostras no passado ganham um peso menor, mas (pelo menos em teoria) você nunca esquece nada (os pesos ficam menores e menores para amostras no passado). Eu implementei uma média móvel sem memória de item individual para um programa de rastreamento GPS que eu escrevi. Eu começo com 1 amostra e divido por 1 para obter a média atual. Em seguida, adiciono outra amostra e divido por 2 para a média atual. Isso continua até eu chegar ao tamanho da média. A cada vez, adiciono a nova amostra, obtenho a média e removo essa média do total. Eu não sou um matemático, mas isso parecia ser uma boa maneira de fazê-lo. Eu imaginei que isso tornaria o estômago de um cara de matemática real, mas, acontece que é uma das formas aceitas de fazê-lo. E isso funciona bem. Basta lembrar que quanto maior o seu comprimento, mais lento ele está seguindo o que você quer seguir. Isso pode não importar a maior parte do tempo, mas ao seguir satélites, se você estiver lento, a trilha pode estar longe da posição real e ficará ruim. Você poderia ter uma lacuna entre os pontos sentados e os pontos finais. Eu escolhi um comprimento de 15 atualizado 6 vezes por minuto para obter suavização adequada e não ficar muito longe da posição sentada real com os pontos de trilha suavizados. respondido 16 nov em 23:03 initialize total 0, count0 (cada vez vendo um novo valor Então uma entrada (scanf), uma soma totalnewValue, um incremento (contagem), uma média de divisão (total / contagem) Essa seria uma média móvel sobre todas as entradas Para calcular a média apenas sobre as últimas 4 entradas, seriam necessárias 4 variáveis ​​de entrada, talvez copiando cada entrada para uma variável de entrada mais antiga e calculando a nova média móvel como soma das 4 variáveis ​​de entrada divididas por 4 ser bom se todas as entradas foram positivas para fazer o cálculo da média respondido 03 de fevereiro de 15 às 04:06 Que realmente irá calcular a média total e NÃO a média móvel. Como a contagem fica maior, o impacto de qualquer nova amostra de entrada torna-se visivelmente pequeno Hilmar Fev 3 15 at 13:53 Sua Resposta 2016 Stack Exchange, Inc

No comments:

Post a Comment