binance-connector-ruby 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +224 -0
- data/lib/binance/authentication.rb +13 -0
- data/lib/binance/error.rb +28 -0
- data/lib/binance/session.rb +106 -0
- data/lib/binance/spot/blvt.rb +104 -0
- data/lib/binance/spot/bswap.rb +217 -0
- data/lib/binance/spot/c2c.rb +27 -0
- data/lib/binance/spot/fiat.rb +49 -0
- data/lib/binance/spot/futures.rb +357 -0
- data/lib/binance/spot/loan.rb +26 -0
- data/lib/binance/spot/margin.rb +676 -0
- data/lib/binance/spot/market.rb +220 -0
- data/lib/binance/spot/mining.rb +243 -0
- data/lib/binance/spot/savings.rb +269 -0
- data/lib/binance/spot/stream.rb +61 -0
- data/lib/binance/spot/subaccount.rb +553 -0
- data/lib/binance/spot/trade.rb +294 -0
- data/lib/binance/spot/wallet.rb +316 -0
- data/lib/binance/spot/websocket.rb +147 -0
- data/lib/binance/spot.rb +61 -0
- data/lib/binance/utils/faraday/custom_params_encoder.rb +78 -0
- data/lib/binance/utils/faraday/middleware/signature.rb +21 -0
- data/lib/binance/utils/faraday/middleware/timestamp.rb +20 -0
- data/lib/binance/utils/faraday/middleware.rb +4 -0
- data/lib/binance/utils/url.rb +26 -0
- data/lib/binance/utils/validation.rb +26 -0
- data/lib/binance/version.rb +5 -0
- data/lib/binance/websocket_base.rb +84 -0
- data/lib/binance.rb +5 -0
- metadata +161 -0
@@ -0,0 +1,217 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# Bswap endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#bswap-endpoints
|
7
|
+
module Bswap
|
8
|
+
# List All Swap Pools (MARKET_DATA)
|
9
|
+
#
|
10
|
+
# GET /sapi/v1/bswap/pools
|
11
|
+
#
|
12
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#list-all-swap-pools-market_data
|
13
|
+
def swap_pools
|
14
|
+
@session.limit_request(path: '/sapi/v1/bswap/pools')
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get liquidity information of a pool (USER_DATA)
|
18
|
+
#
|
19
|
+
# GET /sapi/v1/bswap/liquidity
|
20
|
+
#
|
21
|
+
# @param kwargs [Hash]
|
22
|
+
# @option kwargs [Integer] :poolId
|
23
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
24
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-liquidity-information-of-a-pool-user_data
|
25
|
+
def get_liquidity_info(**kwargs)
|
26
|
+
@session.sign_request(:get, '/sapi/v1/bswap/liquidity', params: kwargs)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Add Liquidity (TRADE)
|
30
|
+
#
|
31
|
+
# POST /sapi/v1/bswap/liquidityAdd
|
32
|
+
#
|
33
|
+
# @param poolId [Integer]
|
34
|
+
# @param asset [String]
|
35
|
+
# @param quantity [Float]
|
36
|
+
# @param kwargs [Hash]
|
37
|
+
# @option kwargs [String] :type "Single" to add a single token; "Combination" to add dual tokens. Default "Single"
|
38
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
39
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#add-liquidity-trade
|
40
|
+
def add_liquidity(poolId:, asset:, quantity:, **kwargs)
|
41
|
+
Binance::Utils::Validation.require_param('poolId', poolId)
|
42
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
43
|
+
Binance::Utils::Validation.require_param('quantity', quantity)
|
44
|
+
|
45
|
+
@session.sign_request(:post, '/sapi/v1/bswap/liquidityAdd', params: kwargs.merge(
|
46
|
+
poolId: poolId,
|
47
|
+
asset: asset,
|
48
|
+
quantity: quantity
|
49
|
+
))
|
50
|
+
end
|
51
|
+
|
52
|
+
# Remove Liquidity (TRADE)
|
53
|
+
#
|
54
|
+
# POST /sapi/v1/bswap/liquidityRemove
|
55
|
+
#
|
56
|
+
# @param poolId [Integer]
|
57
|
+
# @param type [String] SINGLE for single asset removal, COMBINATION for combination of all coins removal
|
58
|
+
# @param shareAmount [Float]
|
59
|
+
# @param kwargs [Hash]
|
60
|
+
# @option kwargs [String Array] :asset Mandatory for single asset removal
|
61
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
62
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#remove-liquidity-trade
|
63
|
+
def remove_liquidity(poolId:, type:, shareAmount:, **kwargs)
|
64
|
+
Binance::Utils::Validation.require_param('poolId', poolId)
|
65
|
+
Binance::Utils::Validation.require_param('type', type)
|
66
|
+
Binance::Utils::Validation.require_param('shareAmount', shareAmount)
|
67
|
+
|
68
|
+
@session.sign_request(:post, '/sapi/v1/bswap/liquidityRemove', params: kwargs.merge(
|
69
|
+
poolId: poolId,
|
70
|
+
type: type,
|
71
|
+
shareAmount: shareAmount
|
72
|
+
))
|
73
|
+
end
|
74
|
+
|
75
|
+
# Get Liquidity Operation Record (USER_DATA)
|
76
|
+
#
|
77
|
+
# GET /sapi/v1/bswap/liquidityOps
|
78
|
+
#
|
79
|
+
# @param kwargs [Hash]
|
80
|
+
# @option kwargs [Integer] :operationId
|
81
|
+
# @option kwargs [Integer] :poolId
|
82
|
+
# @option kwargs [String] :operation ADD or REMOVE
|
83
|
+
# @option kwargs [Integer] :startTime
|
84
|
+
# @option kwargs [Integer] :endTime
|
85
|
+
# @option kwargs [Integer] :limit default 3, max 100
|
86
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
87
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-liquidity-operation-record-user_data
|
88
|
+
def get_liquidity_operation_record(**kwargs)
|
89
|
+
@session.sign_request(:get, '/sapi/v1/bswap/liquidityOps', params: kwargs)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Request Quote (USER_DATA)
|
93
|
+
#
|
94
|
+
# GET /sapi/v1/bswap/quote
|
95
|
+
#
|
96
|
+
# @param quoteAsset [String]
|
97
|
+
# @param baseAsset [String]
|
98
|
+
# @param quoteQty [Float]
|
99
|
+
# @param kwargs [Hash]
|
100
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
101
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#request-quote-user_data
|
102
|
+
def request_quote(quoteAsset:, baseAsset:, quoteQty:, **kwargs)
|
103
|
+
Binance::Utils::Validation.require_param('quoteAsset', quoteAsset)
|
104
|
+
Binance::Utils::Validation.require_param('baseAsset', baseAsset)
|
105
|
+
Binance::Utils::Validation.require_param('quoteQty', quoteQty)
|
106
|
+
|
107
|
+
@session.sign_request(:get, '/sapi/v1/bswap/quote', params: kwargs.merge(
|
108
|
+
quoteAsset: quoteAsset,
|
109
|
+
baseAsset: baseAsset,
|
110
|
+
quoteQty: quoteQty
|
111
|
+
))
|
112
|
+
end
|
113
|
+
|
114
|
+
# Swap (TRADE)
|
115
|
+
#
|
116
|
+
# POST /sapi/v1/bswap/swap
|
117
|
+
#
|
118
|
+
# @param quoteAsset [String]
|
119
|
+
# @param baseAsset [String]
|
120
|
+
# @param quoteQty [Float]
|
121
|
+
# @param [Hash] kwargs
|
122
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
123
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#swap-trade
|
124
|
+
def swap(quoteAsset:, baseAsset:, quoteQty:, **kwargs)
|
125
|
+
Binance::Utils::Validation.require_param('quoteAsset', quoteAsset)
|
126
|
+
Binance::Utils::Validation.require_param('baseAsset', baseAsset)
|
127
|
+
Binance::Utils::Validation.require_param('quoteQty', quoteQty)
|
128
|
+
|
129
|
+
@session.sign_request(:post, '/sapi/v1/bswap/swap', params: kwargs.merge(
|
130
|
+
quoteAsset: quoteAsset,
|
131
|
+
baseAsset: baseAsset,
|
132
|
+
quoteQty: quoteQty
|
133
|
+
))
|
134
|
+
end
|
135
|
+
|
136
|
+
# Get Swap History (USER_DATA)
|
137
|
+
#
|
138
|
+
# GET /sapi/v1/bswap/swap
|
139
|
+
#
|
140
|
+
# @param kwargs [Hash]
|
141
|
+
# @option kwargs [Integer] :swapId
|
142
|
+
# @option kwargs [Integer] :startTime
|
143
|
+
# @option kwargs [Integer] :endTime
|
144
|
+
# @option kwargs [Integer] :status 0: pending for swap, 1: success, 2: failed
|
145
|
+
# @option kwargs [String] :quoteAsset
|
146
|
+
# @option kwargs [String] :baseAsset
|
147
|
+
# @option kwargs [Integer] :limit
|
148
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
149
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-swap-history-user_data
|
150
|
+
def get_swap_history(**kwargs)
|
151
|
+
@session.sign_request(:get, '/sapi/v1/bswap/swap', params: kwargs)
|
152
|
+
end
|
153
|
+
|
154
|
+
# Get Pool Configure (USER_DATA)
|
155
|
+
#
|
156
|
+
# GET /sapi/v1/bswap/poolConfigure
|
157
|
+
#
|
158
|
+
# @param kwargs [Hash]
|
159
|
+
# @option kwargs [Integer] :poolId
|
160
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
161
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-pool-configure-user_data
|
162
|
+
def get_pool_config(**kwargs)
|
163
|
+
@session.sign_request(:get, '/sapi/v1/bswap/poolConfigure', params: kwargs)
|
164
|
+
end
|
165
|
+
|
166
|
+
# Add Liquidity Preview (USER_DATA)
|
167
|
+
#
|
168
|
+
# GET /sapi/v1/bswap/addLiquidityPreview
|
169
|
+
#
|
170
|
+
# @param poolId [Integer]
|
171
|
+
# @param type [String] "SINGLE" for adding a single token; "COMBINATION" for adding dual tokens
|
172
|
+
# @param quoteAsset [String]
|
173
|
+
# @param quoteQty [Float]
|
174
|
+
# @param [Hash] kwargs
|
175
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
176
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#add-liquidity-preview-user_data
|
177
|
+
def add_liquidity_preview(poolId:, type:, quoteAsset:, quoteQty:, **kwargs)
|
178
|
+
Binance::Utils::Validation.require_param('poolId', poolId)
|
179
|
+
Binance::Utils::Validation.require_param('type', type)
|
180
|
+
Binance::Utils::Validation.require_param('quoteAsset', quoteAsset)
|
181
|
+
Binance::Utils::Validation.require_param('quoteQty', quoteQty)
|
182
|
+
|
183
|
+
@session.sign_request(:get, '/sapi/v1/bswap/addLiquidityPreview', params: kwargs.merge(
|
184
|
+
poolId: poolId,
|
185
|
+
type: type,
|
186
|
+
quoteAsset: quoteAsset,
|
187
|
+
quoteQty: quoteQty
|
188
|
+
))
|
189
|
+
end
|
190
|
+
|
191
|
+
# Remove Liquidity Preview (USER_DATA)
|
192
|
+
#
|
193
|
+
# GET /sapi/v1/bswap/removeLiquidityPreview
|
194
|
+
#
|
195
|
+
# @param poolId [Integer]
|
196
|
+
# @param type [String] "SINGLE" for removing a single token; "COMBINATION" for removing dual tokens
|
197
|
+
# @param quoteAsset [String]
|
198
|
+
# @param shareAmount [Float]
|
199
|
+
# @param [Hash] kwargs
|
200
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
201
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#remove-liquidity-preview-user_data
|
202
|
+
def remove_liquidity_preview(poolId:, type:, quoteAsset:, shareAmount:, **kwargs)
|
203
|
+
Binance::Utils::Validation.require_param('poolId', poolId)
|
204
|
+
Binance::Utils::Validation.require_param('type', type)
|
205
|
+
Binance::Utils::Validation.require_param('quoteAsset', quoteAsset)
|
206
|
+
Binance::Utils::Validation.require_param('shareAmount', shareAmount)
|
207
|
+
|
208
|
+
@session.sign_request(:get, '/sapi/v1/bswap/removeLiquidityPreview', params: kwargs.merge(
|
209
|
+
poolId: poolId,
|
210
|
+
type: type,
|
211
|
+
quoteAsset: quoteAsset,
|
212
|
+
shareAmount: shareAmount
|
213
|
+
))
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# C2C endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#c2c-endpoints
|
7
|
+
module C2C
|
8
|
+
# Get C2C Trade History (USER_DATA)
|
9
|
+
#
|
10
|
+
# GET /sapi/v1/c2c/orderMatch/listUserOrderHistory
|
11
|
+
#
|
12
|
+
# @param tradeType [String]
|
13
|
+
# @option kwargs [Integer] :startTimestamp
|
14
|
+
# @option kwargs [Integer] :endTimestamp
|
15
|
+
# @option kwargs [Integer] :page
|
16
|
+
# @option kwargs [Integer] :rows
|
17
|
+
# @option kwargs [Integer] :recvWindow
|
18
|
+
# @option kwargs [Integer] :timestamp
|
19
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-c2c-trade-history-user_data
|
20
|
+
def c2c_trade_history(tradeType:, **kwargs)
|
21
|
+
Binance::Utils::Validation.require_param('tradeType', tradeType)
|
22
|
+
|
23
|
+
@session.sign_request(:get, '/sapi/v1/c2c/orderMatch/listUserOrderHistory', params: kwargs.merge(tradeType: tradeType))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# Fiat endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#fiat-endpoints
|
7
|
+
module Fiat
|
8
|
+
# Get Fiat Deposit/Withdraw History (USER_DATA)
|
9
|
+
#
|
10
|
+
# GET /sapi/v1/fiat/orders
|
11
|
+
#
|
12
|
+
# @param transactionType [String] 0-deposit,1-withdraw
|
13
|
+
# @param kwargs [Hash]
|
14
|
+
# @option kwargs [Integer] :beginTime If beginTime and endTime are not sent, the recent 30-day data will be returned.
|
15
|
+
# @option kwargs [Integer] :endTime If beginTime and endTime are not sent, the recent 30-day data will be returned.
|
16
|
+
# @option kwargs [Integer] :page default 1
|
17
|
+
# @option kwargs [Integer] :rows default 100, max 500
|
18
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
19
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-fiat-deposit-withdraw-history-user_data
|
20
|
+
def fiat_deposit_withdraw_history(transactionType:, **kwargs)
|
21
|
+
Binance::Utils::Validation.require_param('transactionType', transactionType)
|
22
|
+
|
23
|
+
@session.sign_request(:get, '/sapi/v1/fiat/orders', params: kwargs.merge(
|
24
|
+
transactionType: transactionType
|
25
|
+
))
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get Fiat Payments History (USER_DATA)
|
29
|
+
#
|
30
|
+
# GET /sapi/v1/fiat/payments
|
31
|
+
#
|
32
|
+
# @param transactionType [String] 0-buy,1-sell
|
33
|
+
# @param kwargs [Hash]
|
34
|
+
# @option kwargs [Integer] :beginTime If beginTime and endTime are not sent, the recent 30-day data will be returned.
|
35
|
+
# @option kwargs [Integer] :endTime If beginTime and endTime are not sent, the recent 30-day data will be returned.
|
36
|
+
# @option kwargs [Integer] :page default 1
|
37
|
+
# @option kwargs [Integer] :rows default 100, max 500
|
38
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
39
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-fiat-payments-history-user_data
|
40
|
+
def fiat_payment_history(transactionType:, **kwargs)
|
41
|
+
Binance::Utils::Validation.require_param('transactionType', transactionType)
|
42
|
+
|
43
|
+
@session.sign_request(:get, '/sapi/v1/fiat/payments', params: kwargs.merge(
|
44
|
+
transactionType: transactionType
|
45
|
+
))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,357 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# Futures endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#futures
|
7
|
+
module Futures
|
8
|
+
# New Future Account Transfer (USER_DATA)
|
9
|
+
#
|
10
|
+
# POST /sapi/v1/futures/transfer
|
11
|
+
#
|
12
|
+
# Execute transfer between spot account and futures account.
|
13
|
+
#
|
14
|
+
# @param asset [String]
|
15
|
+
# @param amount [Float]
|
16
|
+
# @param type [Integer] 1: transfer from spot account to USDT-M futures account. <br>
|
17
|
+
# 2: transfer from USDT-M futures account to spot account. <br>
|
18
|
+
# 3: transfer from spot account to COIN-M futures account. <br>
|
19
|
+
# 4: transfer from COIN-M futures account to spot account. <br>
|
20
|
+
# @param kwargs [Hash]
|
21
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
22
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#new-future-account-transfer-user_data
|
23
|
+
def futures_account_transfer(asset:, amount:, type:, **kwargs)
|
24
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
25
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
26
|
+
Binance::Utils::Validation.require_param('type', type)
|
27
|
+
|
28
|
+
@session.sign_request(:post, '/sapi/v1/futures/transfer', params: kwargs.merge(
|
29
|
+
asset: asset,
|
30
|
+
amount: amount,
|
31
|
+
type: type
|
32
|
+
))
|
33
|
+
end
|
34
|
+
|
35
|
+
# Get Future Account Transaction History List (USER_DATA)
|
36
|
+
#
|
37
|
+
# GET /sapi/v1/futures/transfer
|
38
|
+
#
|
39
|
+
# @param asset [String]
|
40
|
+
# @param startTime [Integer]
|
41
|
+
# @param kwargs [Hash]
|
42
|
+
# @option kwargs [Integer] :endTime
|
43
|
+
# @option kwargs [Integer] :current Currently querying page. Start from 1. Default:1
|
44
|
+
# @option kwargs [Integer] :size Default:10 Max:100
|
45
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
46
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-future-account-transaction-history-list-user_data
|
47
|
+
def futures_account_transfer_history(asset:, startTime:, **kwargs)
|
48
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
49
|
+
Binance::Utils::Validation.require_param('startTime', startTime)
|
50
|
+
|
51
|
+
@session.sign_request(:get, '/sapi/v1/futures/transfer', params: kwargs.merge(
|
52
|
+
asset: asset,
|
53
|
+
startTime: startTime
|
54
|
+
))
|
55
|
+
end
|
56
|
+
|
57
|
+
# Borrow For Cross-Collateral (TRADE)
|
58
|
+
#
|
59
|
+
# POST /sapi/v1/futures/loan/borrow
|
60
|
+
#
|
61
|
+
# @param coin [String]
|
62
|
+
# @param collateralCoin [String]
|
63
|
+
# @param kwargs [Hash]
|
64
|
+
# @option kwargs [Float] :amount Mandatory when collateralAmount is empty.
|
65
|
+
# @option kwargs [Float] :collateralAmount Mandatory when amount is empty.
|
66
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
67
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#borrow-for-cross-collateral-trade
|
68
|
+
def cross_collateral_borrow(coin:, collateralCoin:, **kwargs)
|
69
|
+
Binance::Utils::Validation.require_param('coin', coin)
|
70
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
71
|
+
|
72
|
+
@session.sign_request(:post, '/sapi/v1/futures/loan/borrow', params: kwargs.merge(
|
73
|
+
coin: coin,
|
74
|
+
collateralCoin: collateralCoin
|
75
|
+
))
|
76
|
+
end
|
77
|
+
|
78
|
+
# Cross-Collateral Borrow History (USER_DATA)
|
79
|
+
#
|
80
|
+
# GET /sapi/v1/futures/loan/borrow/history
|
81
|
+
#
|
82
|
+
# @param kwargs [Hash]
|
83
|
+
# @option kwargs [String] :coin
|
84
|
+
# @option kwargs [Integer] :startTime
|
85
|
+
# @option kwargs [Integer] :endTime
|
86
|
+
# @option kwargs [Integer] :limit default 500, max 1000
|
87
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
88
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-borrow-history-user_data
|
89
|
+
def cross_collateral_borrow_history(**kwargs)
|
90
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/borrow/history', params: kwargs)
|
91
|
+
end
|
92
|
+
|
93
|
+
# Repay For Cross-Collateral (TRADE)
|
94
|
+
#
|
95
|
+
# POST /sapi/v1/futures/loan/repay
|
96
|
+
#
|
97
|
+
# @param coin [String]
|
98
|
+
# @param collateralCoin [String]
|
99
|
+
# @param amount [Float]
|
100
|
+
# @param kwargs [Hash]
|
101
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
102
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#repay-for-cross-collateral-trade
|
103
|
+
def cross_collateral_repay(coin:, collateralCoin:, amount:, **kwargs)
|
104
|
+
Binance::Utils::Validation.require_param('coin', coin)
|
105
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
106
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
107
|
+
|
108
|
+
@session.sign_request(:post, '/sapi/v1/futures/loan/repay', params: kwargs.merge(
|
109
|
+
coin: coin,
|
110
|
+
collateralCoin: collateralCoin,
|
111
|
+
amount: amount
|
112
|
+
))
|
113
|
+
end
|
114
|
+
|
115
|
+
# Cross-Collateral Repayment History (USER_DATA)
|
116
|
+
#
|
117
|
+
# GET /sapi/v1/futures/loan/repay/history
|
118
|
+
#
|
119
|
+
# @param kwargs [Hash]
|
120
|
+
# @option kwargs [String] :coin
|
121
|
+
# @option kwargs [Integer] :startTime
|
122
|
+
# @option kwargs [Integer] :endTime
|
123
|
+
# @option kwargs [Integer] :limit default 500, max 1000
|
124
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
125
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-repayment-history-user_data
|
126
|
+
def cross_collateral_repay_history(**kwargs)
|
127
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/repay/history', params: kwargs)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Cross-Collateral Wallet (USER_DATA)
|
131
|
+
#
|
132
|
+
# GET /sapi/v2/futures/loan/wallet
|
133
|
+
#
|
134
|
+
# @param kwargs [Hash]
|
135
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
136
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-wallet-v2-user_data
|
137
|
+
def cross_collateral_wallet(**kwargs)
|
138
|
+
@session.sign_request(:get, '/sapi/v2/futures/loan/wallet', params: kwargs)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Cross-Collateral Information (USER_DATA)
|
142
|
+
#
|
143
|
+
# GET /sapi/v2/futures/loan/configs
|
144
|
+
#
|
145
|
+
# @param kwargs [Hash]
|
146
|
+
# @option kwargs [String] :loanCoin
|
147
|
+
# @option kwargs [String] :collateralCoin
|
148
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
149
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-information-v2-user_data
|
150
|
+
def cross_collateral_info(**kwargs)
|
151
|
+
@session.sign_request(:get, '/sapi/v2/futures/loan/configs', params: kwargs)
|
152
|
+
end
|
153
|
+
|
154
|
+
# Calculate Rate After Adjust Cross-Collateral LTV (USER_DATA)
|
155
|
+
#
|
156
|
+
# GET /sapi/v2/futures/loan/calcAdjustLevel
|
157
|
+
#
|
158
|
+
# @param loanCoin [String]
|
159
|
+
# @param collateralCoin [String]
|
160
|
+
# @param amount [Float]
|
161
|
+
# @param direction [String] "ADDITIONAL", "REDUCED"
|
162
|
+
# @param kwargs [Hash]
|
163
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
164
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#calculate-rate-after-adjust-cross-collateral-ltv-v2-user_data
|
165
|
+
def calculate_adjust_rate(loanCoin:, collateralCoin:, amount:, direction:, **kwargs)
|
166
|
+
Binance::Utils::Validation.require_param('loanCoin', loanCoin)
|
167
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
168
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
169
|
+
Binance::Utils::Validation.require_param('direction', direction)
|
170
|
+
|
171
|
+
@session.sign_request(:get, '/sapi/v2/futures/loan/calcAdjustLevel', params: kwargs.merge(
|
172
|
+
loanCoin: loanCoin,
|
173
|
+
collateralCoin: collateralCoin,
|
174
|
+
amount: amount,
|
175
|
+
direction: direction
|
176
|
+
))
|
177
|
+
end
|
178
|
+
|
179
|
+
# Get Max Amount for Adjust Cross-Collateral LTV (USER_DATA)
|
180
|
+
#
|
181
|
+
# GET /sapi/v2/futures/loan/calcMaxAdjustAmount
|
182
|
+
#
|
183
|
+
# @param loanCoin [String]
|
184
|
+
# @param collateralCoin [String]
|
185
|
+
# @param kwargs [Hash]
|
186
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
187
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-max-amount-for-adjust-cross-collateral-ltv-v2-user_data
|
188
|
+
def calculate_adjust_max_amount(loanCoin:, collateralCoin:, **kwargs)
|
189
|
+
Binance::Utils::Validation.require_param('loanCoin', loanCoin)
|
190
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
191
|
+
|
192
|
+
@session.sign_request(:get, '/sapi/v2/futures/loan/calcMaxAdjustAmount', params: kwargs.merge(
|
193
|
+
loanCoin: loanCoin,
|
194
|
+
collateralCoin: collateralCoin
|
195
|
+
))
|
196
|
+
end
|
197
|
+
|
198
|
+
# Adjust Cross-Collateral LTV (TRADE)
|
199
|
+
#
|
200
|
+
# POST /sapi/v2/futures/loan/adjustCollateral
|
201
|
+
#
|
202
|
+
# @param loanCoin [String]
|
203
|
+
# @param collateralCoin [String]
|
204
|
+
# @param amount [Float]
|
205
|
+
# @param direction [String] "ADDITIONAL", "REDUCED"
|
206
|
+
# @param kwargs [Hash]
|
207
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
208
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#adjust-cross-collateral-ltv-v2-trade
|
209
|
+
def adjust_cross_collateral(loanCoin:, collateralCoin:, amount:, direction:, **kwargs)
|
210
|
+
Binance::Utils::Validation.require_param('loanCoin', loanCoin)
|
211
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
212
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
213
|
+
Binance::Utils::Validation.require_param('direction', direction)
|
214
|
+
|
215
|
+
@session.sign_request(:post, '/sapi/v2/futures/loan/adjustCollateral', params: kwargs.merge(
|
216
|
+
loanCoin: loanCoin,
|
217
|
+
collateralCoin: collateralCoin,
|
218
|
+
amount: amount,
|
219
|
+
direction: direction
|
220
|
+
))
|
221
|
+
end
|
222
|
+
|
223
|
+
# Adjust Cross-Collateral LTV History (USER_DATA)
|
224
|
+
#
|
225
|
+
# GET /sapi/v1/futures/loan/adjustCollateral/history
|
226
|
+
#
|
227
|
+
# All data will be returned if loanCoin or collateralCoin is not sent
|
228
|
+
#
|
229
|
+
# @param kwargs [Hash]
|
230
|
+
# @option kwargs [String] :loanCoin
|
231
|
+
# @option kwargs [String] :collateralCoin
|
232
|
+
# @option kwargs [Integer] :startTime
|
233
|
+
# @option kwargs [Integer] :endTime
|
234
|
+
# @option kwargs [Integer] :limit default 500, max 1000
|
235
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
236
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#adjust-cross-collateral-ltv-history-user_data
|
237
|
+
def adjust_cross_collateral_history(**kwargs)
|
238
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/adjustCollateral/history', params: kwargs)
|
239
|
+
end
|
240
|
+
|
241
|
+
# Cross-Collateral Liquidation History (USER_DATA)
|
242
|
+
#
|
243
|
+
# GET /sapi/v1/futures/loan/liquidationHistory
|
244
|
+
#
|
245
|
+
# All data will be returned if loanCoin or collateralCoin is not sent
|
246
|
+
#
|
247
|
+
# @param kwargs [Hash]
|
248
|
+
# @option kwargs [String] :loanCoin
|
249
|
+
# @option kwargs [String] :collateralCoin
|
250
|
+
# @option kwargs [Integer] :startTime
|
251
|
+
# @option kwargs [Integer] :endTime
|
252
|
+
# @option kwargs [Integer] :limit default 500, max 1000
|
253
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
254
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-liquidation-history-user_data
|
255
|
+
def cross_collateral_liquidation_history(**kwargs)
|
256
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/liquidationHistory', params: kwargs)
|
257
|
+
end
|
258
|
+
|
259
|
+
# Check Collateral Repay Limit (USER_DATA)
|
260
|
+
#
|
261
|
+
# GET /sapi/v1/futures/loan/collateralRepayLimit
|
262
|
+
#
|
263
|
+
# Check the maximum and minimum limit when repay with collateral.
|
264
|
+
#
|
265
|
+
# @param coin [String]
|
266
|
+
# @param collateralCoin [String]
|
267
|
+
# @param kwargs [Hash]
|
268
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
269
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#check-collateral-repay-limit-user_data
|
270
|
+
def collateral_repay_limit(coin:, collateralCoin:, **kwargs)
|
271
|
+
Binance::Utils::Validation.require_param('coin', coin)
|
272
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
273
|
+
|
274
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/collateralRepayLimit', params: kwargs.merge(
|
275
|
+
coin: coin,
|
276
|
+
collateralCoin: collateralCoin
|
277
|
+
))
|
278
|
+
end
|
279
|
+
|
280
|
+
# Get Collateral Repay Quote (USER_DATA)
|
281
|
+
#
|
282
|
+
# GET /sapi/v1/futures/loan/collateralRepay
|
283
|
+
#
|
284
|
+
# Get quote before repay with collateral is mandatory, the quote will be valid within 25 seconds.
|
285
|
+
#
|
286
|
+
# @param coin [String]
|
287
|
+
# @param collateralCoin [String]
|
288
|
+
# @param amount [Float]
|
289
|
+
# @param kwargs [Hash]
|
290
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
291
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-collateral-repay-quote-user_data
|
292
|
+
def collateral_repay_quote(coin:, collateralCoin:, amount:, **kwargs)
|
293
|
+
Binance::Utils::Validation.require_param('coin', coin)
|
294
|
+
Binance::Utils::Validation.require_param('collateralCoin', collateralCoin)
|
295
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
296
|
+
|
297
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/collateralRepay', params: kwargs.merge(
|
298
|
+
coin: coin,
|
299
|
+
collateralCoin: collateralCoin,
|
300
|
+
amount: amount
|
301
|
+
))
|
302
|
+
end
|
303
|
+
|
304
|
+
# Repay with Collateral (USER_DATA)
|
305
|
+
#
|
306
|
+
# POST /sapi/v1/futures/loan/collateralRepay
|
307
|
+
#
|
308
|
+
# Repay with collateral. Get quote before repay with collateral is mandatory, the quote will be valid within 25 seconds.
|
309
|
+
#
|
310
|
+
# @param quoteId [String]
|
311
|
+
# @param kwargs [Hash]
|
312
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
313
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#repay-with-collateral-user_data
|
314
|
+
def repay_with_collateral(quoteId:, **kwargs)
|
315
|
+
Binance::Utils::Validation.require_param('quoteId', quoteId)
|
316
|
+
|
317
|
+
@session.sign_request(:post, '/sapi/v1/futures/loan/collateralRepay', params: kwargs.merge(
|
318
|
+
quoteId: quoteId
|
319
|
+
))
|
320
|
+
end
|
321
|
+
|
322
|
+
# Collateral Repayment Result (USER_DATA)
|
323
|
+
#
|
324
|
+
# GET /sapi/v1/futures/loan/collateralRepayResult
|
325
|
+
#
|
326
|
+
# Check collateral repayment result.
|
327
|
+
#
|
328
|
+
# @param quoteId [String]
|
329
|
+
# @param kwargs [Hash]
|
330
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
331
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#collateral-repayment-result-user_data
|
332
|
+
def repayment_result(quoteId:, **kwargs)
|
333
|
+
Binance::Utils::Validation.require_param('quoteId', quoteId)
|
334
|
+
|
335
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/collateralRepayResult', params: kwargs.merge(
|
336
|
+
quoteId: quoteId
|
337
|
+
))
|
338
|
+
end
|
339
|
+
|
340
|
+
# Cross-Collateral Interest History (USER_DATA)
|
341
|
+
#
|
342
|
+
# GET /sapi/v1/futures/loan/interestHistory
|
343
|
+
#
|
344
|
+
# @param kwargs [Hash]
|
345
|
+
# @option kwargs [String] :collateralCoin
|
346
|
+
# @option kwargs [Integer] :startTime
|
347
|
+
# @option kwargs [Integer] :endTime
|
348
|
+
# @option kwargs [Integer] :current Currently querying page. Start from 1. Default:1
|
349
|
+
# @option kwargs [Integer] :limit default 500, max 1000
|
350
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
351
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#cross-collateral-interest-history-user_data
|
352
|
+
def cross_collateral_interest_history(**kwargs)
|
353
|
+
@session.sign_request(:get, '/sapi/v1/futures/loan/interestHistory', params: kwargs)
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# all loan endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#crypto-loans-endpoints
|
7
|
+
module Loan
|
8
|
+
# Get Crypto Loans Income History (USER_DATA)
|
9
|
+
#
|
10
|
+
# GET /sapi/v1/loan/income
|
11
|
+
#
|
12
|
+
# @param asset [String]
|
13
|
+
# @option kwargs [String] :type
|
14
|
+
# @option kwargs [Integer] :startTime
|
15
|
+
# @option kwargs [Integer] :endTime
|
16
|
+
# @option kwargs [Integer] :limit default 20, max 100
|
17
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
18
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-crypto-loans-income-history-user_data
|
19
|
+
def get_loan_history(asset:, **kwargs)
|
20
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
21
|
+
|
22
|
+
@session.sign_request(:get, '/sapi/v1/loan/income', params: kwargs.merge(asset: asset))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|