IME this is the stage you have to become clever about how you communicate with them. Read and re-read how to talk. It's annoying to not be able to just ask them to do something but it does always take longer than trying some thing to grab their attention.
So, for the stop when near a road, teach him the ready steady stop game - get him to run ahead (in a safe area) then shout ready steady stop, and see how quickly he can stand still as a statue. DS loved this game and would do it for ages. Now at 4 when I shout stop its immediate thank goodness.
For instructions use races/games/warnings. DS I bet I can get my shoes on before you. DS we're leaving the park very soon, you've got time to go on the slide 3 more times, shall we count them together then you can open the gate (no point saying 5 more mins as means nothing to them). If you can get ready for bed super fast we might have enough time for 2 stories tonight. I noticed a couple of alligators on your teeth earlier, could you brush them away? Etc etc.
For hitting, I make a sad face, say you hurt me, that makes me very sad, and I walk away whenever possible or use time in/time out. Then come back and say we're a family, we need to be kind to each other, if you're feeling cross you can tell me.
Don't get me wrong, I snap and shout too. It's v v frustrating. But I know I get a much faster and more positive response if I use a sneaky way through.
And of course do check he can actually hear you and doesn't have glue ear of something!