-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
60 lines (50 loc) · 1.16 KB
/
main.go
File metadata and controls
60 lines (50 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main
import (
"fmt"
"time"
"DeltaEngine/pkg/engine"
)
func main() {
// create order book
orderBook := &engine.OrderBook{
Bids: engine.NewOrderHeap(engine.BidLess),
Asks: engine.NewOrderHeap(engine.AskLess),
Orders: make(map[string]*engine.Order),
}
// create some orders
order1 := &engine.Order{
ID: "o1",
Price: 100,
Quantity: 10,
Side: engine.BUY,
Timestamp: time.Now().Unix(),
}
order2 := &engine.Order{
ID: "o2",
Price: 95,
Quantity: 5,
Side: engine.SELL,
Timestamp: time.Now().Unix(),
}
// add orders
trades := orderBook.AddOrder(order1)
trades = append(trades, orderBook.AddOrder(order2)...)
// print trades
for _, t := range trades {
fmt.Printf("Trade: BuyOrder %s, SellOrder %s, Price %.2f, Quantity %.2f\n",
t.BuyOrderID, t.SellOrderID, t.Price, t.Quantity)
}
// print best bid and ask
bestBid := orderBook.GetBestBid()
bestAsk := orderBook.GetBestAsk()
if bestBid != nil {
fmt.Printf("Best Bid: %.2f\n", bestBid.Price)
} else {
fmt.Println("No bids")
}
if bestAsk != nil {
fmt.Printf("Best Ask: %.2f\n", bestAsk.Price)
} else {
fmt.Println("No asks")
}
}