A further clarification on dc filter:
If the dc excess power is well away from your signal bandwidth then you can use less potent filtering.
If dc power is also part of your signal then you should use a very sharp filter with measured attenuation so that you only remove excess dc and pass your dc and the rest of power with minimum ripple.
The running average subtraction above is a feedback system and must lock in your application i.e. you need to apply correct loop filtering(basically your averaging order and the fraction of feedback) so that you avoid oscillation due to fast/slow subtraction or over/under subtraction.