Skip to content

yzimhao/trading_engine

Repository files navigation

贡献代码

全新重构,希望更多开源爱好者能加入共同开发练手,共同进步,请联系下方wx

Example

demo project

系统架构

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
    
Loading

参与开发

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)

交流

Star History

Star History Chart

Visitor's Count

About

Go开发的金融证券交易所系统

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published