Files
gocryptotrader/exchanges/futures/contract.go
Samuael A aeb4a87913 exchanges: Add Deribit exchange support (#1082)
* deribit implementation

* add ws impll

* cleanup

* Update deribit_wrapper.go

* Add missing endpoints

* Fix config file

* asset type update

* Update code structure

* Update authenticated private endpoints unit tests

* Updating websocket

* Updating websocket connection and subscription handling

* Finishing up adding subscription push data

* Adding websocket public endpoint

* Adding WS endpoints

* Adding websocket unit tests

* Minor clean-up

* Integrating websocket endpoints into the wrapper funcs

* Updating exchange documentations

* Fixing test issues

* Code cleaning-up

* fix test issues

* Updating validations and logic errors

* Updating wrapper issues

* fix test issues

* Slight test update

* Unit test and code structure update

* Update websocket tempos

* Slight update on code structure

* Minor update on unit tests

* Update depending on review comments

* Minor code fix and doc re-generating

* Update on Candlestick wrapper functions

* Minor updates

* minor unit test updates

* Minor updates on weboscket and unit tests

* minor linter fix

* codespell and rate limiter issues

* single linter issue fix

* adding rate limiter

* Add ratelimiter to websocket conn and overall code update

* fix websocket push data issue

* Implementing missing wrapper function

* Websocket fix

* Minor update on missing endpoint and other

* fixing websocket issues and cleaningup

* Minor tempo fix

* Minor linter issues

* unit test update

* Indexing error fix

* Websocket connection fix

* string formatting fix

* Small fix on unit tests

* fix minor json conversion issue

* websocket and documentation update

* websocket, wrapper and unit test updates

* Documentation and unit tests update

* Fix unit tests

* wrapper fix for new change

* Unit test fix

* timestamp conversion and unit tests update

* Minor instrument ID conversion fix

* instrument formats and unit test update

* formatting and unit test fix

* config update

* Updating websocket and adding the Spot support

* Add small unit test fix

* unit test and websocket handlers update

* Linter issues fix

* minor documentation and code update

* Minor fix

* added a wrapper func GetLatestFundingRates

* Types, wrapper update, and unit tests

* Minor config update

* fix wrapper unit tests

* Resolve all panic and wrapper test issues

* minor unit test fix

* fix issues and adding newly added endpoints

* updates and added remaining endpoints with unit tests

* Update unit tests using assert

* Added missing endpoints and unit tests

* Minor updates and clean-ups

* Resolve tradable pair fetching  panic

* Mutex fix

* Added Options assets test and minor fixes

* subscription mothod updated

* Remove misadded code lines

* resolve websocket

* Updating tests, types, endpoint methods and others

* Added GetFuturesContractDetails and minor fix

* fix linter issue

* revert change on candlestic time

* Added filters to candles

* minor unit test and wrapper fix

* Minor unit tests update

* cahnge param key for GetOrderMarginByID

* updating unit tests and resolve issues

* Update websocket unit tests

* Minor fix based on review

* Revert unit test change

* fix pair config issue

* Added missing wrapper functions

* Fix missing review changes

* Fix options request pair formatting

* fix AllExchangeWrappers test issue

* Changes with unit test and wrapper based on the review

* Fix to options reg-exp

* wrapper functions fix

* Update MaximumFundingRateHistory filter and minor fixes

* Fix besed on review comment

* Fix issues on review comment

* linter fix

* fix minor unit test issue

* Fix unit test issues

* Update trade order cancellation responses

* fix config files issue

* lint update config files

* Update unit tests

* Update return values and response handling

* added missing endpoint and fixes based on review comment

* toggle useTestNet back

* Update cancel by label and other fix

* fix forgotten cancel all response type

* update CancelResp type

* Fix unmarshaling error

* updated websocket orderbook load issue

* fix websocket lock and groups

* Change Items to Tranche and fix linter issues

* Fix orderbook issue

* Update unit tests offline error handling, and endpoints argument and  error handling

* Contributors documentation update and change error return type

* Updated unit tests based on review comment

* Update unit tests and removed password change endpoint

* Fix race condition

* Update on tests, test pairs, and wrapper config

* Update test tradable pairs loading

* Update unit tests, fix linter issues, and update wrapper functions

* remove credentials

* Update test and fix authentication method and few authenticated endpoints

* fix codespell issue

* group the repeated currency code check to a func

* added unit test for repeated pair check func

* Added a base coin and related updates

---------

Co-authored-by: E Sequeira <earncef@earncef.com>
2024-05-29 10:28:03 +10:00

118 lines
2.4 KiB
Go

package futures
import (
"time"
"github.com/shopspring/decimal"
"github.com/thrasher-corp/gocryptotrader/currency"
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
"github.com/thrasher-corp/gocryptotrader/exchanges/fundingrate"
)
// Contract holds details on futures contracts
type Contract struct {
Exchange string
Name currency.Pair
Underlying currency.Pair
Asset asset.Item
StartDate time.Time
EndDate time.Time
IsActive bool
Status string
Type ContractType
SettlementType ContractSettlementType
// Optional values if the exchange offers them
SettlementCurrencies currency.Currencies
MarginCurrency currency.Code
Multiplier float64
MaxLeverage float64
LatestRate fundingrate.Rate
FundingRateFloor decimal.Decimal
FundingRateCeiling decimal.Decimal
}
// ContractSettlementType holds the various style of contracts offered by futures exchanges
type ContractSettlementType uint8
// ContractSettlementType definitions
const (
UnsetSettlementType ContractSettlementType = iota
Linear
Inverse
Quanto
LinearOrInverse
)
// String returns the string representation of a contract settlement type
func (d ContractSettlementType) String() string {
switch d {
case UnsetSettlementType:
return "unset"
case Linear:
return "linear"
case Inverse:
return "inverse"
case Quanto:
return "quanto"
case LinearOrInverse:
return "linearOrInverse"
default:
return "unknown"
}
}
// ContractType holds the various style of contracts offered by futures exchanges
type ContractType uint8
// ContractType definitions
const (
UnsetContractType ContractType = iota
Perpetual
LongDated
Weekly
Fortnightly
ThreeWeekly
Monthly
Quarterly
SemiAnnually
HalfYearly
NineMonthly
Yearly
Unknown
Daily
)
// String returns the string representation of the contract type
func (c ContractType) String() string {
switch c {
case Daily:
return "day"
case Perpetual:
return "perpetual"
case LongDated:
return "long_dated"
case Weekly:
return "weekly"
case Fortnightly:
return "fortnightly"
case ThreeWeekly:
return "three-weekly"
case Monthly:
return "monthly"
case Quarterly:
return "quarterly"
case SemiAnnually:
return "semi-annually"
case HalfYearly:
return "half-yearly"
case NineMonthly:
return "nine-monthly"
case Yearly:
return "yearly"
case Unknown:
return "unknown"
default:
return "unset"
}
}