@@ -96,6 +96,7 @@ def create_order( # pylint: disable=too-many-branches,too-many-arguments # noqa
9696 close_price2 : str | float | None = None ,
9797 deadline : str | None = None ,
9898 userref : int | None = None ,
99+ cl_ord_id : str | None = None ,
99100 * ,
100101 truncate : bool = False ,
101102 reduce_only : bool | None = False ,
@@ -190,6 +191,8 @@ def create_order( # pylint: disable=too-many-branches,too-many-arguments # noqa
190191 :type validate: bool, optional
191192 :param userref: User reference id for example to group orders
192193 :type userref: int, optional
194+ :param cl_ord_id: Client order id (optional)
195+ :type cl_ord_id: str, optional
193196 :raises ValueError: If input is not correct
194197 :return: The transaction id
195198 :rtype: dict
@@ -400,6 +403,8 @@ def create_order( # pylint: disable=too-many-branches,too-many-arguments # noqa
400403 params ["deadline" ] = deadline
401404 if defined (userref ):
402405 params ["userref" ] = userref
406+ if defined (cl_ord_id ):
407+ params ["cl_ord_id" ] = cl_ord_id
403408 if defined (displayvol ):
404409 params ["displayvol" ] = str (displayvol )
405410
@@ -456,6 +461,7 @@ def create_order_batch(
456461 ... "timeinforce": "GTC",
457462 ... "type": "buy",
458463 ... "userref": 16861348843,
464+ ... "cl_ord_id": "my-client-order-id-1",
459465 ... "volume": 1,
460466 ... },
461467 ... {
@@ -464,6 +470,7 @@ def create_order_batch(
464470 ... "timeinforce": "GTC",
465471 ... "type": "sell",
466472 ... "userref": 16861348843,
473+ ... "cl_ord_id": "my-client-order-id-2",
467474 ... "volume": 2,
468475 ... },
469476 ... ],
@@ -491,8 +498,19 @@ def create_order_batch(
491498 extra_params = extra_params ,
492499 )
493500
494- def amend_order (
501+ def amend_order ( # pylint: disable=too-many-arguments # noqa: PLR0913, PLR0917
495502 self : Trade ,
503+ txid : str | None = None ,
504+ cl_ord_id : str | None = None ,
505+ order_qty : str | float | None = None ,
506+ display_qty : str | float | None = None ,
507+ limit_price : str | float | None = None ,
508+ trigger_price : str | float | None = None ,
509+ pair : str | None = None ,
510+ post_only : bool | None = None ,
511+ deadline : str | None = None ,
512+ nonce : int | None = None ,
513+ validate : bool = False ,
496514 * ,
497515 extra_params : dict | None = None ,
498516 ) -> dict :
@@ -504,22 +522,69 @@ def amend_order(
504522
505523 - https://docs.kraken.com/api/docs/rest-api/amend-order
506524
525+ :param txid: The txid of the order to edit
526+ :type txid: str, optional
527+ :param cl_ord_id: Client order id (optional)
528+ :type cl_ord_id: str, optional
529+ :param order_qty: Set a new order quantity
530+ :type order_qty: str | float, optional
531+ :param display_qty: Set a new display quantity
532+ :type display_qty: str | float, optional
533+ :param limit_price: Set a new limit price
534+ :type limit_price: str | float, optional
535+ :param trigger_price: Set a new trigger price
536+ :type trigger_price: str | float, optional
537+ :param pair: Pair of the order, required on amends for non-crypto orders
538+ :type pair: str, optional
539+ :param post_only: Set post-only flag
540+ :type post_only: bool, optional
541+ :param deadline: RFC3339 timestamp
542+ :type deadline: str, optional
543+ :param nonce: Nonce used in construction of API-Sign header
544+ :type nonce: int, optional
545+ :param validate: Validate the order without placing on the market (default: ``False``)
546+ :type validate: bool, optional
547+ :raises ValueError: If both ``txid`` and ``cl_ord_id`` are not set
548+ :return: Success or failure
549+ :rtype: dict
550+
507551 .. code-block:: python
508552 :linenos:
509553 :caption: Spot Trade: Amend order
510554
511555 >>> from kraken.spot import Trade
512556 >>> trade = Trade(key="api-key", secret="secret-key")
513557 >>> trade.amend_order(
514- ... extra_params={
515- ... "txid": "OVM3PT-56ACO-53SM2T",
516- ... "limit_price": "105636.9",
517- ... }
558+ ... txid="OVM3PT-56ACO-53SM2T",
559+ ... limit_price="105636.9"
518560 ... )
519561 """
562+ params : dict = {"validate" : validate }
563+ if defined (txid ):
564+ params ["txid" ] = txid
565+ if defined (cl_ord_id ):
566+ params ["cl_ord_id" ] = cl_ord_id
567+ if defined (order_qty ):
568+ params ["order_qty" ] = str (order_qty )
569+ if defined (display_qty ):
570+ params ["display_qty" ] = str (display_qty )
571+ if defined (limit_price ):
572+ params ["limit_price" ] = str (limit_price )
573+ if defined (trigger_price ):
574+ params ["trigger_price" ] = str (trigger_price )
575+ if defined (pair ):
576+ params ["pair" ] = pair
577+ if defined (post_only ):
578+ params ["post_only" ] = post_only
579+ if defined (deadline ):
580+ params ["deadline" ] = deadline
581+ if defined (nonce ):
582+ params ["nonce" ] = nonce
583+
520584 return self .request ( # type: ignore[return-value]
521585 "POST" ,
522586 uri = "/0/private/AmendOrder" ,
587+ params = params ,
523588 extra_params = extra_params ,
524589 )
525590
@@ -632,21 +697,24 @@ def edit_order( # pylint: disable=too-many-arguments # noqa: PLR0913, PLR0917
632697 @ensure_string ("txid" )
633698 def cancel_order (
634699 self : Trade ,
635- txid : str ,
700+ txid : str | None = None ,
701+ cl_ord_id : str | None = None ,
636702 * ,
637703 extra_params : dict | None = None ,
638704 ) -> dict :
639705 """
640706 Cancel a specific order by ``txid``. Instead of a transaction id
641- a user reference id can be passed.
707+ a user reference id or client order id can be passed.
642708
643709 Requires the ``Cancel/close orders`` permission in
644710 the API key settings.
645711
646712 - https://docs.kraken.com/api/docs/rest-api/cancel-order
647713
648- :param txid: Transaction id or comma delimited list of user reference ids to cancel.
649- :type txid: str
714+ :param txid: Transaction id, client order id, or comma delimited list of user reference ids to cancel.
715+ :type txid: str, optional
716+ :param cl_ord_id: Client order id (optional)
717+ :type cl_ord_id: str, optional
650718 :return: Success or failure - Number of closed orders
651719 :rtype: dict
652720
@@ -659,10 +727,17 @@ def cancel_order(
659727 >>> trade.cancel_order(txid="OAUHYR-YCVK6-P22G6P")
660728 { 'count': 1 }
661729 """
730+ params : dict = {}
731+ if defined (txid ):
732+ params ["txid" ] = txid
733+ if defined (cl_ord_id ):
734+ params ["cl_ord_id" ] = cl_ord_id
735+
736+
662737 return self .request ( # type: ignore[return-value]
663738 method = "POST" ,
664739 uri = "/0/private/CancelOrder" ,
665- params = { "txid" : txid } ,
740+ params = params ,
666741 extra_params = extra_params ,
667742 )
668743
@@ -742,7 +817,7 @@ def cancel_order_batch(
742817 extra_params : dict | None = None ,
743818 ) -> dict :
744819 """
745- Cancel a a list of orders by ``txid`` or ``userref``
820+ Cancel a list of orders by ``txid``, ``userref`` or ``cl_ord_id``.
746821
747822 Requires the ``Cancel/close orders`` permission in
748823 the API key settings.
0 commit comments