Hi,
I've developed an ats using mutlithreading and FIFO. Though it's working, it's
very difficult to expand, e.g going from a single data access module to
multiple. Hence, I've decided to switch to ZeroMQ. I am using C++ on Linux and I
am processing every quote.
What I would like to achieve is to have one or more data access modules
(processes), data aggregator module, strategy module, OMS/Risk module, GUI
module, and order execution module all communicating using ZeroMQ.
I believe I've planned it all correctly as ZeroMQ stands, however I am not sure
what is the best way for the strategy module to access the accumulated quotes.
One way is not to have a data aggregator module but to accumulate quotes in the
strategy module but then I am back to multithreading. And, once I decide to have
multiple strategy modules I will be back to scalability issue.
So, my question is, how to access the accumulated data between the modules?
I am looking into POSIX shared memory, mapped memory, Boost.Interprocess,
Reddis. I want a solution that is easy to implement, reliable, and fast enough. I am
not after every microsecond but I run backtesting on the same platform so I do not
want to slow down when it loads the quotes from the disk.
TI
I've developed an ats using mutlithreading and FIFO. Though it's working, it's
very difficult to expand, e.g going from a single data access module to
multiple. Hence, I've decided to switch to ZeroMQ. I am using C++ on Linux and I
am processing every quote.
What I would like to achieve is to have one or more data access modules
(processes), data aggregator module, strategy module, OMS/Risk module, GUI
module, and order execution module all communicating using ZeroMQ.
I believe I've planned it all correctly as ZeroMQ stands, however I am not sure
what is the best way for the strategy module to access the accumulated quotes.
One way is not to have a data aggregator module but to accumulate quotes in the
strategy module but then I am back to multithreading. And, once I decide to have
multiple strategy modules I will be back to scalability issue.
So, my question is, how to access the accumulated data between the modules?
I am looking into POSIX shared memory, mapped memory, Boost.Interprocess,
Reddis. I want a solution that is easy to implement, reliable, and fast enough. I am
not after every microsecond but I run backtesting on the same platform so I do not
want to slow down when it loads the quotes from the disk.
TI
Last edited: