I had my lunch half an hour ago, so I'm not hungry and I can't eat anymore. Is this sentence grammatically correct ? Or I should use present perfect only ?
Yes, the sentence is perfectly valid apart from the fact that it's been phrased somewhat awkwardly toward the end:
I had my lunch half an hour ago, so I'm not hungry and I don't want to eat anymore.
The use of the past simple verb had is justified by virtue of the fact that you use a time reference (an hour ago) specifying how long ago the action took place. Actions that happened in the past are described using the past simple tense. So, you got it right.
On the other hand, actions that took place in the past and are connected to the present are described using the present perfect tense. So, if you were to use a present perfect tense in your sentence, the sentence would read something like this:
I have already had my lunch today. So I'm not hungry and don't want to eat.
This sentence talks about your current state in regards to having lunch and not when the action took place.