Вот несколько идей, но я не могу понять, что может сработать ...
Производные: если вы берете свой массив и вычитаете элементы друг из друга, чтобы получить массив на одну точку меньше, но это первая производная. Если вы теперь сгладите это и посмотрите на изменение знака, это может обнаружить ваш удар.
Скользящие средние: возможно, использование 2-х запаздывающих (экспоненциальных или оконных) скользящих средних может выявить большой удар, игнорируя при этом маленький. По сути, ширина меньшего скользящего среднего окна должна быть больше ширины неровностей, которые вы хотите игнорировать. Более широкая EMA должна быть шире, но не слишком широкой, чтобы обнаружить удар.
Вы ищите, когда они пересекут и вычтут отставание (window / 2), и это приблизительная оценка вашего удара.
http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/
Линейные модели: создайте серию линейных моделей достаточной ширины, несколько маленьких шишек, скажем, 100 точек. Теперь проведите цикл по набору данных, генерируя линейные регрессии по переменной X. Просто посмотрите на коэффициент X и посмотрите, где произошло большое изменение знака. Это большой удар.
Вышесказанное является лишь гипотезой с моей стороны, и, возможно, есть лучшие способы сделать это.