-
Notifications
You must be signed in to change notification settings - Fork 222
/
common.go
127 lines (112 loc) · 4.76 KB
/
common.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
package common
import (
"errors"
"fmt"
)
const (
OrderFlagHidden int = 64
OrderFlagClose int = 512
OrderFlagPostOnly int = 4096
OrderFlagOCO int = 16384
Checksum int = 131072
OrderStatusActive = "ACTIVE"
OrderStatusExecuted = "EXECUTED"
OrderStatusPartiallyFilled = "PARTIALLY FILLED"
OrderStatusCanceled = "CANCELED"
OrderTypeExchangeLimit = "EXCHANGE LIMIT"
OrderTypeMarket = "MARKET"
OrderTypeExchangeMarket = "EXCHANGE MARKET"
OrderTypeLimit = "LIMIT"
OrderTypeStop = "STOP"
OrderTypeExchangeStop = "EXCHANGE STOP"
OrderTypeTrailingStop = "TRAILING STOP"
OrderTypeExchangeTrailingStop = "EXCHANGE TRAILING STOP"
OrderTypeFOK = "FOK"
OrderTypeExchangeFOK = "EXCHANGE FOK"
OrderTypeStopLimit = "STOP LIMIT"
OrderTypeExchangeStopLimit = "EXCHANGE STOP LIMIT"
PermissionRead = "r"
PermissionWrite = "w"
FundingPrefix = "f"
TradingPrefix = "t"
FundingSizeKey StatKey = "funding.size"
CreditSizeKey StatKey = "credits.size"
CreditSizeSymKey StatKey = "credits.size.sym"
PositionSizeKey StatKey = "pos.size"
Bid OrderSide = 1
Ask OrderSide = 2
Long OrderSide = 1
Short OrderSide = 2
OldestFirst SortOrder = 1
NewestFirst SortOrder = -1
OneMinute CandleResolution = "1m"
FiveMinutes CandleResolution = "5m"
FifteenMinutes CandleResolution = "15m"
ThirtyMinutes CandleResolution = "30m"
OneHour CandleResolution = "1h"
ThreeHours CandleResolution = "3h"
SixHours CandleResolution = "6h"
TwelveHours CandleResolution = "12h"
OneDay CandleResolution = "1D"
OneWeek CandleResolution = "7D"
TwoWeeks CandleResolution = "14D"
OneMonth CandleResolution = "1M"
Precision0 BookPrecision = "P0" // Aggregate precision levels
Precision1 BookPrecision = "P1" // Aggregate precision levels
Precision2 BookPrecision = "P2" // Aggregate precision levels
Precision3 BookPrecision = "P3" // Aggregate precision levels
PrecisionRawBook BookPrecision = "R0" // Raw precision
// FrequencyRealtime book frequency gives updates as they occur in real-time.
FrequencyRealtime BookFrequency = "F0"
// FrequencyTwoPerSecond delivers two book updates per second.
FrequencyTwoPerSecond BookFrequency = "F1"
// PriceLevelDefault provides a constant default price level for book subscriptions.
PriceLevelDefault int = 25
)
var (
ErrNotFound = errors.New("not found")
)
// OrderSide provides a typed set of order sides.
type OrderSide byte
// CandleResolution provides a typed set of resolutions for candle subscriptions.
type CandleResolution string
// BookPrecision provides a typed book precision level.
type BookPrecision string
// BookFrequency provides a typed book frequency.
type BookFrequency string
type SortOrder int
type QueryLimit int
type PermissionType string
type Mts int64
type StatKey string
type StatusType string
type OrderType string
func CandleResolutionFromString(str string) (CandleResolution, error) {
switch str {
case string(OneMinute):
return OneMinute, nil
case string(FiveMinutes):
return FiveMinutes, nil
case string(FifteenMinutes):
return FifteenMinutes, nil
case string(ThirtyMinutes):
return ThirtyMinutes, nil
case string(OneHour):
return OneHour, nil
case string(ThreeHours):
return ThreeHours, nil
case string(SixHours):
return SixHours, nil
case string(TwelveHours):
return TwelveHours, nil
case string(OneDay):
return OneDay, nil
case string(OneWeek):
return OneWeek, nil
case string(TwoWeeks):
return TwoWeeks, nil
case string(OneMonth):
return OneMonth, nil
}
return OneMinute, fmt.Errorf("could not convert string to resolution: %s", str)
}