There are various reasons.
Number one is the economy. There is a worsening outlook for the economy. The numbers speak for themselves. I think he wanted a pre-emptive strike. Before things get worse, he wanted to go to an early election.
The second reason is that he wanted to catch the opposition off guard, especially the underdog that was set up recently by a former nationalist politician who is very popular. He didn't want to give a chance to her party and other opposition parties to make alliances for the presidential and the national elections.
The third reason is that he's going to be running the election right after the wrapping up of the Muslim holy month, Ramadan, which will be very important for many people in Turkey. Religious sensitivity will be peaking and he's going to be running the election right after. He's going to be campaigning mainly on religious issues as well as nationalist issues. It will be a perfect opportunity for him to make inroads into the undecided workers bloc.