As has already been pointed out the schedule will never be that accurate. You could have it start at 4:10 and you might have better luck, but over time the schedule will creep depending on what else is going on. If it is that important then schedule a little agent that runs every 5 - 10 minutes that simply looks at the current time and if it matches ~ with the time you want then call the main agent otherwise go back to sleep. This process does not take up much server resources and will get you running atleast close to the time schedule. I don’t recommend scheduling anything to run exacly on the Hour because the server tasks are scheduled to run on the hour, so schedule them for 4:05 and you will be less likely to max out the server because you are competing with scheduled server tasks.
Agent Manager is never going to hold to such a schedule. You can set it to run hourly and have it check that it’s approximately 4 or 10 o’clock before continuing the code, but even then it might be 4:30 or 10:47 when it actually runs. All depends on what else is going on on the server.