forked from nntaoli-project/goex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BitfinexMarginTrading.go
55 lines (46 loc) · 2.01 KB
/
BitfinexMarginTrading.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
package bitfinex
import . "github.com/YuxSccc/goex"
type MarginLimits struct {
Pair string `json:"on_pair"`
InitialMargin float64 `json:"initial_margin,string"`
MarginRequirement float64 `json:"margin_requirement,string"`
TradableBalance float64 `json:"tradable_balance,string"`
}
type MarginInfo struct {
MarginBalance float64 `json:"margin_balance,string"`
TradableBalance float64 `json:"tradable_balance,string"`
UnrealizedPl float64 `json:"unrealized_pl,string"`
UnrealizedSwap float64 `json:"unrealized_swap,string"`
NetValue float64 `json:"net_value,string"`
RequiredMargin float64 `json:"required_margin,string"`
Leverage float64 `json:"leverage,string"`
MarginRequirement float64 `json:"margin_requirement,string"`
MarginLimits []MarginLimits `json:"margin_limits"`
}
func (bfx *Bitfinex) GetMarginTradingWalletBalance() (*Account, error) {
balancemap, err := bfx.GetWalletBalances()
if err != nil {
return nil, err
}
return balancemap["trading"], nil
}
func (bfx *Bitfinex) MarginLimitBuy(amount, price string, currencyPair CurrencyPair) (*Order, error) {
return bfx.placeOrder("limit", "buy", amount, price, currencyPair)
}
func (bfx *Bitfinex) MarginLimitSell(amount, price string, currencyPair CurrencyPair) (*Order, error) {
return bfx.placeOrder("limit", "sell", amount, price, currencyPair)
}
func (bfx *Bitfinex) MarginMarketBuy(amount, price string, currencyPair CurrencyPair) (*Order, error) {
return bfx.placeOrder("Market", "buy", amount, price, currencyPair)
}
func (bfx *Bitfinex) MarginMarketSell(amount, price string, currencyPair CurrencyPair) (*Order, error) {
return bfx.placeOrder("Market", "sell", amount, price, currencyPair)
}
func (bfx *Bitfinex) GetMarginInfos() ([]MarginInfo, error) {
var marginInfo []MarginInfo
err := bfx.doAuthenticatedRequest("POST", "margin_infos", map[string]interface{}{}, &marginInfo)
if err != nil {
return nil, err
}
return marginInfo, nil
}