I love the bones of her, but I get so cross with her too.
She is so stubborn, argumentative and cannot be reasoned with. She shouts at constantly makes demands then shouts / screams / cries if she doesn't get what she wants, runs away from me, throws herself on the floor, constantly tries to climb on me for attention and generally acts more like a 2 year old. (She is only just 4).
I just get cross and shout or put her in her room. I'm convinced my behaviour isn't helping the situation at all, especially as she uses my own negative phrases to shout at me ("You are being rude!" and "Don't speak to me like that!" for two examples). But I am at a loss how else to react. If I tell her not to do something she shouts at me and then the situation just escalates.
I found 4 much harder than two. They are still very little and respond with emotion, not reason, but they are articulate enough to use your own words against you.
However, I found that the same tactics that worked at 2 worked at 4 - staying very calm, setting clear boundaries and consequences and then sticking to them. The calm part is crucial and is also the hardest bit - yes, there were times when I failed at it. But it does work.
Other than that, present all choices as either/or (with both alternatives acceptable to you) and do not negotiate. I once took DD1 to school without shoes on because she refused to put her shoes on. It was early February. She never did it again. Not a cross word was involved.
Do think through what consequences you would impose before you set them out and don't pick them in anger if you can avoid it. Things like saying your DD can't go to a party that you have bought a present for and which would affect another child should be avoided if at all possible. Consequences need to be for your DD alone.