Wednesday 18 October 2017

Cúpula média móvel exponencial


Média móvel exponencial - EMA BREAKING DOWN Média móvel exponencial - EMA As EMAs de 12 e 26 dias são as médias de curto prazo mais populares e são usadas para criar indicadores como a divergência de convergência média móvel (MACD) eo oscilador de preço percentual (PPO). Em geral, as EMA de 50 e 200 dias são usadas como sinais de tendências a longo prazo. Os comerciantes que empregam análises técnicas consideram que as médias móveis são muito úteis e perspicaz quando aplicadas corretamente, mas criam estragos quando usadas incorretamente ou são mal interpretadas. Todas as médias móveis comumente usadas na análise técnica são, por sua própria natureza, indicadores de atraso. Conseqüentemente, as conclusões extraídas da aplicação de uma média móvel a um gráfico de mercado específico devem ser para confirmar um movimento de mercado ou para 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 à 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, como a ação de 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, até este 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 pelo lado longo em um gráfico intradía. Não sou um programador com habilidades. Apenas alguém curioso sobre CUDA e por isso estou fazendo uma pequena leitura. Eu corri um exemplo de usar o Thrust para fazer uma média móvel: o exemplo, como é, corre e principalmente funciona corretamente. No entanto, é trivial no sentido de que ele só faz uma operação média móvel. Como eu diria 352 dessas operações de média móvel em paralelo, todos operando no mesmo fluxo de dados. Na minha mente, o fluxo do programa pode ser: Gerar o amplificador de dados enviá-lo para um núcleo CUDA. (O mesmo que o código existente, mas pense comprimentos de 1000 ou 10000 em vez de 30) Copie-o do núcleo CUDA para todos os outros 351 núcleos CUDA no meu GTX 465 Diga a cada núcleo CUDA qual o número de itens de dados em média. (4. 5. 352. 353. 354) Diga ao dispositivo que execute a média em cada núcleo em paralelo Leia de volta os resultados de cada núcleo Eu percebi que esse código faz com que tudo aconteça, mas como eu faço o impulso para fazer Muitos destes em paralelo Meu interesse aqui é sobre algo como dados de estoque. Se eu estiver olhando os preços GOOG, eu coloquei isso na GPU usando todos os núcleos e deixe-o lá. Então, seja livre para fazer muito processamento sem carregar mais os dados e apenas lendo os resultados de cada núcleo. NOTA: talvez eu não queira usar o GOOG em todos os núcleos. Alguns núcleos podem ser GOOG, outros com algum outro símbolo, mas eu vou chegar lá mais tarde. Estou apenas pensando que eu não quero os dados de estoque na memória global se houver espaço suficiente em cada núcleo. Eu suponho que isso seja bastante direto para o amplificador CUDA que o Thrust perguntou 12 de setembro 12 às 19:39. Meu entendimento é que você está interessado nas duas situações a seguir: você tem uma longa seqüência de itens e você deseja calcular um certo número de médias, por Com base em diferentes números de itens, ou seja, usando diferentes comprimentos para a janela da média móvel. Isto é o que eu entendo da sua pergunta original. Você tem uma série de seqüências, armazenadas consecutivamente na memória, e você deseja compará-las em paralelo com uma janela de média fixa de tamanho 2 RADIUS 1. Isso é o que o código ArrayFire proposto por asm faz - você aceitou. Em vez de usar CUDA Thrust, acho que seria mais fácil escrever seu próprio kernel CUDA para fazer as operações acima. Abaixo, um exemplo totalmente trabalhado que funciona da mesma maneira que o código ArrayFire proposto por asm, cobrindo o caso 2. A modificação para cobrir o caso 1 seria direta. Respondeu 15 de novembro às 15:42 Sua resposta 2017 Stack Exchange, IncPara outra abordagem, você pode truncar a janela da média móvel exponencial e, em seguida, calcular o seu sinal filtrado fazendo uma convolução entre o sinal e a exponencial janela. A convolução pode ser calculada usando a biblioteca FFT CUDA livre (cuFFT) porque, como você pode saber, a convolução pode ser expressa como a multiplicação pontual dos dois sinais no domínio fourier (Este é o nome apropriado do Teorema da Convolução, Que corre com uma complexidade de O (n log (n))). Este tipo de abordagem minimizará o código do kernel CUDA e executará muito rapidamente, mesmo em uma GeForce 570. Especialmente, se você puder fazer todos os seus cálculos em uma única precisão (flutuante). Respondeu 30 de abril 14 às 17:04 Eu proporia manipular a equação de diferença acima conforme indicado abaixo e depois usando primitivas de impulso CUDA. MANIPULAÇÃO DE EQUAÇÃO DE DIFERENÇA - FORMA EXPLÍCITA DA EQUILÍBRIA DE DIFERENÇA Por álgebra simples, você pode encontrar o seguinte: Conseqüentemente, a forma explícita é a seguinte: CUDA THRUST IMPLEMENTATION Você pode implementar a forma explícita acima pelas seguintes etapas: Inicializar uma sequência de entrada dinput para Alfa, exceto para dinput0. 1. Defina um vetor d1overbetatothen igual a 1, 1beta, 1beta2, 1beta3. Multiplique o dinposto elementar por d1overbetatothen Execute um inclusivecan para obter a seqüência do yn betan Divida a seqüência acima por 1, 1beta, 1beta2, 1beta3. A abordagem acima pode ser recomendada para sistemas Linear Time-Varying (LTV). Para os sistemas Linear Time-Invariant (LTI), a abordagem FFT mencionada por Paul pode ser recomendada. Estou fornecendo um exemplo dessa abordagem usando o CUDA Thrust e cuFFT na minha resposta ao filtro FIR no CUDA.

No comments:

Post a Comment