Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions datamaxi/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
from datamaxi.datamaxi import Datamaxi # noqa: F401
from datamaxi.telegram import Telegram # noqa: F401
from datamaxi.naver import Naver # noqa: F401
8 changes: 6 additions & 2 deletions datamaxi/datamaxi/cex_announcement.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ def __init__(self, api_key=None, **kwargs: Any):

def __call__(
self,
category: Optional[str] = None,
page: int = 1,
limit: int = 1000,
sort: str = DESC,
key: Optional[str] = None,
exchange: Optional[str] = None,
category: Optional[str] = None,
) -> Dict[str, Any]:
"""Get exchange announcements

Expand All @@ -47,10 +49,12 @@ def __call__(
raise ValueError("sort must be either asc or desc")

params = {
"category": category,
"page": page,
"limit": limit,
"sort": sort,
"key": key,
"exchange": exchange,
"category": category,
}

res = self.query("/api/v1/cex/announcements", params)
Expand Down
10 changes: 5 additions & 5 deletions datamaxi/datamaxi/cex_candle.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ def __call__(
exchange: str,
market: str,
symbol: str,
currency: str = USD,
interval: str = INTERVAL_1D,
from_unix: str = None,
to_unix: str = None,
currency: str = USD,
pandas: bool = True,
) -> Union[Tuple[Dict, Callable], Tuple[pd.DataFrame, Callable]]:
"""Fetch candle data
Expand All @@ -43,10 +43,10 @@ def __call__(
exchange (str): Exchange name
market (str): Market type (spot/futures)
symbol (str): Symbol name
currency (str): Currency
interval (str): Candle interval
from_unix (str): Start time in Unix timestamp
to_unix (str): End time in Unix timestamp
currency (str): Currency
pandas (bool): Return data as pandas DataFrame

Returns:
Expand Down Expand Up @@ -86,7 +86,7 @@ def __call__(

def exchanges(self, market: str) -> List[str]:
"""Fetch supported exchanges accepted by
[datamaxi.CexCandle.get](./#datamaxi.datamaxi.CexCandle.get)
[datamaxi.CexCandle.get](#datamaxi.datamaxi.CexCandle.get)
API.

`GET /api/v1/cex/candle/exchanges`
Expand All @@ -110,7 +110,7 @@ def exchanges(self, market: str) -> List[str]:

def symbols(self, exchange: str = None, market: str = None) -> List[Dict]:
"""Fetch supported symbols accepted by
[datamaxi.CexCandle.get](./#datamaxi.datamaxi.CexCandle.get)
[datamaxi.CexCandle.get](#datamaxi.datamaxi.CexCandle.get)
API.

`GET /api/v1/cex/candle/symbols`
Expand Down Expand Up @@ -138,7 +138,7 @@ def symbols(self, exchange: str = None, market: str = None) -> List[Dict]:

def intervals(self) -> List[str]:
"""Fetch supported intervals accepted by
[datamaxi.CexCandle.get](./#datamaxi.datamaxi.CexCandle.get)
[datamaxi.CexCandle.get](#datamaxi.datamaxi.CexCandle.get)
API.

`GET /api/v1/candle/intervals`
Expand Down
4 changes: 2 additions & 2 deletions datamaxi/datamaxi/cex_fee.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def __call__(

def exchanges(self) -> List[str]:
"""Fetch supported exchanges accepted by
[datamaxi.CexFee.get](./#datamaxi.datamaxi.CexFee.get)
[datamaxi.CexFee.get](#datamaxi.datamaxi.CexFee.get)
API.

`GET /api/v1/trading-fees/exchanges`
Expand All @@ -59,7 +59,7 @@ def exchanges(self) -> List[str]:

def symbols(self, exchange: str) -> List[str]:
"""Fetch supported symbols accepted by
[datamaxi.CexTradingFees.get](./#datamaxi.datamaxi.CexTradingFees.get)
[datamaxi.CexTradingFees.get](#datamaxi.datamaxi.CexTradingFees.get)
API.

`GET /api/v1/trading-fees/symbols`
Expand Down
12 changes: 10 additions & 2 deletions datamaxi/datamaxi/cex_ticker.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ def get(
exchange: str,
symbol: str,
market: str,
currency: str = None,
conversion_base: str = None,
pandas: bool = True,
) -> Union[Dict, pd.DataFrame]:
"""Fetch ticker data
Expand Down Expand Up @@ -57,6 +59,12 @@ def get(
"market": market,
}

if currency is not None:
params["currency"] = currency

if conversion_base is not None:
params["conversion_base"] = conversion_base

res = self.query("/api/v1/ticker", params)

if pandas:
Expand All @@ -71,7 +79,7 @@ def exchanges(
market: str,
) -> List[str]:
"""Fetch supported exchanges accepted by
[datamaxi.CexTicker.get](./#datamaxi.datamaxi.CexTicker.get)
[datamaxi.CexTicker.get](#datamaxi.datamaxi.CexTicker.get)
API.

`GET /api/v1/ticker/exchanges`
Expand Down Expand Up @@ -106,7 +114,7 @@ def symbols(
market: str,
) -> List[str]:
"""Fetch supported symbols accepted by
[datamaxi.CexTicker.get](./#datamaxi.datamaxi.CexTicker.get)
[datamaxi.CexTicker.get](#datamaxi.datamaxi.CexTicker.get)
API.

`GET /api/v1/ticker/symbols`
Expand Down
6 changes: 3 additions & 3 deletions datamaxi/datamaxi/cex_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ def __init__(self, api_key=None, **kwargs: Any):

def updates(
self,
type: Optional[str] = None,
page: int = 1,
limit: int = 1000,
type: Optional[str] = None,
sort: str = DESC,
) -> Dict[str, Any]:
"""Get token update data
Expand All @@ -29,10 +29,10 @@ def updates(
<https://docs.datamaxiplus.com/rest/cex/token-updates>

Args:
type (str): Update type
page (int): Page number
limit (int): Limit of data
sort (str): Sort order
type (str): Update type

Returns:
Token update data in list of dictionary
Expand All @@ -50,9 +50,9 @@ def updates(
raise ValueError("type must be either listed or delisted when set")

params = {
"type": type,
"page": page,
"limit": limit,
"type": type,
"sort": sort,
}

Expand Down
4 changes: 2 additions & 2 deletions datamaxi/datamaxi/cex_wallet_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def __call__(

def exchanges(self) -> List[str]:
"""Fetch supported exchanges accepted by
[datamaxi.CexWalletStatus.__call__](./#datamaxi.datamaxi.CexWalletStatus.__call__)
[datamaxi.CexWalletStatus.__call__](#datamaxi.datamaxi.CexWalletStatus.__call__)
API.

`GET /api/v1/wallet-status/exchanges`
Expand All @@ -75,7 +75,7 @@ def exchanges(self) -> List[str]:

def assets(self, exchange: str) -> List[str]:
"""Fetch supported assets accepted by
[datamaxi.CexWalletStatus.__call__](./#datamaxi.datamaxi.CexWalletStatus.__call__)
[datamaxi.CexWalletStatus.__call__](#datamaxi.datamaxi.CexWalletStatus.__call__)
API.

`GET /api/v1/wallet-status/assets`
Expand Down
125 changes: 15 additions & 110 deletions datamaxi/datamaxi/dex.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ def trade(
chain: str,
exchange: str,
pool: str,
page: int = 1,
limit: int = 1000,
fromDateTime: str = None,
toDateTime: str = None,
page: int = 1,
limit: int = 1000,
sort: str = "desc",
pandas: bool = True,
) -> Union[Tuple[Dict, Callable], Tuple[pd.DataFrame, Callable]]:
Expand All @@ -41,10 +41,10 @@ def trade(
chain (str): Chain name
exchange (str): Exchange name
pool (str): Pool name
page (int): Page number
limit (int): Limit of data
fromDateTime (str): Start date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
toDateTime (str): End date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
page (int): Page number
limit (int): Limit of data
sort (str): Sort order
pandas (bool): Return data as pandas DataFrame

Expand Down Expand Up @@ -114,10 +114,10 @@ def candle(
exchange: str,
pool: str,
interval: str = "1d",
page: int = 1,
limit: int = 1000,
fromDateTime: str = None,
toDateTime: str = None,
page: int = 1,
limit: int = 1000,
sort: str = "desc",
pandas: bool = True,
) -> Union[Tuple[Dict, Callable], Tuple[pd.DataFrame, Callable]]:
Expand All @@ -132,10 +132,10 @@ def candle(
exchange (str): Exchange name
pool (str): Pool name
interval (str): Candle interval
page (int): Page number
limit (int): Limit of data
fromDateTime (str): Start date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
toDateTime (str): End date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
page (int): Page number
limit (int): Limit of data
sort (str): Sort order
pandas (bool): Return data as pandas DataFrame

Expand Down Expand Up @@ -203,103 +203,10 @@ def next_request():
else:
return res, next_request

def liquidity(
self,
chain: str,
exchange: str,
pool: str,
page: int = 1,
limit: int = 1000,
fromDateTime: str = None,
toDateTime: str = None,
sort: str = "desc",
pandas: bool = True,
) -> Union[Tuple[Dict, Callable], Tuple[pd.DataFrame, Callable]]:
"""Fetch DEX liquidity data

`GET /api/v1/dex/liquidity`

<https://docs.datamaxiplus.com/rest/dex/liquidity>

Args:
chain (str): Chain name
exchange (str): Exchange name
pool (str): Pool name
page (int): Page number
limit (int): Limit of data
fromDateTime (str): Start date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
toDateTime (str): End date and time (accepts format "2006-01-02 15:04:05" or "2006-01-02")
sort (str): Sort order
pandas (bool): Return data as pandas DataFrame

Returns:
DEX liquidity data in pandas DataFrame and next request function
"""
logging.warning("warning: dex related endpoints are experimental")

check_required_parameters(
[
[chain, "chain"],
[exchange, "exchange"],
[pool, "pool"],
]
)

if page < 1:
raise ValueError("page must be greater than 0")

if limit < 1:
raise ValueError("limit must be greater than 0")

if fromDateTime is not None and toDateTime is not None:
raise ValueError(
"fromDateTime and toDateTime cannot be set at the same time"
)

if sort not in [ASC, DESC]:
raise ValueError("sort must be either asc or desc")

params = {
"chain": chain,
"exchange": exchange,
"pool": pool,
"page": page,
"limit": limit,
"from": fromDateTime,
"to": toDateTime,
"sort": sort,
}

res = self.query("/api/v1/dex/liquidity", params)
if res["data"] is None or len(res["data"]) == 0:
raise ValueError("no data found")

def next_request():
return self.get(
chain,
exchange,
pool,
page + 1,
limit,
fromDateTime,
toDateTime,
sort,
pandas,
)

if pandas:
df = convert_data_to_data_frame(
res["data"],
)
return df, next_request
else:
return res, next_request

def chains(self) -> List[str]:
"""Fetch supported chains accepted by
[datamaxi.Dex.candle](./#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](./#datamaxi.datamaxi.Dex.trade) and
[datamaxi.Dex.liquidity](./#datamaxi.datamaxi.Dex.liquidity).
[datamaxi.Dex.candle](#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](#datamaxi.datamaxi.Dex.trade).

`GET /api/v1/dex/chains`

Expand All @@ -315,9 +222,8 @@ def chains(self) -> List[str]:

def exchanges(self) -> List[str]:
"""Fetch supported exchanges accepted by
[datamaxi.Dex.candle](./#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](./#datamaxi.datamaxi.Dex.trade) and
[datamaxi.Dex.liquidity](./#datamaxi.datamaxi.Dex.liquidity).
[datamaxi.Dex.candle](#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](#datamaxi.datamaxi.Dex.trade).

`GET /api/v1/dex/exchanges`

Expand All @@ -333,9 +239,8 @@ def exchanges(self) -> List[str]:

def pools(self, exchange: str = None, chain: str = None) -> List[Dict]:
"""Fetch supported pools accepted by
[datamaxi.Dex.candle](./#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](./#datamaxi.datamaxi.Dex.trade) and
[datamaxi.Dex.liquidity](./#datamaxi.datamaxi.Dex.liquidity).
[datamaxi.Dex.candle](#datamaxi.datamaxi.Dex.candle),
[datamaxi.Dex.trade](#datamaxi.datamaxi.Dex.trade).

`GET /api/v1/dex/pools`

Expand All @@ -359,7 +264,7 @@ def pools(self, exchange: str = None, chain: str = None) -> List[Dict]:

def intervals(self) -> List[str]:
"""Fetch supported intervals accepted by
[datamaxi.Dex.candle](./#datamaxi.datamaxi.Dex.candle).
[datamaxi.Dex.candle](#datamaxi.datamaxi.Dex.candle).

`GET /api/v1/dex/intervals`

Expand Down
2 changes: 1 addition & 1 deletion datamaxi/datamaxi/forex.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def __call__(

def symbols(self) -> List[str]:
"""Fetch supported symbols accepted by
[datamaxi.Forex.get](./#datamaxi.datamaxi.Forex.get)
[datamaxi.Forex.get](#datamaxi.datamaxi.Forex.get)
API.

`GET /api/v1/forex/symbols`
Expand Down
Loading