In Windows, applications can expose their internal functions/data as COM objects called ROM automation. Then, Excel can tap into these interfaces using the RTD (Real Time Data) feature.

// Creating a RTD server public class SampleRTDServer : IRtdServer { public object ConnectData(int topicCount, ref Array topicIds, ref Array strings, ref Array realTimeData) { // fetch and return data } }

A standard synrax to get data from a RTD server looks like:

=RTD(ProgId, topicId (optional), arg1, arg2)

A popular trading platform, ThinkOrSwim, supports this feature by creating a COM server (IRTDServer) from which Excel can hook into and receive live data.

// Example in Excel =RTD("tos.rtd",,"LAST”, “AAPL”) //141.00

Custom RTD client

We can quickly implement a program to hook into this interface and get data without needing for Excel.

interface IRTDServer { // ConnectData(topicId, parameters, newValue) }

Use GUID to create a reference to a specific COM server instance. Use ConnectData method to connect to a specific topic and get data.

View full code at github

Posted on July 16, 2017