Wednesday 13 December 2017

Php moving average array no Brasil


Primeiro, você está usando 5 em um par de lugares em seu programa, não vejo nenhuma justificativa para isso. Poderia ser que a sua expectativa de entrada do usuário levá-lo a colocar 5 onde o número que você realmente deve usar, depende da entrada do usuário Talvez você deve usar o tamanho da janela em vez disso estou adivinhando um pouco aqui. Em seguida, como lppEdd apontou, você não está lendo os números de sua entrada apenas o tamanho da janela. Em seguida, você está declarando sua matriz de tamanho n. Que eu acredito que era o tamanho da janela, não o tamanho da matriz. Acredito que a verdadeira solução para este problema é usar nomes de variáveis ​​melhores e mais explicativos. Seu código não compila desde que você não declarou a disposição avg que você tenta armazenar sua média móvel em. Quinto, quando você quer sua média como um duplo. Você precisa converter para o dobro antes de dividir (este é um pitfall clássico que já gerou muitas perguntas sobre o estouro de pilha). Espero que isso lhe dê um par de passos adiante. Respondeu 2 dias atrás A primeira coisa que você vê é que ele está usando nextInt (), que só retorna um único valor inteiro, não uma matriz. Basicamente ele estaria usando uma matriz cheia de zeros. Ndash LppEdd 2 dias atrás Sua resposta 2017 Stack Exchange, IncYour interno está iterando toda a matriz assim thats por que você sempre obter a mesma média (a de toda a matriz), você deve iterar de 0 para o número atual do exterior para em vez de. 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 usou respondidas? Você está looping sobre todos os dados de cada 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 desse 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 sudo, mas esta é a idéia. Respondeu Oct 4 13 at 21:05 Sua resposta 2017 Stack Exchange, Inctraderema a função traderema () não funciona corretamente. Calcula apenas a média das entradas do último período. Siga o seguinte código para o traderema: function EMACalculator (limite, matriz) EMApreviousday array0 printr (matriz) multiplier1 (2limit1) EMAarray () EMA array0 Fechar array1 while (limit) echoEMA é EMAn EMA (Close - EMApreviousday) multiplicador1 EMApreviousday EMA limit - - retornar EMA onde limite aceitar o período de ema e array. Aceitar matriz de dados para o cálculo ema. Se você quiser verificar se há, por exemplo, apenas seqüências de caracteres em uma matriz, você pode usar uma combinação de arraysum e arraymap como este: function onlystringsinarray (arr) return arraysum (arraymap (isstring. arr) (Array) arr1 array (array) array (array) array (array) array (array) array (array) array (array) (Arr1), onlystringsinarray (arr2), onlystringsinarray (arr3), onlystringsinarray (arr4)) gt Isto lhe dará o seguinte resultado: bool (true) bool (false) bool (false) bool (false)

No comments:

Post a Comment