全新重构,希望更多开源爱好者能加入共同开发练手,共同进步,请联系下方wx
graph TD
classDef done fill:#2ecc71,stroke:#27ae60,color:#fff
classDef pending fill:#bdc3c7,stroke:#95a5a6,color:#333
A[交易所<br>Exchange]
A --> aa[基础数据<br>Base]
aa --> aa1[资产种类<br>Asset]
aa --> aa2[交易品种<br>Product]
A --> AA[用户中心<br>UserCenter]
AA --> AAa[用户资产<br>UserAssets]
class AAa done
AA--> AAb[用户订单<br>UserOrders]
class AAb done
A --> AC[交易核心<br>TradingCore]
A --> AC3[行情系统<br>Quote]
class AC3 pending
A --> AD[消息推送<br>Notification]
class AD pending
A --> AZ[...<br>Other]
AC --> AC1[撮合引擎<br>MatchingEngine]
class AC1 done
AC --> AC2[订单结算<br>Settlement]
class AC2 done
git clone https://github.com/yzimhao/trading_engine.git
cd trading_engine/
#启动依赖的docker服务
docker-compose up -d
#启动服务端程序
make run
#启动前端调试example(需要单独新开一个terminal)
cd frontend/example/
npm run dev:h5 #执行完成之后,浏览器打开 http://127.0.0.1:5174/example/?symbol=btcusdt
只集成撮合引擎部分
go get github.com/yzimhao/trading_engine/v2/pkg/matching
ctx := context.Background()
opts := []matching.Option{
matching.WithPriceDecimals(2),
matching.WithQuantityDecimals(2),
}
btcusdt = matching.NewEngine(ctx, "btcusdt", opts...)
//添加订单
btcusdt.AddItem(...)
//移除订单
btcusdt.RemoveItem(...)
//监听事件结果
btcusdt.OnTradeResult(func(result types.TradeResult) {
//TODO
})
btcusdt.OnRemoveResult(func(result types.RemoveResult) {
//TODO
})
//获取深度
btcusdt.GetAskOrderBook(10) // [][2]string [["1.01","4.00"],["1.10","2.00"]]
btcusdt.GetBidOrderBook(10)