Add delete open order endpoint
This commit is contained in:
parent
a704c43402
commit
c855e2d79c
@ -123,6 +123,12 @@ def trades_delete(tradeid: int, rpc: RPC = Depends(get_rpc)):
|
|||||||
return rpc._rpc_delete(tradeid)
|
return rpc._rpc_delete(tradeid)
|
||||||
|
|
||||||
|
|
||||||
|
@router.delete('/trades/{tradeid}/open-order', response_model=OpenTradeSchema, tags=['trading'])
|
||||||
|
def cancel_open_order(tradeid: int, rpc: RPC = Depends(get_rpc)):
|
||||||
|
rpc._rpc_cancel_open_order(tradeid)
|
||||||
|
return rpc._rpc_trade_status([tradeid])[0]
|
||||||
|
|
||||||
|
|
||||||
# TODO: Missing response model
|
# TODO: Missing response model
|
||||||
@router.get('/edge', tags=['info'])
|
@router.get('/edge', tags=['info'])
|
||||||
def edge(rpc: RPC = Depends(get_rpc)):
|
def edge(rpc: RPC = Depends(get_rpc)):
|
||||||
|
@ -812,6 +812,29 @@ class RPC:
|
|||||||
else:
|
else:
|
||||||
raise RPCException(f'Failed to enter position for {pair}.')
|
raise RPCException(f'Failed to enter position for {pair}.')
|
||||||
|
|
||||||
|
def _rpc_cancel_open_order(self, trade_id: int):
|
||||||
|
if self._freqtrade.state != State.RUNNING:
|
||||||
|
raise RPCException('trader is not running')
|
||||||
|
with self._freqtrade._exit_lock:
|
||||||
|
# Query for trade
|
||||||
|
trade = Trade.get_trades(
|
||||||
|
trade_filter=[Trade.id == trade_id, Trade.is_open.is_(True), ]
|
||||||
|
).first()
|
||||||
|
if not trade:
|
||||||
|
logger.warning('cancel_open_order: Invalid trade_id received.')
|
||||||
|
raise RPCException('Invalid trade_id')
|
||||||
|
if not trade.open_order_id:
|
||||||
|
logger.warning('cancel_open_order: No open order for trade_id.')
|
||||||
|
raise RPCException('No open order for trade_id')
|
||||||
|
|
||||||
|
try:
|
||||||
|
order = self._freqtrade.exchange.fetch_order(trade.open_order_id, trade.pair)
|
||||||
|
except ExchangeError as e:
|
||||||
|
logger.info(f"Cannot query order for {trade} due to {e}.", exc_info=True)
|
||||||
|
raise RPCException("Order not found.")
|
||||||
|
self._freqtrade.handle_cancel_order(order, trade, CANCEL_REASON['USER_CANCEL'])
|
||||||
|
Trade.commit()
|
||||||
|
|
||||||
def _rpc_delete(self, trade_id: int) -> Dict[str, Union[str, int]]:
|
def _rpc_delete(self, trade_id: int) -> Dict[str, Union[str, int]]:
|
||||||
"""
|
"""
|
||||||
Handler for delete <id>.
|
Handler for delete <id>.
|
||||||
|
Loading…
Reference in New Issue
Block a user