Provided that you still think that the demo architecture fits your needs, in order to send your custom data, you should customize only the "ExternalFeedProducer" class.
Each object instance of this class owns an update thread, which waits for randomly generated times, produced by the "ComputeNextWaitTime" method; you can rewrite the latter to always return 5000 milliseconds.
Then, you should only rewrite the "ComputeNewValues" and "GetCurrentValues" methods. The first one produces new data for the instance-related stock and stores it in the object; the second one collects the stored data in an "IDictionary", suitable for being sent forward.

If, however, you can only read data for all your stocks, from outside, as an atomic operation, then some adjustments would be needed (it is still unclear to me which are your requirements).

Dario