mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
FTX: Funding rates, payments & stats + order manager tracking (#976)
* Adds basic PoC for calculating/retrieving position data * A very unfortunate day of miscalculations * Adds position summary and funding rate details to RPC * Offline funding rate calculations * More helpers, more stats, refining data, automated retrieval * Adds new rpc server commands and attempts some organisation * lower string, lower stress * Adds ordermanager config. Fleshes outcli. Tracks positions automatically * Adds new separation for funding payments/rates * Combines funding rates and payments * Fun test coverage * ALL THE TESTS... I hope * Fixes * polishes ftx tests. improves perp check. Loops rates * Final touches before nit attax * buff 💪 * Stops NotYetImplemented spam with one simple trick! * Some lovely little niteroos * linteroo * Clarifies a couple of errors to help narrow likely end user problems * Fixes asset type bug, fixes closed position order return, fixes unset status bug * Fixes order manager handling when no rates are available yet * Continues on no funding rates instead. Removes err * Don't show predicted rate if the time is zero * Addresses scenario with no funding rate payments * Bug fixes and commentary before updating maps to use *currency.Item * Adds a pair key type * Polishes pKey, fixes map order bug * key is not a property in the event someone changes the base/quote * Adds improvements to order processing...Breaks it all * Shakes up the design of things by removing a function * Fixes issues with order manager positions. Limits update range * Fixes build issues. Identification of bad tests. * Merges and fixes features from master and this branch * buff linter 💪 * re-gen * proto regen * Addresses some nits. But not all of them. * Fixes issue where funding rates weren't returned 🎉 * completes transition futures tracking to map[*currency.Item]map[*currency.Item] * who did that? not me * removes redundant check on account of being redundant and unnecessary * so buf * addresses nits: duplications, startTime, loops, go tidy, typos * fixes minor mistakes * fixes 🍣 🐻 changes to int64
This commit is contained in:
@@ -47,9 +47,6 @@ type IBotExchange interface {
|
||||
GetWithdrawPermissions() uint32
|
||||
FormatWithdrawPermissions() string
|
||||
GetFundingHistory(ctx context.Context) ([]FundHistory, error)
|
||||
|
||||
OrderManagement
|
||||
|
||||
GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID, chain string) (*deposit.Address, error)
|
||||
GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error)
|
||||
GetWithdrawalsHistory(ctx context.Context, code currency.Code, a asset.Item) ([]WithdrawalHistory, error)
|
||||
@@ -66,29 +63,23 @@ type IBotExchange interface {
|
||||
DisableRateLimiter() error
|
||||
EnableRateLimiter() error
|
||||
GetServerTime(ctx context.Context, ai asset.Item) (time.Time, error)
|
||||
CurrencyStateManagement
|
||||
GetMarginRatesHistory(context.Context, *margin.RateHistoryRequest) (*margin.RateHistoryResponse, error)
|
||||
|
||||
order.PNLCalculation
|
||||
order.CollateralManagement
|
||||
GetFuturesPositions(context.Context, asset.Item, currency.Pair, time.Time, time.Time) ([]order.Detail, error)
|
||||
|
||||
GetWebsocket() (*stream.Websocket, error)
|
||||
SubscribeToWebsocketChannels(channels []stream.ChannelSubscription) error
|
||||
UnsubscribeToWebsocketChannels(channels []stream.ChannelSubscription) error
|
||||
GetSubscriptions() ([]stream.ChannelSubscription, error)
|
||||
FlushWebsocketChannels() error
|
||||
AuthenticateWebsocket(ctx context.Context) error
|
||||
|
||||
GetOrderExecutionLimits(a asset.Item, cp currency.Pair) (order.MinMaxLevel, error)
|
||||
CheckOrderExecutionLimits(a asset.Item, cp currency.Pair, price, amount float64, orderType order.Type) error
|
||||
UpdateOrderExecutionLimits(ctx context.Context, a asset.Item) error
|
||||
|
||||
AccountManagement
|
||||
GetCredentials(ctx context.Context) (*account.Credentials, error)
|
||||
ValidateCredentials(ctx context.Context, a asset.Item) error
|
||||
|
||||
FunctionalityChecker
|
||||
AccountManagement
|
||||
OrderManagement
|
||||
CurrencyStateManagement
|
||||
FuturesManagement
|
||||
}
|
||||
|
||||
// OrderManagement defines functionality for order management
|
||||
@@ -135,3 +126,16 @@ type FunctionalityChecker interface {
|
||||
IsWebsocketAuthenticationSupported() bool
|
||||
IsRESTAuthenticationSupported() bool
|
||||
}
|
||||
|
||||
// FuturesManagement manages futures orders, pnl and collateral calculations
|
||||
type FuturesManagement interface {
|
||||
GetPositionSummary(context.Context, *order.PositionSummaryRequest) (*order.PositionSummary, error)
|
||||
ScaleCollateral(ctx context.Context, calculator *order.CollateralCalculator) (*order.CollateralByCurrency, error)
|
||||
CalculateTotalCollateral(context.Context, *order.TotalCollateralCalculator) (*order.TotalCollateralResponse, error)
|
||||
GetFuturesPositions(context.Context, *order.PositionsRequest) ([]order.PositionDetails, error)
|
||||
GetFundingRates(context.Context, *order.FundingRatesRequest) ([]order.FundingRates, error)
|
||||
IsPerpetualFutureCurrency(asset.Item, currency.Pair) (bool, error)
|
||||
GetCollateralCurrencyForContract(asset.Item, currency.Pair) (currency.Code, asset.Item, error)
|
||||
GetMarginRatesHistory(context.Context, *margin.RateHistoryRequest) (*margin.RateHistoryResponse, error)
|
||||
order.PNLCalculation
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user