Skip to content
Open
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
15 changes: 15 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"cSpell.words": [
"APIKEY",
"Basiri",
"bnbusdt",
"btcusdt",
"coinex",
"isort",
"levelname",
"msecs",
"mypy",
"tabdeal",
"websockets"
]
}
2 changes: 1 addition & 1 deletion requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
requests==2.27.1
requests==2.28.0
websocket-client==1.3.3
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
exclude=["tests", "*.tests", "*.tests.*", "tests.*"]
),
install_requires=[req for req in requirements],
python_requires=">=3.6",
python_requires=">=3.7",
include_package_data=True,
)
50 changes: 28 additions & 22 deletions tabdeal/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,12 @@ def _update_session_headers(self, headers):
self.session.headers.update(headers)

def client_get_orders(
self,
symbol: str = None,
start_time: int = None,
end_time: int = None,
limit: int = None,
url="allOrders"
self,
symbol: str = None,
start_time: int = None,
end_time: int = None,
limit: int = None,
url="allOrders",
):
data = dict()

Expand Down Expand Up @@ -177,12 +177,13 @@ def client_get_open_orders(self, symbol: str = None, url="openOrders"):
data=data,
)


def client_get_non_expired_all_orders(self,
start_time: int = None,
end_time: int = None,
limit: int = None,
url = "nonExpiredAllOrders"):
def client_get_non_expired_all_orders(
self,
start_time: int = None,
end_time: int = None,
limit: int = None,
url="nonExpiredAllOrders",
):
data = dict()

