Supposing that your predictions are always different from zero, since you want to be invariant to the scale, you can optimize the ratio: $$ loss(out, target) = |\frac{pred - target}{target}| $$ or if you want it to be differentiable, you can consider the square: $$ loss(out, target) = \left(\frac{pred - target}{target}\right)^2 $$
Now, those loss are symmetric, therefore overshooting or undershooting is equally penalized
If you have targets very close to 0, you might want to add a coefficient on the bottom to avoid division by zero, and their relative inaccuracies