@@ -721,6 +721,133 @@ def delete_order(self,
721721
722722 return self ._request ('delete' , url , headers = headers , params = params , ** kwargs )
723723
724+ def delete_orders (
725+ self ,
726+ * ,
727+ cancel_side : Literal ['all' , 'ask' , 'bid' ] = 'all' ,
728+ pairs : List [str ] = None ,
729+ excluded_pairs : List [str ] = None ,
730+ quote_currencies : List [str ] = None ,
731+ count : int = 20 ,
732+ order_by : OrderBy = 'desc' ,
733+ ** kwargs ) -> Response :
734+ """주문 일괄 취소 접수
735+
736+ API 요청 및 응답에 대한 자세한 정보는 공식 문서 참고:
737+ `Upbit API Doc <https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8-%EC%9D%BC%EA%B4%84-%EC%B7%A8%EC%86%8C-%EC%A0%91%EC%88%98>`_
738+
739+ :param cancel_side: 주문 종류
740+ :param pairs: 취소할 마켓 코드 리스트 (ex. ["KRW-BTC"])
741+ :param excluded_pairs: 제외할 마켓 코드 리스트 (ex. ["KRW-BTC"])
742+ :param quote_currencies: 취소할 거래 화폐 리스트 (ex. ["KRW", "BTC"])
743+ :param count: 취소 접수할 주문의 최대 개수 (default : 20, max : 300)
744+ :param order_by: 정렬 방식
745+ :param kwargs: `requests.Session.request` 호출에 사용할 파라미터
746+
747+ :raises upbit.exceptions.ApiKeyError: 인증 정보 없이 호출시 발생.
748+
749+ :return: API 서버 응답
750+
751+ Usage::
752+
753+ access_key = os.environ.get('UPBIT_OPEN_API_ACCESS_KEY')
754+ secret_key = os.environ.get('UPBIT_OPEN_API_SECRET_KEY')
755+ upbit = Upbit(access_key, secret_key)
756+ res = upbit.delete_orders(cancel_side='all')
757+ print(res.json())
758+
759+ {
760+ "success": {
761+ "count": 2,
762+ "orders": [
763+ {
764+ "uuid": "bbbb8e07-1689-4769-af3e-a117016623f8",
765+ "market": "KRW-ETH"
766+ },
767+ {
768+ "uuid": "4312ba49-5f1a-4a01-9f3b-2d2bce17267e",
769+ "market": "KRW-ETH"
770+ }
771+ ]
772+ },
773+ "failed": {
774+ "count": 1,
775+ "orders": [
776+ {
777+ "uuid": "bdb49a54-de36-4eb4-a963-9c8d4337a9da",
778+ "market": "BTC-XRP"
779+ }
780+ ]
781+ }
782+ }
783+ """
784+ url = self ._endpoint + "/orders/open"
785+ params = {
786+ "cancel_side" : cancel_side ,
787+ "pairs" : pairs ,
788+ "excluded_pairs" : excluded_pairs ,
789+ "quote_currencies" : quote_currencies ,
790+ "count" : count ,
791+ "order_by" : order_by ,
792+ }
793+ headers = self ._get_request_headers (params , headers = kwargs .pop ('headers' , None ))
794+
795+ return self ._request ('delete' , url , headers = headers , params = params , ** kwargs )
796+
797+ def delete_orders_by_id (
798+ self ,
799+ * ,
800+ uuids : Optional [List [str ]] = None ,
801+ identifiers : Optional [List [str ]] = None ,
802+ ** kwargs ) -> Response :
803+ """id로 주문리스트 취소 접수
804+
805+ API 요청 및 응답에 대한 자세한 정보는 공식 문서 참고:
806+ `Upbit API Doc <https://docs.upbit.com/reference/id%EB%A1%9C-%EC%A3%BC%EB%AC%B8%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%B7%A8%EC%86%8C-%EC%A0%91%EC%88%98>`_
807+
808+ .. note:: uuids 또는 identifiers 중 한 가지 필드는 필수이며, 두 가지 필드를 함께 사용할 수 없습니다.
809+
810+ :param uuids: 취소할 주문 UUID의 목록 (최대 20개)
811+ :param identifiers: 취소할 주문 identifier의 목록 (최대 20개)
812+ :param kwargs: `requests.Session.request` 호출에 사용할 파라미터
813+
814+ :raises upbit.exceptions.ApiKeyError: 인증 정보 없이 호출시 발생.
815+
816+ :return: API 서버 응답
817+
818+ Usage::
819+
820+ access_key = os.environ.get('UPBIT_OPEN_API_ACCESS_KEY')
821+ secret_key = os.environ.get('UPBIT_OPEN_API_SECRET_KEY')
822+ upbit = Upbit(access_key, secret_key)
823+ res = upbit.delete_orders_by_id(uuids=['6c1eac69-b9bc-4fbf-9982-e9c4641c453f'])
824+ print(res.json())
825+
826+ {
827+ "success": {
828+ "count": 1,
829+ "orders": [
830+ {
831+ "uuid": "6c1eac69-b9bc-4fbf-9982-e9c4641c453f",
832+ "market": "BTC-ADA"
833+ },
834+ ]
835+ },
836+ "failed": {
837+ "count": 0,
838+ "orders": []
839+ }
840+ }
841+ """
842+ url = self ._endpoint + "/orders/uuids"
843+ params = {
844+ "uuids" : uuids ,
845+ "identifiers" : identifiers ,
846+ }
847+ headers = self ._get_request_headers (params , headers = kwargs .pop ('headers' , None ))
848+
849+ return self ._request ('delete' , url , headers = headers , params = params , ** kwargs )
850+
724851 def create_order (self ,
725852 market : str ,
726853 side : OrderSide ,
0 commit comments