exchanges/ftx: Order improvements: submission + websocket reports (#741)

* exchanges/ftx: add support for ReduceOnly, ImmediateOrCancel and PostOnly orders

* exchanges/ftx: adapt tests to ReduceOnly/ImmediateOrCancel/PostOnly boolean flags

* exchanges/ftx: wrong json key of WsFillsDataStore.FillsData was causing json.Unmarshal() to yield an empty struct

* exchanges/ftx: update WsFills to latest API

* exchanges/ftx: add TestFTX_wsHandleData_wsFills

* exchanges/ftx: WsOrders.FilledSize was never parsed properly because of a key error (was spelled `filedSize` -- with one L);  enrich data structure to support latest API fields

* exchanges/ftx: when order is closed, set status to closed, not canceled

* exchanges/ftx: compatibleOrderVars: compare floats for almost-equality

* order.Detail: add field: AverageExecutedPrice float64

* exchanges/ftx: FTX.wsHandleData() now populates all order.Detail fields properly on update/orders websocket message

* exchanges/ftx: implement TestFTX_wsHandleData_Details()

* exchanges/ftx: make golangci-lint happy

* exchanges/ftx: make golangci-lint happy

* exchanges/ftx/test: delete redundant commented code

* exchanges/ftx: move websocket tests from ftx_test.go to ftx_websocket_test.go

* exchanges/ftx: remove redundant line

* exchange/ftx: greatly simplify TestFTX_wsHandleData (thanks to @shazbert)

* exchanges/ftx: make golangci-lint/whitespace happy

* exchanges/ftx: requested review change: delete a redundant line

* exchanges/ftx/test: use predefined currency constants
This commit is contained in:
Yordan Miladinov
2021-08-11 03:28:47 +03:00
committed by GitHub
parent 232d6ebc1f
commit c7c8cac21f
7 changed files with 477 additions and 297 deletions

View File

@@ -118,37 +118,38 @@ type ModifyResponse struct {
// Each exchange has their own requirements, so not all fields
// are required to be populated
type Detail struct {
ImmediateOrCancel bool
HiddenOrder bool
FillOrKill bool
PostOnly bool
Leverage float64
Price float64
Amount float64
LimitPriceUpper float64
LimitPriceLower float64
TriggerPrice float64
TargetAmount float64
ExecutedAmount float64
RemainingAmount float64
Cost float64
Fee float64
Exchange string
InternalOrderID string
ID string
ClientOrderID string
AccountID string
ClientID string
WalletAddress string
Type Type
Side Side
Status Status
AssetType asset.Item
Date time.Time
CloseTime time.Time
LastUpdated time.Time
Pair currency.Pair
Trades []TradeHistory
ImmediateOrCancel bool
HiddenOrder bool
FillOrKill bool
PostOnly bool
Leverage float64
Price float64
Amount float64
LimitPriceUpper float64
LimitPriceLower float64
TriggerPrice float64
AverageExecutedPrice float64
TargetAmount float64
ExecutedAmount float64
RemainingAmount float64
Cost float64
Fee float64
Exchange string
InternalOrderID string
ID string
ClientOrderID string
AccountID string
ClientID string
WalletAddress string
Type Type
Side Side
Status Status
AssetType asset.Item
Date time.Time
CloseTime time.Time
LastUpdated time.Time
Pair currency.Pair
Trades []TradeHistory
}
// Filter contains all properties an order can be filtered for