GoTrade is a FIX protocol electronic trading and order management system written in Golang, structured for typical multi-asset institutional use.
gogo/protobuf A fork of golang/protobuf with tweaks and extras quickfixgo/quickfix FIX Engine in Golang nats-io/nats Performant messaging bus in Golang, seems resemblance of TibRV
There are sub-packages within the gotrade package for various components:
core/...: The low-level API that gives consumers all the knobs they need proto/...: The messaging protocol of various entities, in Protobuf format. services/...: Core services managing multi-asset order flow database/...: (not provided yet) SQL scripts and data layer APIs (PostgreSQL here but the idea is to support different storage engines without breaking everything)
Then on top of the core packages, we have:
cmd/...: Command-line executables, a.k.a final products test/...: Integration tests, etc.
To avoid cyclic imports, imports should never pull in higher-level APIs into a lower-level package. For example, you could import all of core and shell from cmd/... or test/..., but you couldn't import any of shell from core/....
|core/logger/handlers||Package es implements an Elasticsearch batch handler.|
|core/order||Core order APIs|
|core/service||Core service infrastructure for servicing starting/stopping/SIGTERM, and heartbeating etc|
|proto/order||Package order is a generated protocol buffer package.|
|proto/pricing||Package pricing is a generated protocol buffer package.|
|proto/service||Package service is a generated protocol buffer package.|
|services/marketconnectors/common/order||A common FIX Client required by QuickFIX, should work for most of market connectors.|
|services/marketconnectors/sellsidesim/orderbook||A simulated order book bid offer matching by bloomberg pricefeed quotes this is to give our sell side FIX engine simulate a false feel of reality, so as to support MARKET or LIMIT orders|
|services/marketconnectors/simulator||MC Simulator communicates with SellSideSim service in FIX protocol as a mean to test trade life cycle|
|services/orderrouter||Serving order New/Cancel/Replace tasks, communicates with various market connectors|