396 lines
19 KiB
Go
396 lines
19 KiB
Go
package ccxt
|
|
|
|
// func (this *Exchange) Describe() map[string]interface{} {
|
|
// return map[string]interface{}{
|
|
// "id": nil,
|
|
// "name": nil,
|
|
// "countries": nil,
|
|
// "enableRateLimit": true,
|
|
// "rateLimit": 2000,
|
|
// "certified": false,
|
|
// "pro": false,
|
|
// "alias": false,
|
|
// "dex": false,
|
|
// "has": map[string]interface{}{
|
|
// "publicAPI": true,
|
|
// "privateAPI": true,
|
|
// "CORS": nil,
|
|
// "sandbox": nil,
|
|
// "spot": nil,
|
|
// "margin": nil,
|
|
// "swap": nil,
|
|
// "future": nil,
|
|
// "option": nil,
|
|
// "addMargin": nil,
|
|
// "borrowCrossMargin": nil,
|
|
// "borrowIsolatedMargin": nil,
|
|
// "borrowMargin": nil,
|
|
// "cancelAllOrders": nil,
|
|
// "cancelAllOrdersWs": nil,
|
|
// "cancelOrder": true,
|
|
// "cancelOrderWs": nil,
|
|
// "cancelOrders": nil,
|
|
// "cancelOrdersWs": nil,
|
|
// "closeAllPositions": nil,
|
|
// "closePosition": nil,
|
|
// "createDepositAddress": nil,
|
|
// "createLimitBuyOrder": nil,
|
|
// "createLimitBuyOrderWs": nil,
|
|
// "createLimitOrder": true,
|
|
// "createLimitOrderWs": nil,
|
|
// "createLimitSellOrder": nil,
|
|
// "createLimitSellOrderWs": nil,
|
|
// "createMarketBuyOrder": nil,
|
|
// "createMarketBuyOrderWs": nil,
|
|
// "createMarketBuyOrderWithCost": nil,
|
|
// "createMarketBuyOrderWithCostWs": nil,
|
|
// "createMarketOrder": true,
|
|
// "createMarketOrderWs": true,
|
|
// "createMarketOrderWithCost": nil,
|
|
// "createMarketOrderWithCostWs": nil,
|
|
// "createMarketSellOrder": nil,
|
|
// "createMarketSellOrderWs": nil,
|
|
// "createMarketSellOrderWithCost": nil,
|
|
// "createMarketSellOrderWithCostWs": nil,
|
|
// "createOrder": true,
|
|
// "createOrderWs": nil,
|
|
// "createOrders": nil,
|
|
// "createOrderWithTakeProfitAndStopLoss": nil,
|
|
// "createOrderWithTakeProfitAndStopLossWs": nil,
|
|
// "createPostOnlyOrder": nil,
|
|
// "createPostOnlyOrderWs": nil,
|
|
// "createReduceOnlyOrder": nil,
|
|
// "createReduceOnlyOrderWs": nil,
|
|
// "createStopLimitOrder": nil,
|
|
// "createStopLimitOrderWs": nil,
|
|
// "createStopLossOrder": nil,
|
|
// "createStopLossOrderWs": nil,
|
|
// "createStopMarketOrder": nil,
|
|
// "createStopMarketOrderWs": nil,
|
|
// "createStopOrder": nil,
|
|
// "createStopOrderWs": nil,
|
|
// "createTakeProfitOrder": nil,
|
|
// "createTakeProfitOrderWs": nil,
|
|
// "createTrailingAmountOrder": nil,
|
|
// "createTrailingAmountOrderWs": nil,
|
|
// "createTrailingPercentOrder": nil,
|
|
// "createTrailingPercentOrderWs": nil,
|
|
// "createTriggerOrder": nil,
|
|
// "createTriggerOrderWs": nil,
|
|
// "deposit": nil,
|
|
// "editOrder": "emulated",
|
|
// "editOrderWs": nil,
|
|
// "fetchAccounts": nil,
|
|
// "fetchBalance": true,
|
|
// "fetchBalanceWs": nil,
|
|
// "fetchBidsAsks": nil,
|
|
// "fetchBorrowInterest": nil,
|
|
// "fetchBorrowRate": nil,
|
|
// "fetchBorrowRateHistories": nil,
|
|
// "fetchBorrowRateHistory": nil,
|
|
// "fetchBorrowRates": nil,
|
|
// "fetchBorrowRatesPerSymbol": nil,
|
|
// "fetchCanceledAndClosedOrders": nil,
|
|
// "fetchCanceledOrders": nil,
|
|
// "fetchClosedOrder": nil,
|
|
// "fetchClosedOrders": nil,
|
|
// "fetchClosedOrdersWs": nil,
|
|
// "fetchConvertCurrencies": nil,
|
|
// "fetchConvertQuote": nil,
|
|
// "fetchConvertTrade": nil,
|
|
// "fetchConvertTradeHistory": nil,
|
|
// "fetchCrossBorrowRate": nil,
|
|
// "fetchCrossBorrowRates": nil,
|
|
// "fetchCurrencies": "emulated",
|
|
// "fetchCurrenciesWs": "emulated",
|
|
// "fetchDeposit": nil,
|
|
// "fetchDepositAddress": nil,
|
|
// "fetchDepositAddresses": nil,
|
|
// "fetchDepositAddressesByNetwork": nil,
|
|
// "fetchDeposits": nil,
|
|
// "fetchDepositsWithdrawals": nil,
|
|
// "fetchDepositsWs": nil,
|
|
// "fetchDepositWithdrawFee": nil,
|
|
// "fetchDepositWithdrawFees": nil,
|
|
// "fetchFundingHistory": nil,
|
|
// "fetchFundingRate": nil,
|
|
// "fetchFundingRateHistory": nil,
|
|
// "fetchFundingRates": nil,
|
|
// "fetchGreeks": nil,
|
|
// "fetchIndexOHLCV": nil,
|
|
// "fetchIsolatedBorrowRate": nil,
|
|
// "fetchIsolatedBorrowRates": nil,
|
|
// "fetchMarginAdjustmentHistory": nil,
|
|
// "fetchIsolatedPositions": nil,
|
|
// "fetchL2OrderBook": true,
|
|
// "fetchL3OrderBook": nil,
|
|
// "fetchLastPrices": nil,
|
|
// "fetchLedger": nil,
|
|
// "fetchLedgerEntry": nil,
|
|
// "fetchLeverage": nil,
|
|
// "fetchLeverages": nil,
|
|
// "fetchLeverageTiers": nil,
|
|
// "fetchLiquidations": nil,
|
|
// "fetchMarginMode": nil,
|
|
// "fetchMarginModes": nil,
|
|
// "fetchMarketLeverageTiers": nil,
|
|
// "fetchMarkets": true,
|
|
// "fetchMarketsWs": nil,
|
|
// "fetchMarkOHLCV": nil,
|
|
// "fetchMyLiquidations": nil,
|
|
// "fetchMySettlementHistory": nil,
|
|
// "fetchMyTrades": nil,
|
|
// "fetchMyTradesWs": nil,
|
|
// "fetchOHLCV": nil,
|
|
// "fetchOHLCVWs": nil,
|
|
// "fetchOpenInterest": nil,
|
|
// "fetchOpenInterestHistory": nil,
|
|
// "fetchOpenOrder": nil,
|
|
// "fetchOpenOrders": nil,
|
|
// "fetchOpenOrdersWs": nil,
|
|
// "fetchOption": nil,
|
|
// "fetchOptionChain": nil,
|
|
// "fetchOrder": nil,
|
|
// "fetchOrderBook": true,
|
|
// "fetchOrderBooks": nil,
|
|
// "fetchOrderBookWs": nil,
|
|
// "fetchOrders": nil,
|
|
// "fetchOrdersByStatus": nil,
|
|
// "fetchOrdersWs": nil,
|
|
// "fetchOrderTrades": nil,
|
|
// "fetchOrderWs": nil,
|
|
// "fetchPermissions": nil,
|
|
// "fetchPosition": nil,
|
|
// "fetchPositionHistory": nil,
|
|
// "fetchPositionsHistory": nil,
|
|
// "fetchPositionWs": nil,
|
|
// "fetchPositionMode": nil,
|
|
// "fetchPositions": nil,
|
|
// "fetchPositionsWs": nil,
|
|
// "fetchPositionsForSymbol": nil,
|
|
// "fetchPositionsForSymbolWs": nil,
|
|
// "fetchPositionsRisk": nil,
|
|
// "fetchPremiumIndexOHLCV": nil,
|
|
// "fetchSettlementHistory": nil,
|
|
// "fetchStatus": nil,
|
|
// "fetchTicker": true,
|
|
// "fetchTickerWs": nil,
|
|
// "fetchTickers": nil,
|
|
// "fetchTickersWs": nil,
|
|
// "fetchTime": nil,
|
|
// "fetchTrades": true,
|
|
// "fetchTradesWs": nil,
|
|
// "fetchTradingFee": nil,
|
|
// "fetchTradingFees": nil,
|
|
// "fetchTradingFeesWs": nil,
|
|
// "fetchTradingLimits": nil,
|
|
// "fetchTransactionFee": nil,
|
|
// "fetchTransactionFees": nil,
|
|
// "fetchTransactions": nil,
|
|
// "fetchTransfer": nil,
|
|
// "fetchTransfers": nil,
|
|
// "fetchUnderlyingAssets": nil,
|
|
// "fetchVolatilityHistory": nil,
|
|
// "fetchWithdrawAddresses": nil,
|
|
// "fetchWithdrawal": nil,
|
|
// "fetchWithdrawals": nil,
|
|
// "fetchWithdrawalsWs": nil,
|
|
// "fetchWithdrawalWhitelist": nil,
|
|
// "reduceMargin": nil,
|
|
// "repayCrossMargin": nil,
|
|
// "repayIsolatedMargin": nil,
|
|
// "setLeverage": nil,
|
|
// "setMargin": nil,
|
|
// "setMarginMode": nil,
|
|
// "setPositionMode": nil,
|
|
// "signIn": nil,
|
|
// "transfer": nil,
|
|
// "watchBalance": nil,
|
|
// "watchMyTrades": nil,
|
|
// "watchOHLCV": nil,
|
|
// "watchOHLCVForSymbols": nil,
|
|
// "watchOrderBook": nil,
|
|
// "watchOrderBookForSymbols": nil,
|
|
// "watchOrders": nil,
|
|
// "watchOrdersForSymbols": nil,
|
|
// "watchPosition": nil,
|
|
// "watchPositions": nil,
|
|
// "watchStatus": nil,
|
|
// "watchTicker": nil,
|
|
// "watchTickers": nil,
|
|
// "watchTrades": nil,
|
|
// "watchTradesForSymbols": nil,
|
|
// "watchLiquidations": nil,
|
|
// "watchLiquidationsForSymbols": nil,
|
|
// "watchMyLiquidations": nil,
|
|
// "watchMyLiquidationsForSymbols": nil,
|
|
// "withdraw": nil,
|
|
// "ws": nil,
|
|
// },
|
|
// "urls": map[string]interface{}{
|
|
// "logo": nil,
|
|
// "api": nil,
|
|
// "www": nil,
|
|
// "doc": nil,
|
|
// "fees": nil,
|
|
// },
|
|
// "api": nil,
|
|
// "requiredCredentials": map[string]interface{}{
|
|
// "apiKey": true,
|
|
// "secret": true,
|
|
// "uid": false,
|
|
// "accountId": false,
|
|
// "login": false,
|
|
// "password": false,
|
|
// "twofa": false,
|
|
// "privateKey": false,
|
|
// "walletAddress": false,
|
|
// "token": false,
|
|
// },
|
|
// "markets": nil,
|
|
// "currencies": map[string]interface{}{},
|
|
// "timeframes": nil,
|
|
// "fees": map[string]interface{}{
|
|
// "trading": map[string]interface{}{
|
|
// "tierBased": nil,
|
|
// "percentage": nil,
|
|
// "taker": nil,
|
|
// "maker": nil,
|
|
// },
|
|
// "funding": map[string]interface{}{
|
|
// "tierBased": nil,
|
|
// "percentage": nil,
|
|
// "withdraw": map[string]interface{}{},
|
|
// "deposit": map[string]interface{}{},
|
|
// },
|
|
// },
|
|
// "status": map[string]interface{}{
|
|
// "status": "ok",
|
|
// "updated": nil,
|
|
// "eta": nil,
|
|
// "url": nil,
|
|
// },
|
|
// "exceptions": nil,
|
|
// "httpExceptions": map[string]interface{}{
|
|
// "422": ExchangeError,
|
|
// "418": DDoSProtection,
|
|
// "429": RateLimitExceeded,
|
|
// "404": ExchangeNotAvailable,
|
|
// "409": ExchangeNotAvailable,
|
|
// "410": ExchangeNotAvailable,
|
|
// "451": ExchangeNotAvailable,
|
|
// "500": ExchangeNotAvailable,
|
|
// "501": ExchangeNotAvailable,
|
|
// "502": ExchangeNotAvailable,
|
|
// "520": ExchangeNotAvailable,
|
|
// "521": ExchangeNotAvailable,
|
|
// "522": ExchangeNotAvailable,
|
|
// "525": ExchangeNotAvailable,
|
|
// "526": ExchangeNotAvailable,
|
|
// "400": ExchangeNotAvailable,
|
|
// "403": ExchangeNotAvailable,
|
|
// "405": ExchangeNotAvailable,
|
|
// "503": ExchangeNotAvailable,
|
|
// "530": ExchangeNotAvailable,
|
|
// "408": RequestTimeout,
|
|
// "504": RequestTimeout,
|
|
// "401": AuthenticationError,
|
|
// "407": AuthenticationError,
|
|
// "511": AuthenticationError,
|
|
// },
|
|
// "commonCurrencies": map[string]interface{}{
|
|
// "XBT": "BTC",
|
|
// "BCC": "BCH",
|
|
// "BCHSV": "BSV",
|
|
// },
|
|
// "precisionMode": DECIMAL_PLACES,
|
|
// "paddingMode": NO_PADDING,
|
|
// "limits": map[string]interface{}{
|
|
// "leverage": map[string]interface{}{
|
|
// "min": nil,
|
|
// "max": nil,
|
|
// },
|
|
// "amount": map[string]interface{}{
|
|
// "min": nil,
|
|
// "max": nil,
|
|
// },
|
|
// "price": map[string]interface{}{
|
|
// "min": nil,
|
|
// "max": nil,
|
|
// },
|
|
// "cost": map[string]interface{}{
|
|
// "min": nil,
|
|
// "max": nil,
|
|
// },
|
|
// },
|
|
// } // return
|
|
// }
|
|
|
|
// type Dict map[string]interface{}
|
|
|
|
func (this *Exchange) initializeProperties(extendedProperties map[string]interface{}) {
|
|
|
|
this.TransformedApi = map[string]interface{}{}
|
|
this.Version = SafeString(extendedProperties, "version", "").(string)
|
|
this.cacheLoaded = false
|
|
reqCred := SafeValue(extendedProperties, "requiredCredentials", map[string]interface{}{})
|
|
this.RequiredCredentials = reqCred.(map[string]interface{})
|
|
this.ApiKey = SafeString(extendedProperties, "apiKey", "").(string)
|
|
this.Secret = SafeString(extendedProperties, "secret", "").(string)
|
|
this.Password = SafeString(extendedProperties, "password", "").(string)
|
|
this.Login = SafeString(extendedProperties, "login", "").(string)
|
|
this.Twofa = SafeString(extendedProperties, "twofa", "").(string)
|
|
this.PrivateKey = SafeString(extendedProperties, "privateKey", "").(string)
|
|
this.WalletAddress = SafeString(extendedProperties, "walletAddress", "").(string)
|
|
this.Token = SafeString(extendedProperties, "token", "").(string)
|
|
this.Uid = SafeString(extendedProperties, "uid", "").(string)
|
|
this.AccountId = SafeString(extendedProperties, "accountId", "").(string)
|
|
|
|
this.UserAgents = SafeValue(extendedProperties, "userAgents", map[string]interface{}{}).(map[string]interface{})
|
|
this.UserAgent = SafeString(extendedProperties, "userAgent", "").(string)
|
|
this.Timeout = SafeInteger(extendedProperties, "timeout", 10000).(int64)
|
|
this.MAX_VALUE = SafeFloat(extendedProperties, "MAX_VALUE", 1.7976931348623157e+308).(float64) // math.MaxFloat64
|
|
this.Id = SafeString(extendedProperties, "id", "").(string)
|
|
this.Alias = SafeValue(extendedProperties, "alias", false).(bool)
|
|
|
|
this.Api = SafeValue(extendedProperties, "api", map[string]interface{}{}).(map[string]interface{})
|
|
this.Hostname = SafeString(extendedProperties, "hostname", "").(string)
|
|
this.Urls = SafeValue(extendedProperties, "urls", map[string]interface{}{}).(map[string]interface{})
|
|
|
|
this.Options = this.GetDefaultOptions().(map[string]interface{})
|
|
extendedOptions := SafeValue(extendedProperties, "options", map[string]interface{}{}).(map[string]interface{})
|
|
for k, v := range extendedOptions {
|
|
this.Options[k] = v
|
|
}
|
|
|
|
this.Verbose = SafeValue(extendedProperties, "verbose", false).(bool)
|
|
this.Timeframes = SafeValue(extendedProperties, "timeframes", map[string]interface{}{}).(map[string]interface{})
|
|
this.Features = SafeValue(extendedProperties, "features", map[string]interface{}{}).(map[string]interface{})
|
|
this.Fees = SafeValue(extendedProperties, "fees", map[string]interface{}{}).(map[string]interface{})
|
|
this.Has = SafeValue(extendedProperties, "has", map[string]interface{}{}).(map[string]interface{})
|
|
// this.httpExceptions = SafeValue(extendedProperties, "httpExceptions",map[string]interface{}{}).(map[string]interface{})
|
|
this.Exceptions = SafeValue(extendedProperties, "exceptions", map[string]interface{}{}).(map[string]interface{})
|
|
this.Markets = SafeValue(extendedProperties, "markets", map[string]interface{}{}).(map[string]interface{})
|
|
propCurrencies := SafeValue(extendedProperties, "currencies", map[string]interface{}{}).(map[string]interface{})
|
|
if len(propCurrencies) > 0 {
|
|
this.Currencies = propCurrencies
|
|
}
|
|
this.EnableRateLimit = SafeValue(extendedProperties, "enableRateLimit", true).(bool)
|
|
this.RateLimit = SafeFloat(extendedProperties, "rateLimit", -1).(float64)
|
|
// this.status = SafeValue(extendedProperties, "status",map[string]interface{}{}).(map[string]interface{})
|
|
this.PrecisionMode = int(SafeInteger(extendedProperties, "precisionMode", this.PrecisionMode).(int64))
|
|
this.PaddingMode = int(SafeInteger(extendedProperties, "paddingMode", this.PaddingMode).(int64))
|
|
this.CommonCurrencies = SafeValue(extendedProperties, "commonCurrencies", map[string]interface{}{}).(map[string]interface{})
|
|
subVal := SafeValue(extendedProperties, "substituteCommonCurrencyCodes", true)
|
|
this.SubstituteCommonCurrencyCodes = subVal != nil && subVal.(bool)
|
|
this.Name = SafeString(extendedProperties, "name", "").(string)
|
|
this.HttpsProxy = SafeString(extendedProperties, "httpsProxy", nil)
|
|
this.HttpProxy = SafeString(extendedProperties, "httpProxy", nil)
|
|
this.NewUpdates = SafeValue(extendedProperties, "newUpdates", true).(bool)
|
|
this.Accounts = SafeValue(extendedProperties, "accounts", []interface{}{}).([]interface{})
|
|
|
|
this.HttpExceptions = SafeValue(extendedProperties, "httpExceptions", map[string]interface{}{}).(map[string]interface{})
|
|
this.Headers = SafeValue(extendedProperties, "headers", map[string]interface{}{}).(map[string]interface{})
|
|
this.ReduceFees = SafeValue(extendedProperties, "reduceFees", true).(bool)
|
|
}
|