Aqui estão algumas idéias, mas eu de cabeça para baixo que podem funcionar ...
Derivadas: se você pegar seu array e subtrair os elementos um do outro para obter um array com menos um ponto, mas essa é a primeira derivada. Se você agora suavizar isso e procurar a mudança de sinal, isso poderá detectar seu impacto.
Médias móveis: talvez o uso de 2 médias móveis atrasadas (exponencial ou em janelas) possa revelar o solavanco grande e ignorar o menor. Basicamente, a largura da média móvel da janela menor deve ser maior que a largura dos solavancos que você deseja ignorar. A EMA mais ampla deve ser mais larga, mas não muito larga para detectar o solavanco.
Você procura quando eles cruzam e subtraem o atraso (janela / 2) e essa é uma estimativa onde está o seu impacto.
http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/
Modelos lineares: faça uma série de modelos lineares de largura suficiente com várias saliências, digamos 100 pontos. Agora faça um loop no conjunto de dados, gerando regressões lineares na variável X. Basta olhar para o coeficiente de X e ver onde a grande mudança de sinal aconteceu. Essa é uma grande colisão.
O exposto acima é apenas conjectura da minha parte e provavelmente existem maneiras melhores de fazê-lo.