Skip to content

Commit

Permalink
[Exchange] fix open position check and set_symbol_position_mode
Browse files Browse the repository at this point in the history
tmp
  • Loading branch information
techfreaque committed Jan 19, 2023
1 parent 3770109 commit ee7f10f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
10 changes: 6 additions & 4 deletions octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,9 +427,11 @@ async def get_positions(self, symbols=None, **kwargs: dict) -> list:
]

async def get_position(self, symbol: str, **kwargs: dict) -> dict:
return self.adapter.adapt_position(
await self.client.fetch_position(symbol=symbol, params=kwargs)
)
if self.client.has.get("fetchPosition"):
return self.adapter.adapt_position(
await self.client.fetch_position(symbol=symbol, params=kwargs)
)
raise NotImplementedError("get_position is not implemented")

async def get_funding_rate(self, symbol: str, **kwargs: dict) -> dict:
return self.adapter.adapt_funding_rate(
Expand All @@ -449,7 +451,7 @@ async def set_symbol_margin_type(self, symbol: str, isolated: bool):
marginType=self.CCXT_ISOLATED if isolated else self.CCXT_CROSSED)

async def set_symbol_position_mode(self, symbol: str, one_way: bool):
return await self.client.set_position_mode(self, hedged=not one_way, symbol=symbol)
return await self.client.set_position_mode(hedged=not one_way, symbol=symbol)

async def set_symbol_partial_take_profit_stop_loss(self, symbol: str, inverse: bool,
tp_sl_mode: enums.TakeProfitStopLossMode):
Expand Down
3 changes: 2 additions & 1 deletion octobot_trading/exchanges/traders/trader.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ cdef class Trader(util.Initializable):
cpdef object set_risk(self, object risk)
cpdef object convert_order_to_trade(self, object order)

cdef bint _has_open_position(self, str symbol)
# any() cant be cythonized
# cdef bool _has_open_position(self, str symbol)
7 changes: 5 additions & 2 deletions octobot_trading/exchanges/traders/trader.py
Original file line number Diff line number Diff line change
Expand Up @@ -670,5 +670,8 @@ def _has_open_position(self, symbol):
:param symbol: the position symbol
:return: True if open position for :symbol: exists
"""
return len(self.exchange_manager.exchange_personal_data.positions_manager.get_symbol_positions(
symbol=symbol)) != 0
return any(
position.size
for position in self.exchange_manager.exchange_personal_data.positions_manager.get_symbol_positions(
symbol=symbol
))

0 comments on commit ee7f10f

Please sign in to comment.