retrying bitfinex api operations
This commit is contained in:
parent
0d68b2684d
commit
2a6dc24300
@ -58,7 +58,7 @@ class BfxBot:
|
|||||||
await self.__status[Symbol.from_str(p.symbol)].add_position(p)
|
await self.__status[Symbol.from_str(p.symbol)].add_position(p)
|
||||||
|
|
||||||
# updating orders
|
# updating orders
|
||||||
active_orders = await self.__bfx.get_active_orders(str(symbol))
|
active_orders = await self.__bfx.get_active_orders(symbol)
|
||||||
|
|
||||||
for o in active_orders:
|
for o in active_orders:
|
||||||
self.__status[symbol].add_order(o)
|
self.__status[symbol].add_order(o)
|
||||||
|
@ -1,11 +1,35 @@
|
|||||||
from bfxapi.rest.bfx_rest import BfxRest
|
from bfxapi.rest.bfx_rest import BfxRest
|
||||||
|
from retrying_async import retry
|
||||||
|
|
||||||
|
from bfxbot.currency import Symbol
|
||||||
|
|
||||||
|
|
||||||
class BfxWrapper(BfxRest):
|
class BfxWrapper(BfxRest):
|
||||||
def __init__(self, api_key: str, api_secret: str):
|
def __init__(self, api_key: str, api_secret: str):
|
||||||
super().__init__(API_KEY=api_key, API_SECRET=api_secret)
|
super().__init__(API_KEY=api_key, API_SECRET=api_secret)
|
||||||
|
|
||||||
|
@retry()
|
||||||
|
async def get_public_ticker(self, symbol):
|
||||||
|
if isinstance(symbol, Symbol):
|
||||||
|
symbol = str(symbol)
|
||||||
|
|
||||||
|
return await super().get_public_ticker(symbol)
|
||||||
|
|
||||||
|
@retry()
|
||||||
|
async def get_active_position(self):
|
||||||
|
return await super().get_active_position()
|
||||||
|
|
||||||
|
@retry()
|
||||||
|
async def get_active_orders(self, symbol):
|
||||||
|
if isinstance(symbol, Symbol):
|
||||||
|
symbol = str(symbol)
|
||||||
|
|
||||||
|
return await super().get_active_orders(symbol)
|
||||||
|
|
||||||
async def get_current_prices(self, symbol) -> (float, float, float):
|
async def get_current_prices(self, symbol) -> (float, float, float):
|
||||||
|
if isinstance(symbol, Symbol):
|
||||||
|
symbol = str(symbol)
|
||||||
|
|
||||||
tickers = await self.get_public_ticker(symbol)
|
tickers = await self.get_public_ticker(symbol)
|
||||||
|
|
||||||
bid_price = tickers[0]
|
bid_price = tickers[0]
|
||||||
|
12
strategy.py
12
strategy.py
@ -54,12 +54,12 @@ class TrailingStopStrategy(Strategy):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.stop_percentage: float = None
|
self.stop_percentage: float = None
|
||||||
|
|
||||||
def position_on_new_tick(self, position: Position, ss: SymbolStatus) -> (PositionState, List[Event]):
|
def position_on_new_tick(self, current_position: Position, ss: SymbolStatus) -> (PositionState, List[Event]):
|
||||||
events = []
|
events = []
|
||||||
|
|
||||||
pl_perc = net_pl_percentage(position.profit_loss_percentage, TAKER_FEE)
|
pl_perc = net_pl_percentage(current_position.profit_loss_percentage, TAKER_FEE)
|
||||||
prev = ss.previous_pw(position.id)
|
prev = ss.previous_pw(current_position.id)
|
||||||
event_metadata = EventMetadata(position_id=position.id)
|
event_metadata = EventMetadata(position_id=current_position.id)
|
||||||
|
|
||||||
if pl_perc > self.GOOD_PROFIT_PERC:
|
if pl_perc > self.GOOD_PROFIT_PERC:
|
||||||
state = PositionState.PROFIT
|
state = PositionState.PROFIT
|
||||||
@ -73,12 +73,14 @@ class TrailingStopStrategy(Strategy):
|
|||||||
events.append(Event(EventKind.CLOSE_POSITION, ss.current_tick, event_metadata))
|
events.append(Event(EventKind.CLOSE_POSITION, ss.current_tick, event_metadata))
|
||||||
state = PositionState.CRITICAL
|
state = PositionState.CRITICAL
|
||||||
|
|
||||||
pw = PositionWrapper(position, state=state, net_profit_loss=position.profit_loss,
|
pw = PositionWrapper(current_position, state=state, net_profit_loss=current_position.profit_loss,
|
||||||
net_profit_loss_percentage=pl_perc)
|
net_profit_loss_percentage=pl_perc)
|
||||||
|
|
||||||
if not prev or prev.state() == state:
|
if not prev or prev.state() == state:
|
||||||
return pw, events
|
return pw, events
|
||||||
|
|
||||||
|
print(f"{prev.state()} vs {state}")
|
||||||
|
|
||||||
if state == PositionState.PROFIT:
|
if state == PositionState.PROFIT:
|
||||||
events.append(Event(EventKind.REACHED_GOOD_PROFIT, ss.current_tick, event_metadata))
|
events.append(Event(EventKind.REACHED_GOOD_PROFIT, ss.current_tick, event_metadata))
|
||||||
elif state == PositionState.MINIMUM_PROFIT:
|
elif state == PositionState.MINIMUM_PROFIT:
|
||||||
|
Loading…
Reference in New Issue
Block a user