forked from bitfinexcom/bitfinex-api-go
/
history.go
133 lines (102 loc) · 2.38 KB
/
history.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
package bitfinex
import "time"
type HistoryService struct {
client *Client
}
type Balance struct {
Currency string
Amount string
Balance string
Description string
Timestamp string
}
func (s *HistoryService) Balance(currency, wallet string, since, until time.Time, limit int) ([]Balance, error) {
payload := map[string]interface{}{"currency": currency}
if !since.IsZero() {
payload["since"] = since.Unix()
}
if !until.IsZero() {
payload["until"] = until.Unix()
}
if limit != 0 {
payload["limit"] = limit
}
req, err := s.client.newAuthenticatedRequest("POST", "history", payload)
if err != nil {
return nil, err
}
var v []Balance
_, err = s.client.do(req, &v)
if err != nil {
return nil, err
}
return v, nil
}
type Movement struct {
ID int64 `json:",int"`
Currency string
Method string
Type string
Amount string
Description string
Status string
Timestamp string
}
func (s *HistoryService) Movements(currency, method string, since, until time.Time, limit int) ([]Movement, error) {
payload := map[string]interface{}{"currency": currency, "method": method}
if !since.IsZero() {
payload["since"] = since.Unix()
}
if !until.IsZero() {
payload["until"] = until.Unix()
}
if limit != 0 {
payload["limit"] = limit
}
req, err := s.client.newAuthenticatedRequest("POST", "history/movements", payload)
if err != nil {
return nil, err
}
var v []Movement
_, err = s.client.do(req, &v)
if err != nil {
return nil, err
}
return v, nil
}
type PastTrade struct {
Price string
Amount string
Timestamp string
Exchange string
Type string
FeeCurrency string `json:"fee_currency"`
FeeAmount string `json:"fee_amount"`
TID int64
OrderId int64 `json:"order_id,int"`
}
func (s *HistoryService) Trades(pair string, since, until time.Time, limit int, reverse bool) ([]PastTrade, error) {
payload := map[string]interface{}{"symbol": pair}
if !since.IsZero() {
payload["timestamp"] = since.Unix()
}
if !until.IsZero() {
payload["until"] = until.Unix()
}
if limit != 0 {
payload["limit_trades"] = limit
}
if reverse {
payload["reverse"] = 1
}
req, err := s.client.newAuthenticatedRequest("POST", "mytrades", payload)
if err != nil {
return nil, err
}
var v []PastTrade
_, err = s.client.do(req, &v)
if err != nil {
return nil, err
}
return v, nil
}