Files
gocryptotrader/exchanges/protocol/features.go
Ryan O'Hara-Reid 48349bc3bb protocol/order: adds additional fields for trading requirements (#1552)
* Add in initial handling for quote/base currency deployment requirements

* include client order ID checking

* glorious: suggestions

* spell and fix

* linter/context/test

* rework tests and order side specific requirements

* linter

* mend panic at the disco

* mending more panics at the disco

* anudda fix brudda

* glorious: NITTTTTT BOOOOOMB

* leftover things and stuff

* whoops

* tie in gateio

* glorious: nit fixes life and everything.

* thrasher: nits

---------

Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
2024-07-03 16:07:23 +10:00

72 lines
4.1 KiB
Go

package protocol
// Features holds all variables for the exchanges supported features
// for a protocol (e.g REST or Websocket)
type Features struct {
TickerBatching bool `json:"tickerBatching,omitempty"`
AutoPairUpdates bool `json:"autoPairUpdates,omitempty"`
AccountBalance bool `json:"accountBalance,omitempty"`
CryptoDeposit bool `json:"cryptoDeposit,omitempty"`
CryptoWithdrawal bool `json:"cryptoWithdrawal,omitempty"`
FiatWithdraw bool `json:"fiatWithdraw,omitempty"`
GetOrder bool `json:"getOrder,omitempty"`
GetOrders bool `json:"getOrders,omitempty"`
CancelOrders bool `json:"cancelOrders,omitempty"`
CancelOrder bool `json:"cancelOrder,omitempty"`
SubmitOrder bool `json:"submitOrder,omitempty"`
SubmitOrders bool `json:"submitOrders,omitempty"`
ModifyOrder bool `json:"modifyOrder,omitempty"`
DepositHistory bool `json:"depositHistory,omitempty"`
WithdrawalHistory bool `json:"withdrawalHistory,omitempty"`
TradeHistory bool `json:"tradeHistory,omitempty"`
UserTradeHistory bool `json:"userTradeHistory,omitempty"`
TradeFee bool `json:"tradeFee,omitempty"`
FiatDepositFee bool `json:"fiatDepositFee,omitempty"`
FiatWithdrawalFee bool `json:"fiatWithdrawalFee,omitempty"`
CryptoDepositFee bool `json:"cryptoDepositFee,omitempty"`
CryptoWithdrawalFee bool `json:"cryptoWithdrawalFee,omitempty"`
TickerFetching bool `json:"tickerFetching,omitempty"`
KlineFetching bool `json:"klineFetching,omitempty"`
TradeFetching bool `json:"tradeFetching,omitempty"`
OrderbookFetching bool `json:"orderbookFetching,omitempty"`
AccountInfo bool `json:"accountInfo,omitempty"`
FiatDeposit bool `json:"fiatDeposit,omitempty"`
DeadMansSwitch bool `json:"deadMansSwitch,omitempty"`
FundingRateFetching bool `json:"fundingRateFetching"`
PredictedFundingRate bool `json:"predictedFundingRate,omitempty"`
// FullPayloadSubscribe flushes and changes full subscription on websocket
// connection by subscribing with full default stream channel list
FullPayloadSubscribe bool `json:"fullPayloadSubscribe,omitempty"`
Subscribe bool `json:"subscribe,omitempty"`
Unsubscribe bool `json:"unsubscribe,omitempty"`
AuthenticatedEndpoints bool `json:"authenticatedEndpoints,omitempty"`
MessageCorrelation bool `json:"messageCorrelation,omitempty"`
MessageSequenceNumbers bool `json:"messageSequenceNumbers,omitempty"`
CandleHistory bool `json:"candlehistory,omitempty"`
MultiChainDeposits bool `json:"multiChainDeposits,omitempty"`
MultiChainWithdrawals bool `json:"multiChainWithdrawals,omitempty"`
MultiChainDepositRequiresChainSet bool `json:"multiChainDepositRequiresChainSet,omitempty"`
// HasAssetTypeAccountSegregation is when the assets are divided into asset
// types instead of just being denoted as spot holdings.
HasAssetTypeAccountSegregation bool `json:"hasAssetTypeAccountSegregation,omitempty"`
}
// TradingRequirements defines the requirements for trading on the exchange.
type TradingRequirements struct {
// SpotMarketOrderAmountPurchaseQuotationOnly requires the amount to be in
// quote currency or what is to be sold for when you purchase base currency.
// For example, long BTC-USD, the quotation amount is USD.
// NOTE: Due to an exchange's matching engine process, the base amount
// acquired may vary from what is intended due to price fluctuations and
// liquidity on the books. Care must be taken when implementing a market
// neutral strategy.
SpotMarketOrderAmountPurchaseQuotationOnly bool
// SpotMarketOrderAmountSellBaseOnly requires the amount to be in the
// base currency or what is intended to be purchased. For example, short
// BTC-USD, the base amount is BTC.
SpotMarketOrderAmountSellBaseOnly bool
// ClientOrderID is a unique identifier for the order that is generated by
// the client and is required for order submission.
ClientOrderID bool
}