|
|
@@ -1,27 +1,38 @@
|
|
|
-const Tik = require('./kit/BinanceTik')
|
|
|
-const HttpKit = require('./kit/HttpKit')
|
|
|
+const Tik = require('../../kit/BinanceTik')
|
|
|
+const HttpKit = require('../../kit/HttpKit')
|
|
|
+const MyKit = require('../../kit/MyKit.js')
|
|
|
const HTTPRequest = require('request')
|
|
|
-const MyKit = require('./kit/MyKit.js')
|
|
|
|
|
|
const isDev = process.env.USER === 'skyfffire'
|
|
|
+const proxy = 'http://localhost:9080'
|
|
|
|
|
|
class BinanceSpot {
|
|
|
- constructor (apiKey, secretKey) {
|
|
|
- this.baseURL = 'https://api.binance.com'
|
|
|
+ static BASE_URL = 'https://api.binance.com'
|
|
|
+ static TRADE_TYPE = {
|
|
|
+ MARKET: 'MARKET'
|
|
|
+ }
|
|
|
+ static TRADE_SIDE = {
|
|
|
+ BUY: 'buy',
|
|
|
+ SELL: 'sell'
|
|
|
+ }
|
|
|
+ static PRICE = {
|
|
|
+ MARKET: -1
|
|
|
+ }
|
|
|
+ static NETWORK = {
|
|
|
+ BSC: 'BSC'
|
|
|
+ }
|
|
|
+ static BASE_TOKEN = {
|
|
|
+ BUSD: 'BUSD'
|
|
|
+ }
|
|
|
+
|
|
|
+ constructor(apiKey, secretKey) {
|
|
|
this.apiKey = apiKey
|
|
|
this.secretKey = secretKey
|
|
|
this.tik = new Tik()
|
|
|
}
|
|
|
|
|
|
- async exchangeInfo () {
|
|
|
- const url = this.baseURL + '/api/v3/exchangeInfo'
|
|
|
-
|
|
|
- const { data: rst } = await HttpKit.get(url)
|
|
|
- return rst
|
|
|
- }
|
|
|
-
|
|
|
- async price (symbol='BNBUSDT', side = 'sell') {
|
|
|
- const url = `${this.baseURL}/api/v3/depth?symbol=${symbol}&limit=${5}`
|
|
|
+ async static realPrice(symbol='BNB_USDT', side=BinanceSpot.TRADE_SIDE.BUY) {
|
|
|
+ const url = `${BinanceSpot.BASE_URL}/api/v3/depth?symbol=${symbol}&limit=${5}`
|
|
|
|
|
|
const { data: rst } = await HttpKit.get(url)
|
|
|
|
|
|
@@ -36,8 +47,15 @@ class BinanceSpot {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async accountInfo () {
|
|
|
- const url = this.baseURL + '/api/v3/account'
|
|
|
+ async exchangeInfo() {
|
|
|
+ const url = `${BinanceSpot.BASE_URL}/api/v3/exchangeInfo`
|
|
|
+
|
|
|
+ const { data: rst } = await HttpKit.get(url)
|
|
|
+ return rst
|
|
|
+ }
|
|
|
+
|
|
|
+ async accountInfo() {
|
|
|
+ const url = `${BinanceSpot.BASE_URL}/api/v3/account`
|
|
|
let timestamp = new Date().getTime()
|
|
|
let data = {
|
|
|
timestamp: timestamp
|
|
|
@@ -52,11 +70,9 @@ class BinanceSpot {
|
|
|
return rst
|
|
|
}
|
|
|
|
|
|
- async withdraw (amount= -1,
|
|
|
- coin='BUSD',
|
|
|
- address='0xCfB3Cb29EeAE464ABD44E35d53e12c555705e824',
|
|
|
- network='BSC') {
|
|
|
- const url = this.baseURL + '/sapi/v1/capital/withdraw/apply'
|
|
|
+ async withdraw(amount, coin=BinanceSpot.BASE_TOKEN.BUSD,
|
|
|
+ address='0xCfB3Cb29EeAE464ABD44E35d53e12c555705e824', network=BinanceSpot.NETWORK.BSC) {
|
|
|
+ const url = `${BinanceSpot.BASE_URL}/sapi/v1/capital/withdraw/apply`
|
|
|
let timestamp = new Date().getTime()
|
|
|
let data = {
|
|
|
timestamp: timestamp,
|
|
|
@@ -76,13 +92,8 @@ class BinanceSpot {
|
|
|
return rst
|
|
|
}
|
|
|
|
|
|
- async takeOrder (symbol='BTC_USDT',
|
|
|
- price=-1,
|
|
|
- side='BUY',
|
|
|
- quantity=0.001,
|
|
|
- quoteOrderQty=10,
|
|
|
- type='MARKET') {
|
|
|
- const url = this.baseURL + '/api/v3/order'
|
|
|
+ async takeOrder(symbol='BTC_USDT', price, side, quantity, quoteOrderQty, type=BinanceSpot.TRADE_TYPE.MARKET) {
|
|
|
+ const url = `${BinanceSpot.BASE_URL}/api/v3/order`
|
|
|
let timestamp = new Date().getTime()
|
|
|
let data = {
|
|
|
timestamp: timestamp,
|
|
|
@@ -108,11 +119,8 @@ class BinanceSpot {
|
|
|
const params = {
|
|
|
url: finalQueryURL,
|
|
|
method: 'POST',
|
|
|
- headers: headers
|
|
|
- }
|
|
|
-
|
|
|
- if (isDev) {
|
|
|
- params.proxy = 'http://localhost:9080'
|
|
|
+ headers: headers,
|
|
|
+ proxy: isDev ? proxy : undefined
|
|
|
}
|
|
|
|
|
|
let finish = false
|
|
|
@@ -130,27 +138,27 @@ class BinanceSpot {
|
|
|
})
|
|
|
|
|
|
while (!finish) {
|
|
|
- await MyKit.sleep(500)
|
|
|
+ await MyKit.sleep(10)
|
|
|
}
|
|
|
|
|
|
return rst
|
|
|
}
|
|
|
|
|
|
- async buy (symbol, price, amount, type='MARKET') {
|
|
|
+ async buy(symbol, price, amount, type=BinanceSpot.TRADE_TYPE.MARKET) {
|
|
|
return await this.takeOrder(
|
|
|
symbol,
|
|
|
price,
|
|
|
- 'BUY',
|
|
|
+ BinanceSpot.TRADE_SIDE.BUY,
|
|
|
amount,
|
|
|
0,
|
|
|
type)
|
|
|
}
|
|
|
|
|
|
- async sell (symbol, price, amount, type='MARKET') {
|
|
|
+ async sell(symbol, price, amount, type=BinanceSpot.TRADE_TYPE.MARKET) {
|
|
|
return await this.takeOrder(
|
|
|
symbol,
|
|
|
price,
|
|
|
- 'SELL',
|
|
|
+ BinanceSpot.TRADE_SIDE.SELL,
|
|
|
amount,
|
|
|
0,
|
|
|
type)
|