First, suspect a timing problem.
2.3s have a knack for running after jumping a tooth on the timing belt.
It'll start and idle fine, but won't be able to adjust the timing enough to prevent pinging.
You'll need to check the timing with the SPOUT connector unplugged.
Another suspect is carbon build up.
Do a SeaFoam upper intake cleaning, according to the directions on the can, through the brake booster hose.
You may need new spark plugs.
The dual plug heads seem to get neglected and owners keep the plugs installed way too long. I see you only have 57k miles on that truck. I would at least remove, clean and re-gap those 8 plugs.
They do recommend the timing belt replacement at about your mileage, 60k. If this is a new to you truck, it probably hasn't been done. If it has air conditioning, they are more prone to timing belt jumping teeth. At your mileage and age, that belt is probably pretty stretched and could easily have jumped a tooth.
You could also disconnect the EGR valve's vacuum line (and plug the hose end fitting). See if driving it with the EGR disabled makes it ping less. If so, I suspect the EGR DPFE is bad and the computer just hasn't set a code for it. That can happen if the battery has been disconnected or the check engine light has been reset. The computer tends to accept marginal performance sensor outputs when that happens.
http://www.fordfuelinjection.com/?p=64 Read the paragraph called Failure Mode.