mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 14:54:21 +01:00
feat: implement funding trades endpoint (rest) (#135)
* feat: support funding_trades endpoint * chore: bump version, add changelog entry * chore: add final newline to funding_trade.py * fix: 'maker' is now placeholder in fundingtrade Co-authored-by: Richard Hoekstra <me@richardhoekstra.com> Co-authored-by: Robert Kowalski <robert@bitfinex.com>
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
1.1.15
|
||||||
|
-) Implemented Funding Trades (rest)
|
||||||
|
|
||||||
1.1.14
|
1.1.14
|
||||||
-) bfx_websockets.py ERRORS dictionary now contains a message for error number 10305
|
-) bfx_websockets.py ERRORS dictionary now contains a message for error number 10305
|
||||||
|
|
||||||
|
|||||||
@@ -19,5 +19,6 @@ from .withdraw import Withdraw
|
|||||||
from .ticker import Ticker
|
from .ticker import Ticker
|
||||||
from .funding_ticker import FundingTicker
|
from .funding_ticker import FundingTicker
|
||||||
from .ledger import Ledger
|
from .ledger import Ledger
|
||||||
|
from .funding_trade import FundingTrade
|
||||||
|
|
||||||
NAME = 'models'
|
NAME = "models"
|
||||||
|
|||||||
55
bfxapi/models/funding_trade.py
Normal file
55
bfxapi/models/funding_trade.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
"""
|
||||||
|
Module used to describe all of the different data types
|
||||||
|
"""
|
||||||
|
|
||||||
|
class FundingTradeModel:
|
||||||
|
"""
|
||||||
|
Enum used to index the different values in a raw funding trade array
|
||||||
|
"""
|
||||||
|
ID = 0
|
||||||
|
SYMBOL = 1
|
||||||
|
MTS_CREATE = 2
|
||||||
|
OFFER_ID = 3
|
||||||
|
AMOUNT = 4
|
||||||
|
RATE = 5
|
||||||
|
PERIOD = 6
|
||||||
|
|
||||||
|
class FundingTrade:
|
||||||
|
"""
|
||||||
|
ID integer Offer ID
|
||||||
|
SYMBOL string The currency of the offer (fUSD, etc)
|
||||||
|
MTS_CREATE int Millisecond Time Stamp when the offer was created
|
||||||
|
OFFER_ID int The ID of the offer
|
||||||
|
AMOUNT float Amount the offer is for
|
||||||
|
RATE float Rate of the offer
|
||||||
|
PERIOD int Period of the offer
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, tid, symbol, mts_create, offer_id, amount, rate, period):
|
||||||
|
self.tid = tid
|
||||||
|
self.symbol = symbol
|
||||||
|
self.mts_create = mts_create
|
||||||
|
self.offer_id = offer_id
|
||||||
|
self.amount = amount
|
||||||
|
self.rate = rate
|
||||||
|
self.period = period
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_raw_rest_trade(raw_trade):
|
||||||
|
"""
|
||||||
|
Generate a Ticker object from a raw ticker array
|
||||||
|
"""
|
||||||
|
# [[636040,"fUST",1574077528000,41237922,-100,0.0024,2,null]]
|
||||||
|
return FundingTrade(
|
||||||
|
raw_trade[FundingTradeModel.ID],
|
||||||
|
raw_trade[FundingTradeModel.SYMBOL],
|
||||||
|
raw_trade[FundingTradeModel.MTS_CREATE],
|
||||||
|
raw_trade[FundingTradeModel.OFFER_ID],
|
||||||
|
raw_trade[FundingTradeModel.AMOUNT],
|
||||||
|
raw_trade[FundingTradeModel.RATE],
|
||||||
|
raw_trade[FundingTradeModel.PERIOD]
|
||||||
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "FundingTrade '{}' x {} @ {} for {} days".format(
|
||||||
|
self.symbol, self.amount, self.rate, self.period)
|
||||||
@@ -10,7 +10,7 @@ import datetime
|
|||||||
|
|
||||||
from ..utils.custom_logger import CustomLogger
|
from ..utils.custom_logger import CustomLogger
|
||||||
from ..utils.auth import generate_auth_headers, calculate_order_flags, gen_unique_cid
|
from ..utils.auth import generate_auth_headers, calculate_order_flags, gen_unique_cid
|
||||||
from ..models import Wallet, Order, Position, Trade, FundingLoan, FundingOffer
|
from ..models import Wallet, Order, Position, Trade, FundingLoan, FundingOffer, FundingTrade
|
||||||
from ..models import FundingCredit, Notification, Ledger
|
from ..models import FundingCredit, Notification, Ledger
|
||||||
|
|
||||||
|
|
||||||
@@ -456,6 +456,22 @@ class BfxRest:
|
|||||||
raw_trades = await self.post(endpoint, params=params)
|
raw_trades = await self.post(endpoint, params=params)
|
||||||
return [Trade.from_raw_rest_trade(rt) for rt in raw_trades]
|
return [Trade.from_raw_rest_trade(rt) for rt in raw_trades]
|
||||||
|
|
||||||
|
async def get_funding_trades(self, symbol, start, end, limit=25):
|
||||||
|
"""
|
||||||
|
Get all of the funding trades between the start and end period associated with API_KEY
|
||||||
|
- Requires authentication.
|
||||||
|
|
||||||
|
# Attributes
|
||||||
|
@param symbol string: pair symbol i.e fUSD
|
||||||
|
@param start int: millisecond start time
|
||||||
|
@param end int: millisecond end time
|
||||||
|
@param limit int: max number of items in response
|
||||||
|
@return Array <models.FundingTrade>
|
||||||
|
"""
|
||||||
|
endpoint = "auth/r/funding/trades/{}/hist".format(symbol)
|
||||||
|
raw_trades = await self.post(endpoint)
|
||||||
|
return [FundingTrade.from_raw_rest_trade(rt) for rt in raw_trades]
|
||||||
|
|
||||||
async def get_funding_offers(self, symbol):
|
async def get_funding_offers(self, symbol):
|
||||||
"""
|
"""
|
||||||
Get all of the funding offers associated with API_KEY - Requires authentication.
|
Get all of the funding offers associated with API_KEY - Requires authentication.
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
This module contains the current version of the bfxapi lib
|
This module contains the current version of the bfxapi lib
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = '1.1.14'
|
__version__ = '1.1.15'
|
||||||
|
|||||||
Reference in New Issue
Block a user