Movimento média variável comprimento
Se, em um gráfico, fizemos duas barras que são inferiores pelo menos às duas barras anteriores e trocamos uma linha de volta para uma barra da barra atual que é pelo menos tão baixa quanto a barra atual, haverá uma maior Entre estas duas barras. A média móvel que eu gostaria é de comprimento de período da barra de alta para o comprimento da barra de barra atual, inclusive. Assim, se houver 5 barras daquela barra alta entre as duas barras interligadas, inclusive, o período de duração da MA de interesse seria 5. Se outra barra inferior foi gerada ea barra alta entre aquela e barra antes disso era de Igualmente baixo preço foi o mesmo bar, então o período de duração do MA de interesse seria então 6. Existe um IndicatorEA que produz este MA ou poderia ser codificado Talvez até mesmo algo semelhante lá fora seria um bom lugar para começar. sim, isso pode ser feito. Mas você precisa de um método de como identificar os pontos baixos e altos. O mais provável é que o indicador irá repetir o último movimento. Se você olhar para o meu lado, você vai encontrar um indicador que faz quase o mesmo Como faço para chegar ao seu lado Combinado altos e baixos: Se a barra atual é menor do que as duas barras anteriores, desenhar uma linha de volta da barra atual para um Bar que é pelo menos tão baixo. Em seguida, encontrar a barra entre a barra atual e que o bar histórico que era pelo menos tão baixo que é maior do que todos os outros bares no meio. Essa é a barra de âncora. O número de barras dessa barra alta para a barra atual é o comprimento do período da MA. Se a próxima barra após a barra atual for maior, o período do período MA permanecerá o mesmo. Se for menor, do que você tem que repetir todos os acima para a nova barra. Nesse caso, o indicador que você solicitou repintaria as últimas 3 barras. Ps, eu enviar-lhe um pm desde posing um link é considerado como adverticing aqui. Não tenho certeza se entendi o seu método highlow. Se a barra atual for mais alta do que as duas anteriores, uma elevação iniciou Se a barra atual for menor que as duas anteriores, uma desaceleração começou. O período Ma é ajustado para a extensão do movimento. Eu não consigo ver um sistema neste indicador: (Estou tentando obter um código VBA simples como parte de uma macro que irá colocar na coluna B a média dos valores para cada linha. Eu tenho código que gera uma série de tempo e preenche um Coluna por simulação de tal forma que cada coluna é uma série temporal começando na coluna C. O número de simulações varia de modo que eu simplesmente preciso de algo que mede o valor de cada ponto no tempo (ou seja, para cada linha em todas as simulações), enquanto ajustando para o número de Simulações que são executadas (colunas que são preenchidas).Eu gostaria então de gerar um único gráfico de todas as séries temporais destacando os valores médios que são calculados. Muito obrigado, se você pode ajudar Aqui, por exemplo, é o código que leva Os valores para as etapas de tempo de sheet1 e coloca-lo em columnA folha 2. Eu gostaria que a macro agora coloque a média na linha apropriada para baixo Coluna B: perguntou Jul 13 12 at 1:58 Thanks for the comments. Incorporar esta função como parte de um Macro wh Ich gera estas séries temporais automaticamente. Como eu não sei quantas colunas haverá (talvez centenas) e talvez eu tenha que repetir a simulação muitas vezes ele precisará ser incorporado como parte desta macro. Eu atualizei a pergunta e coloquei em mais detalhes como Pedido. Ndash Mary Jul 13 12 at 10:35 Obrigado pela vossa ajuda. Sempre haverá dados após a coluna C como eu planejo executar milhares de séries temporais. Gostaria de saber se você tem um código para detectar automaticamente o intervalo de dados na planilha de modo a traçar o gráfico ou seja, substituir a parte de intervalo do código a seguir com algo adequado Vejo que você deu conselhos a algo semelhante em um post anterior, mas eu tenho Sido incapaz de adaptá-lo ao meu. Sub Graph () ActiveSheet. Shapes. AddChart. Select ActiveChart. ChartType xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData Fonte: Range (quotSheet2A1: E101quot) End Sub ndash Mary Jul 13 12 at 16:03 Oi pessoal. Muito obrigado. Ambas as contribuições realmente funcionam bem no cálculo das médias para o exemplo mostrado. No entanto, o número de colunas irá variar de modo a média terá de ser calculado a partir da coluna C para quotxquot dependendo do número de repetições a simulação gera. Estou tendo problemas para fazê-lo reconhecer quantas colunas existem que precisam ser média antes de fazer o cálculo que seus códigos para muito bem. Qualquer ajuda para obter o gráfico para gerar seria um grande bônus também). Realmente aprecio sua ajuda sobre isso. Obrigado novamente ndash Mary Jul 13 12 at 13: 29Seu interior para está iterando toda a matriz de modo thats por que você sempre obter a mesma média (um para toda a matriz), você deve iterar de 0 para o número atual do exterior para em vez . Sua média móvel está sendo atualizada com base em j de seu interior para isso significa que ele irá substituir os valores anteriores de cada novo loop, isso deve estar dentro do exterior para em vez do interior usando i como índice. Você está dividindo sumj para calcular médias, cada novo laço interno j você dividirá por 0 a primeira soma. Eu acredito que você pretendia usar j1 em vez disso, o índice não é o mesmo que o comprimento atual Dicas para solucionar problemas: Evite usar variáveis para arrays de loop, você deve usar array. length em vez disso. Para uma questão de reproduzir o seu problema, você poderia nos dar o problema isolado em vez de seu código atual. Ou seja: Imagine se o erro está em suas entradas, como poderíamos acreditar que você realmente as usou Você está fazendo um loop sobre todos os dados toda vez. Você deve ter para (int j (igtaverageLengthi-averageLength2: 0) jlt iaverageLength2 ampamp jltnumDataPoints j) (ou algo semelhante) para a sua média innermost. Além disso, movingAverageisumj deve ser modificado para lidar com o caso quando j é 0. Em particular, provavelmente deve ser movingAverageisumaverageLength e deve ser aplicado ao slot movingAveragei fora do loop de média. Respondido Oct 4 13 at 20:42 Da próxima vez, tome os comentários sobre a atribuição fora da questão antes de publicá-la. Mas desde que você parece muito novo nisso, pense sobre como você iria passar os dados, e fazê-lo fazer isso. Você deve tentar certificar-se de que cada loop está parando no ponto correto, e lembre-se que se você parar quando não há mais números, (como quando você está fazendo o loop interno e você só pode obter mais 3 números em vez de 4) O programa precisa parar também. Certifique-se de que o seu código está a verificar. Resposta Sem quaisquer detalhes adicionais, você provavelmente precisará de uma média móvel não ponderada. Em qualquer ponto Ai na matriz de entrada A de comprimento N (com 0ltiltN), isso é simplesmente a média das entradas K anteriores da matriz, até e incluindo Ai. Se não houver K tais valores, então a média dos valores (i1) de A0 a Ai. Inclusive. Um pouco de pensamento irá mostrar-lhe que você não precisa adicionar todos os valores de K cada vez. Basta manter a soma e, ao passar para o próximo ponto (esta é uma média móvel), subtraia o valor que está sendo substituído e adicione o novo valor que irá substituí-lo. (Durante os primeiros pontos K-1, basta adicionar o novo valor à soma e aumentar o contador por 1.) Em qualquer ponto neste processo, a média móvel é a soma corrente dividida pelo valor da contagem atual. Resposta Em uma média móvel, você precisa ter algum tipo de tamanho de janela. Seu tamanho de janela é averageLength, então ele será algo parecido com isto: O loop for começa nos dados atuais e retorna pontos de dados averageLength e os adiciona. Você só terá uma média móvel quando tiver você tem quando você tem pontos de dados suficientes ea média será a soma dividida pelo comprimento médio. Nota: Não testado apenas o código do sudo, mas esta é a idéia. Respondeu Oct 4 13 at 21:05 Sua resposta 2017 Stack Exchange, Inc
Comments
Post a Comment