if start_time:
Expand All @@ -193,26 +194,27 @@ def client_get_non_expired_all_orders(self,

if limit:
data.update({"limit": limit})

return self.request(
url=url,
method=RequestTypes.GET,
security_type=SecurityTypes.TRADE,
data=data,
)

def client_get_paginated_open_orders(self, symbol: str = None, page: int = None, page_size: int = None,
url="paginatedOpenOrders"):
def client_get_paginated_open_orders(
self,
symbol: str = None,
page: int = None,
page_size: int = None,
url="paginatedOpenOrders",
):
data = dict() if not symbol else add_symbol_to_data(dict(), symbol)
if page is not None:
data.update({
'page': page
})
data.update({"page": page})

if page_size is not None:
data.update({
'page_size': page_size
})
data.update({"page_size": page_size})

return self.request(
url=url,
Expand Down Expand Up @@ -252,7 +254,11 @@ def get_order(self, symbol: str, order_id: int = None, client_order_id: str = No
)

def cancel_order(
self, symbol: str, order_id: int = None, client_order_id: str = None, url="order"
self,
symbol: str,
order_id: int = None,
client_order_id: str = None,
url="order",
):
data = dict()

Expand Down
160 changes: 96 additions & 64 deletions tabdeal/isolated_margin.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,8 @@ class IsolatedMargin(Client):
# Isolated Margin

def transfer(
self,
asset: str,
symbol: str,
amount: str,
trans_from: str,
trans_to: str):
self, asset: str, symbol: str, amount: str, trans_from: str, trans_to: str
):

data = {
"asset": asset,
Expand All @@ -32,15 +28,23 @@ def transfer(
data=data,
)

def transfer_spot_to_isolated_margin(self, asset: str,
symbol: str,
amount: str):
return self.transfer(asset=asset, symbol=symbol, amount=amount, trans_from="SPOT", trans_to="ISOLATED_MARGIN")
def transfer_spot_to_isolated_margin(self, asset: str, symbol: str, amount: str):
return self.transfer(
asset=asset,
symbol=symbol,
amount=amount,
trans_from="SPOT",
trans_to="ISOLATED_MARGIN",
)

def transfer_isolated_margin_to_spot(self, asset: str,
symbol: str,
amount: str):
return self.transfer(asset=asset, symbol=symbol, amount=amount, trans_from="ISOLATED_MARGIN", trans_to="SPOT")
def transfer_isolated_margin_to_spot(self, asset: str, symbol: str, amount: str):
return self.transfer(
asset=asset,
symbol=symbol,
amount=amount,
trans_from="ISOLATED_MARGIN",
trans_to="SPOT",
)

def get_isolated_margin_account(self, symbols=None, tabdeal_symbols=None):
symbols_str = ""
Expand All @@ -59,25 +63,29 @@ def get_isolated_margin_account(self, symbols=None, tabdeal_symbols=None):
url="margin/isolated/account/",
method=RequestTypes.GET,
security_type=SecurityTypes.TRADE,
data=data
data=data,
)

def get_all_assets(
self,
self,
):

return self.request(
url="margin/allAssets",
method=RequestTypes.GET,
security_type=SecurityTypes.NONE
security_type=SecurityTypes.NONE,
)

def get_transfers(self, asset: str = None, symbol: str = None, type: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None
):
def get_transfers(
self,
asset: str = None,
symbol: str = None,
type: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None,
):
data = {}
if asset:
data["asset"] = asset
Expand All @@ -102,15 +110,15 @@ def get_transfers(self, asset: str = None, symbol: str = None, type: str = None,
)

def create_margin_order(
self,
symbol: str,
side: OrderSides,
type: OrderTypes,
borrow_quantity: str,
quantity: str,
client_order_id: str = None,
price: str = None,
stop_price: str = None
self,
symbol: str,
side: OrderSides,
type: OrderTypes,
borrow_quantity: str,
quantity: str,
client_order_id: str = None,
price: str = None,
stop_price: str = None,
):

data = {
Expand All @@ -119,7 +127,7 @@ def create_margin_order(
"quantity": quantity,
"price": 0 if not price else price,
"stopPrice": 0 if not stop_price else stop_price,
"borrow_quantity": 0 if not borrow_quantity else borrow_quantity
"borrow_quantity": 0 if not borrow_quantity else borrow_quantity,
}

add_symbol_to_data(data, symbol)
Expand All @@ -138,29 +146,47 @@ def get_open_margin_orders(self, symbol: str = None):
return self.client_get_open_orders(symbol=symbol, url="margin/openOrders")

def cancel_margin_order(
self, symbol: str, order_id: int = None, client_order_id: str = None
self, symbol: str, order_id: int = None, client_order_id: str = None
):
return self.cancel_order(symbol=symbol, order_id=order_id, client_order_id=client_order_id, url="margin/order")
return self.cancel_order(
symbol=symbol,
order_id=order_id,
client_order_id=client_order_id,
url="margin/order",
)

def get_margin_order(self, symbol: str, order_id: int = None, client_order_id: str = None):
return self.get_order(symbol=symbol, order_id=order_id, client_order_id=client_order_id)
def get_margin_order(
self, symbol: str, order_id: int = None, client_order_id: str = None
):
return self.get_order(
symbol=symbol, order_id=order_id, client_order_id=client_order_id
)

def get_all_margin_orders(
self,
symbol: str,
start_time: int = None,
end_time: int = None,
limit: int = None,
self,
symbol: str,
start_time: int = None,
end_time: int = None,
limit: int = None,
):
return self.client_get_orders(
symbol=symbol,
start_time=start_time,
end_time=end_time,
limit=limit,
url="margin/allOrders",
)

def get_margin_repay_details(
self,
asset: str = None,
isolatedSymbol: str = None,
txId: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None,
):
return self.client_get_orders(symbol=symbol, start_time=start_time, end_time=end_time, limit=limit,
url="margin/allOrders")

def get_margin_repay_details(self, asset: str = None, isolatedSymbol: str = None, txId: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None
):
data = {}
if asset:
data["asset"] = asset
Expand All @@ -184,7 +210,7 @@ def get_margin_repay_details(self, asset: str = None, isolatedSymbol: str = None
data=data,
)

def get_margin_loan_details(self, asset: str, tx_id: str=None):
def get_margin_loan_details(self, asset: str, tx_id: str = None):
data = {"asset": asset}
if tx_id is not None:
data["tx_id"] = tx_id
Expand All @@ -195,12 +221,15 @@ def get_margin_loan_details(self, asset: str, tx_id: str=None):
data=data,
)

def get_margin_force_liquidation_rec(self, isolatedSymbol: str = None, txId: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None
):
def get_margin_force_liquidation_rec(
self,
isolatedSymbol: str = None,
txId: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None,
):
data = {}
if start_time:
data["startTime"] = start_time
Expand All @@ -222,12 +251,15 @@ def get_margin_force_liquidation_rec(self, isolatedSymbol: str = None, txId: str
data=data,
)

def get_interests(self, asset: str = None, isolatedSymbol: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None
):
def get_interests(
self,
asset: str = None,
isolatedSymbol: str = None,
start_time: int = None,
end_time: int = None,
size: int = None,
current: int = None,
):
data = {}
if asset:
data["asset"] = asset
Expand Down
Loading