Sounds familiar to me - DD is 3.7 and she always has delighted in doing the opposite of what is asked. Her initial reaction to most suggested activities/ foods/ trips is that she doesn't want to.
She is getting more easy-going as she gets older, more open to negotiation. But my best discovery is when I realised that her refusal/ stubborness was just a reflection of and just as strong and fixsed as my opinion that my way was right. Once I started to act like I just didn't care either way (even though inside I'm saying aaaaarrrrrrrgggg), she has started to behave more sensibly. Not always, but more often.
So, our favourite, constant routine is around clothes. Last summer - trousers were worn under every dress, no matter how hot the day was. During the winter, it was all out war often to try and get a coat and trousers on her. Now it's warming up, you guessed it, the requests are for warm hat, gloves, scarf AND winter coat...Since deciding to let it go, hey presto, more sensible clothes choices.
It's a pain, but I guess there's an innate need to be in control. Parents like to be in control too, but maybe we don't need to be so often? I'm trying to let go of the things it is safe to let go of.