Your problem looks similar to onset detection, but the problem context is not similar to that. This type of biological signal processing, i.e., detection of the P, QRS, and T phases, that can exploit knowledge of specific time-domain characteristics of every waveforms.
One approach that works for QRS detection is dynamic time warping. The time-domain characteristics remain invariant, Then it would work remarkably well.
A wavelet-based approach seems most intuitive to me. The wavelets are suited here is that they are useful at parameterizing a wide variety of shapes regardless of time or amplitude scaling.
Hope this answer helps.
If you want to learn Python programming language for Data Science then you can watch this complete video tutorial: