Add delete open order endpoint
This commit is contained in:
		| @@ -123,6 +123,12 @@ def trades_delete(tradeid: int, rpc: RPC = Depends(get_rpc)): | ||||
|     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 | ||||
| @router.get('/edge', tags=['info']) | ||||
| def edge(rpc: RPC = Depends(get_rpc)): | ||||
|   | ||||
| @@ -812,6 +812,29 @@ class RPC: | ||||
|             else: | ||||
|                 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]]: | ||||
|         """ | ||||
|         Handler for delete <id>. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user