I am no expert, but I have always used whatever cheap car shampoo I was gifted for Christmas, with plenty of clean water (changing it regularly) to get the grime off. Once it is clean I give it a coat of ceramic sealant (Can't remember the name of the one I currently have, but it's in a blue bottle

).
I don't use shampoo with 'wax' in it, or add wax afterwards - but, that said, my paintwork isn't good enough to really worry about now. (The blue car is lucky to get squirted with the hosepipe and wiped down).
For the roof, I bought a kit from Renovo which is a 3-part thing - a cleaner, a colourant and a sealer/waterproofer....... the cleaner is applied with a scrubbing brush to get into the cervices in the material, and once dry, it can be coloured (if required) or just waterproofed.
I still have most of it somewhere, but if the roof isn't too bad, a soft brush and hosepipe will do the job, but if it needs more, any car shampoo (without wax) and a scrubbing brush will do wonders..... but if you disturb the fibres too much it will need re-proofing afterwards. Fabsil, or any other tent waterproofer will do the job (I have even seen some people using Thompsons Waterseal) - basically, just something with silicone to stop the rain penetrating.
My roof hardly ever gets touched these days as the cars live in the garage, and I rarely put them up.