tailwind #9

Manually merged
peperunas merged 157 commits from tailwind into master 2020-12-28 18:38:52 +00:00
Showing only changes of commit 00a100f618 - Show all commits

View File

@ -1,13 +1,29 @@
from enum import Enum
from bfxapi.rest.bfx_rest import BfxRest
from retrying_async import retry
from bfxbot.currency import Symbol
class Direction(Enum):
UP = 1,
DOWN = -1
class OrderType(Enum):
EXCHANGE = "EXCHANGE",
MARGIN = "MARGIN"
class BfxWrapper(BfxRest):
def __init__(self, api_key: str, api_secret: str):
super().__init__(API_KEY=api_key, API_SECRET=api_secret)
#######################################
# OVERRIDDEN METHODS TO IMPLEMENT RETRY
#######################################
@retry()
async def get_public_ticker(self, symbol):
if isinstance(symbol, Symbol):
@ -33,6 +49,14 @@ class BfxWrapper(BfxRest):
return await super().get_trades(symbol, start, end)
@retry()
async def post(self, api_path: str, data: dict):
return await super.post(api_path, data)
################################
# NEW METHODS
################################
async def get_current_prices(self, symbol) -> (float, float, float):
if isinstance(symbol, Symbol):
symbol = str(symbol)
@ -59,7 +83,10 @@ class BfxWrapper(BfxRest):
return balance
async def get_balance_delta(self, symbol: Symbol, start: float, end: float):
trades = await self.get_trades(symbol, start, end)
async def maximum_order_amount(self, symbol: Symbol, direction: Direction,
order_type: OrderType = OrderType.EXCHANGE,
rate: int = 1):
api_path = "auth/calc/order/avail"
return sum([t.amount for t in trades])
return await self.post(api_path,
{'symbol': str(symbol), 'type': order_type.value, "dir": direction.value, "rate": rate})