All of them have their place in this sentence. "Have" is present tense and suggests that you are talking to someone about your English speaking abilities. "Had" is past tense and indicates that this sentence is part of a larger narrative involving your proficiency with spoken English.
If you're going to use "have had" I'd change the sentence a little:
"I have had experience speaking English since my stay in Johannesburg."
I have some experience in speaking English from when I lived in Johannesburg.
I gained some experience in speaking English when I lived in Johannesburg.
I have some experience in speaking English, gained from living in Johannesburg.