-
Notifications
You must be signed in to change notification settings - Fork 19
/
vega_ext.go
198 lines (160 loc) · 4.41 KB
/
vega_ext.go
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
// vega_ext provides extra methods to the types generated by protobuf.
package vega
import (
fmt "fmt"
"strconv"
"time"
)
const (
systemOwner = "*"
noMarket = "!"
)
func (ad *AccountDetails) ID() string {
idbuf := make([]byte, 256)
marketID, partyID := noMarket, systemOwner
if ad.MarketId != nil {
marketID = *ad.MarketId
}
// market account
if ad.Owner != nil {
partyID = *ad.Owner
}
copy(idbuf, marketID)
ln := len(marketID)
copy(idbuf[ln:], partyID)
ln += len(partyID)
copy(idbuf[ln:], []byte(ad.AssetId))
ln += len(ad.AssetId)
idbuf[ln] = byte(ad.Type + 48)
return string(idbuf[:ln+1])
}
// Float64Fee tries to parse the Fee (string) into a float64.
// If parsing fails 0 is returned.
func (l *LiquidityProvision) Float64Fee() float64 {
v, err := strconv.ParseFloat(l.Fee, 64)
if err != nil {
return 0
}
return v
}
func (o *Order) IsLiquidityOrder() bool {
return len(o.LiquidityProvisionId) > 0
}
// Create sets the creation time (CreatedAt) to t and returns the
// updated order.
func (o *Order) Create(t time.Time) *Order {
o.CreatedAt = t.UnixNano()
return o
}
// Update sets the modification time (UpdatedAt) to t and returns the
// updated order.
func (o *Order) Update(t time.Time) *Order {
o.UpdatedAt = t.UnixNano()
return o
}
// IsPersistent returns true if the order is persistent.
// A persistent order is a Limit type order that might be
// matched in the future.
func (o *Order) IsPersistent() bool {
return (o.TimeInForce == Order_TIME_IN_FORCE_GTC ||
o.TimeInForce == Order_TIME_IN_FORCE_GTT ||
o.TimeInForce == Order_TIME_IN_FORCE_GFN ||
o.TimeInForce == Order_TIME_IN_FORCE_GFA) &&
o.Type == Order_TYPE_LIMIT &&
o.Remaining > 0
}
func (o *Order) IsExpireable() bool {
return (o.TimeInForce == Order_TIME_IN_FORCE_GFN ||
o.TimeInForce == Order_TIME_IN_FORCE_GTT ||
o.TimeInForce == Order_TIME_IN_FORCE_GFA) &&
o.ExpiresAt > 0
}
// IsFinished returns true if an order
// is in any state different to ACTIVE and PARKED
// Basically any order which is never gonna
// trade anymore.
func (o *Order) IsFinished() bool {
return o.Status != Order_STATUS_ACTIVE && o.Status != Order_STATUS_PARKED
}
func (o *Order) HasTraded() bool {
return o.Size != o.Remaining
}
func (t *Trade) SetIDs(aggressive, passive *Order, idx int) {
t.Id = fmt.Sprintf("%s-%010d", aggressive.Id, idx)
if aggressive.Side == Side_SIDE_BUY {
t.BuyOrder = aggressive.Id
t.SellOrder = passive.Id
return
}
t.SellOrder = aggressive.Id
t.BuyOrder = passive.Id
}
func (DispatchMetric) GetEnums() map[int32]string {
return DispatchMetric_name
}
func (Side) GetEnums() map[int32]string {
return Side_name
}
func (Asset_Status) GetEnums() map[int32]string {
return Asset_Status_name
}
func (Market_TradingMode) GetEnums() map[int32]string {
return Market_TradingMode_name
}
func (Market_State) GetEnums() map[int32]string {
return Market_State_name
}
func (NodeStatus) GetEnums() map[int32]string {
return NodeStatus_name
}
func (ValidatorNodeStatus) GetEnums() map[int32]string {
return ValidatorNodeStatus_name
}
func (Deposit_Status) GetEnums() map[int32]string {
return Deposit_Status_name
}
func (Withdrawal_Status) GetEnums() map[int32]string {
return Withdrawal_Status_name
}
func (Proposal_State) GetEnums() map[int32]string {
return Proposal_State_name
}
func (ProposalError) GetEnums() map[int32]string {
return ProposalError_name
}
func (Vote_Value) GetEnums() map[int32]string {
return Vote_Value_name
}
func (PositionStatus) GetEnums() map[int32]string {
return PositionStatus_name
}
func (DataSourceSpec_Status) GetEnums() map[int32]string {
return DataSourceSpec_Status_name
}
func (LiquidityProvision_Status) GetEnums() map[int32]string {
return LiquidityProvision_Status_name
}
func (TransferType) GetEnums() map[int32]string {
return TransferType_name
}
func (MarginMode) GetEnums() map[int32]string {
return MarginMode_name
}
func (StopOrder_ExpiryStrategy) GetEnums() map[int32]string {
return StopOrder_ExpiryStrategy_name
}
func (StopOrder_TriggerDirection) GetEnums() map[int32]string {
return StopOrder_TriggerDirection_name
}
func (StopOrder_Status) GetEnums() map[int32]string {
return StopOrder_Status_name
}
func (StopOrder_RejectionReason) GetEnums() map[int32]string {
return StopOrder_RejectionReason_name
}
func (CompositePriceType) GetEnums() map[int32]string {
return CompositePriceType_name
}
func (AuctionTrigger) GetEnums() map[int32]string {
return AuctionTrigger_name
}