Ham is made from lean pork. And as with all meat, be it pork, beef, lamb, even poultry, final meat temperature decides the quality of the meat. If you cook it much above a final temperature of 165'F, it toughens and dries out. The secret to moist meat is to use a thermometer, preferably something that has an alarm to alert you when you are close to your target temperature. Time will vary depending on how the meat was butchered, aged, cured, by size, and cooking temperature. But if you gauge by meat temperature, then you can't go wrong.
Basting doesn't make for a juicier anything. It does deposit flavor particles from the basting juice to enhance the skin flavor. Injecting a flavored soution does the same thing, only inside the meat. Covering with foil traps the steam and keeps you from forming a nice outer crust.
Lardoons will help keep the meat moist by melting fat into the muscle tissue as the meat roasts, replacing some of the water with liquid fat (I know, it sound gross, but really makes for a great roast).
This is important enough to re-state. Final meat temperature determines the moisture content of the meat. After that, use some deductive reasoning. If you cook at a higher temperature, it will dry the outer skin more, creating a nice crust (not always needed, depending on the meal). Cooking at a lower temperature will increase the time required to bring the inner meat to temperature. And so, you can tailor the end result to what you want it to be y remembering the final desired temperature, using a meat thermometer to attain that temperature, and adjust the cooking procedure to get the results you desire.
Good luck, and happy roasting.
Seeeeeeya; Goodweed of the north