Restrict objects motion when using curve modifier
Maybe your problem is that you didn't put the curve origin at its beginning point?

About the speed, you can change it as much as you want if you create some new keyframes for the curve and play with their position or with the curve handles in the Graph Editor.

Another simple way to do what you want is tu use a Lattice modifier:


Create a Lattice object.
Stay in Object mode, give it the size and proportion you need, of course it needs to be bigger than your fish.
In the Properties panel > Data, give your lattice some edge loops in the U axis (or in the V axis, depending on its orientation). You can even reduce the V and W values to 1.
In Edit mode, deform your lattice, use the Proportional Editing option to make it smooth.
Select your fish, give it a Lattice modifier, choose the lattice as Object.
Move your fish or move your lattice to make the fish bend.