Tuesday, 11 July 2017

Exponencial Em Movimento Média C


Estou desenvolvendo um pequeno robô comercial como um exercício. Ele recebe os preços das ações dia a dia (representado como iterações). É o que é a minha classe comercial: como você pode ver nos meus dois últimos atributos, eu desejo implementar uma Média móvel exponencial como parte de um Algoritmo de Tendência. Mas eu acho que não entendi bem como implementá-lo heres minha função calcema que simplesmente calcula o EMA: Mas quando meus valores de estoque (passados ​​em um arquivo) são como: De modo a garantir que meu EMA faça sentido e bem. Não é onde eu errei na operação. Além disso, qual o valor que devo dar ao último. Se é a primeira vez que eu chamo calcema. A operação está errada, como você percebeu. Disclaimer Eu obtive este algoritmo da wikipedia. E, como tal, pode não ser preciso. Aqui (página 3) pode ser melhor, mas não posso julgar, nunca usei esses algoritmos e não tenho idéia do que estou falando :) c (EMA) y (EMA) a (c (preço) - y (EMA )) C (EMA) é atual EMA y (EMA) é anterior EMA a é algum valor aleatório entre 0 e 1 c (preço) é preço atual Mas você fez quase a mesma coisa: c (EMA) (c (preço) - Y (EMA) b) y (EMA) Eu não sei por que você fez 2 diasInTrading 1. mas isso nem sempre será um valor entre 0 e 1 (na verdade, talvez seja a maior parte do tempo 0, porque todos são todos ). Você coloca um parêntese no lugar errado (depois de b. E não após y (EMA)). Então, a operação agora será assim: lastEMA 0.5 (currentStock - lastEMA) Para o primeiro último. De acordo com a Wikipedia: S 1 é indefinido. S 1 pode ser inicializado de várias maneiras diferentes, geralmente, estabelecendo o primeiro elemento S 11 na lista, embora existam outras técnicas, como a configuração de S 1 para uma média das primeiras 4 ou 5 observações. A importância do efeito de inicialização S1 na média móvel resultante depende de valores menores tornam a escolha de S 1 relativamente mais importante do que valores maiores, uma vez que um maior descontos observações mais velhas mais rápido. Respondeu 18 de maio 16 às 13: 30 Eu sei que isso é viável com o aumento de acordo com: Mas eu realmente gostaria de evitar o uso de impulso. Eu mencionei e não encontrei nenhum exemplo adequado ou legível. Basicamente eu quero acompanhar a média móvel de um fluxo contínuo de um fluxo de números de ponto flutuante usando os 1000 números mais recentes como amostra de dados. Qual é a maneira mais fácil de conseguir isso, experimentei usar uma matriz circular, uma média móvel exponencial e uma média móvel mais simples e descobriu que os resultados da matriz circular correspondiam melhor às minhas necessidades. 12 de junho 12 às 4:38 Se suas necessidades são simples, você pode tentar usar uma média móvel exponencial. Simplificando, você faz uma variável de acumulador e, conforme seu código examina cada amostra, o código atualiza o acumulador com o novo valor. Você escolhe um alfa constante que está entre 0 e 1, e calcula isso: Você só precisa encontrar um valor de alfa onde o efeito de uma determinada amostra dura apenas cerca de 1000 amostras. Hmmm, na verdade, não tenho certeza de que isso é adequado para você, agora que eu coloquei aqui. O problema é que 1000 é uma janela bastante longa para uma média móvel exponencial. Não tenho certeza se houver um alfa que espalhe a média nos últimos 1000 números, sem fluxo inferior no cálculo do ponto flutuante. Mas se você quisesse uma média menor, como 30 números ou mais, esta é uma maneira muito fácil e rápida de fazê-lo. Respondeu 12 de junho 12 às 4:44 1 na sua postagem. A média móvel exponencial pode permitir que o alfa seja variável. Então isso permite que ele seja usado para calcular médias base de tempo (por exemplo, bytes por segundo). Se o tempo decorrido desde a última atualização do acumulador for superior a 1 segundo, você deixa alfa ser 1.0. Caso contrário, você pode deixar o alfa ser (usecs desde a última atualização1000000). Ndash jxh 12 de junho 12 às 6:21 Basicamente eu quero acompanhar a média móvel de um fluxo contínuo de um fluxo de números de ponto flutuante usando os 1000 números mais recentes como amostra de dados. Observe que as atualizações abaixo atualizam o total como elementos como adicionados substituídos, evitando a passagem O (N) dispendiosa para calcular a soma - necessária para a demanda média. Total é feito um parâmetro diferente de T para suportar, e. Usando um longo tempo quando totalizando 1000 long s, um int para char s, ou um duplo para float total s. Isso é um pouco falho em que numsamples poderia ultrapassar o INTMAX - se você se importar, você poderia usar um sinal não assinado por muito tempo. Ou use um membro adicional de dados do bool para gravar quando o recipiente é preenchido pela primeira vez ao andar de bicicleta numsamples em torno da matriz (o melhor que renomeou algo inócuo como pos). Respondeu 12 de junho 12 às 5:19 um assume que quotvoid operator (T sample) quot é realmente quotvoid operatorltlt (T sample) quot. Ndash oPless Jun 8 14 às 11:52 oPless ahhh. Bem visto. Na verdade, eu quis dizer que ele seria um operador vazio () (amostra T), mas é claro que você poderia usar qualquer notação que você gostasse. Vou consertar, obrigado. Ndash Tony D 8 de junho 14 às 14: 27 Média móvel expressiva - EMA BREAKING Down Média móvel exponencial - EMA As EMA de 12 e 26 dias são as médias de curto prazo mais populares e são usadas para criar indicadores como a convergência média móvel Divergência (MACD) e o oscilador de preço percentual (PPO). Em geral, as EMAs de 50 e 200 dias são usadas como sinais de tendências de longo prazo. Os comerciantes que empregam análises técnicas consideram as médias móveis muito úteis e perspicazes quando aplicadas corretamente, mas criam havoc quando usadas de forma incorreta ou são mal interpretadas. Todas as médias móveis comumente utilizadas na análise técnica são, por sua própria natureza, indicadores de atraso. Consequentemente, as conclusões extraídas da aplicação de uma média móvel a um gráfico de mercado específico devem ser confirmar um movimento de mercado ou indicar sua força. Muitas vezes, no momento em que uma linha de indicador de média móvel fez uma mudança para refletir um movimento significativo no mercado, o ponto ótimo de entrada no mercado já passou. Um EMA serve para aliviar esse dilema até certo ponto. Como o cálculo EMA coloca mais peso sobre os dados mais recentes, ele abraça a ação do preço um pouco mais apertado e, portanto, reage mais rápido. Isso é desejável quando um EMA é usado para derivar um sinal de entrada comercial. Interpretando o EMA Como todos os indicadores de média móvel, eles são muito mais adequados para mercados de tendências. Quando o mercado está em uma tendência de alta forte e sustentada. A linha indicadora EMA também mostrará uma tendência de alta e vice-versa para uma tendência descendente. Um comerciante vigilante não só prestará atenção na direção da linha EMA, mas também a relação da taxa de mudança de uma barra para a próxima. Por exemplo, à medida que a ação do preço de uma forte tendência de alta começa a achatar e reverter, a taxa de troca de EMAs de uma barra para a próxima começará a diminuir até que a linha do indicador aplique e a taxa de mudança seja zero. Devido ao efeito de atraso, neste ponto, ou mesmo algumas barras anteriores, a ação de preço já deveria ter sido revertida. Portanto, segue que a observação de uma diminuição consistente na taxa de mudança da EMA poderia ser usada como um indicador que poderia contrariar ainda mais o dilema causado pelo efeito de atraso das médias móveis. Os usos comuns das EMA EMAs são comumente usados ​​em conjunto com outros indicadores para confirmar movimentos significativos no mercado e avaliar sua validade. Para os comerciantes que comercializam mercados intradía e de rápido movimento, o EMA é mais aplicável. Muitas vezes, os comerciantes usam EMAs para determinar um viés de negociação. Por exemplo, se um EMA em um gráfico diário mostra uma forte tendência ascendente, uma estratégia de comerciantes intradía pode ser trocar apenas do lado longo em um gráfico intradía.

No comments:

Post a Comment