Is there a correct way to write:
(a) Have you taken your lunch?
(b) Have you had your lunch?
(c) Do you have your lunch?
(d) Do you eat your lunch?
c and d are in the simple present and can be used if you are talking about normal, everyday activity.

As Jaradite has said, (a) isn't used in AmEng, except in the case of "do you take your lunch [from home], or do you eat in the cafeteria?'
I don't fully understand the question. You have them lettered as if there is supposed to be a correct answer, but no context or directions to base a decision on. So, I will just comment on each.
a. Might be ok in British English, but I never use this in American English.
b. I use this one 90% of the time. This is because the afternoon is not finished YET, or because it is STILL afternoon. (Study the capitalized words)
c. Never use this one
d. The grammar is fine, but it doesn't make sense. If one doesn't eat their lunch, what do they do with it? Instead of "Do", change it to "Did" and this makes more sense. You can use this in the afternoon and in the evening of the same day that you ate lunch. For morning, you can use it if it refers to lunch eaten yesterday or another day in the past.
Students: Are you brave enough to let our tutors analyse your pronunciation?
 Philip's reply was promoted to an answer.
"do you take your lunch [from home]"
In that case, I would use "bring" instead of "take".
have you had your lunch?
Teachers: We supply a list of EFL job vacancies