|
21 | 21 | from coinbaseadvanced.models.products import BidAsksPage, ProductBook, ProductsPage, Product, \ |
22 | 22 | CandlesPage, TradesPage, ProductType, Granularity, GRANULARITY_MAP_IN_MINUTES |
23 | 23 | from coinbaseadvanced.models.accounts import AccountsPage, Account |
24 | | -from coinbaseadvanced.models.orders import OrderPlacementSource, OrdersPage, Order, \ |
| 24 | +from coinbaseadvanced.models.orders import OrderPlacementSource, OrdersPage, Order, OrderEdit, \ |
25 | 25 | OrderBatchCancellation, FillsPage, Side, StopDirection, OrderType |
26 | 26 |
|
27 | 27 |
|
@@ -331,6 +331,37 @@ def create_order(self, client_order_id: str, |
331 | 331 | order = Order.from_create_order_response(response) |
332 | 332 | return order |
333 | 333 |
|
| 334 | + def edit_order(self, order_id: str, limit_price: float, base_size: float) -> OrderEdit: |
| 335 | + """ |
| 336 | + https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_editorder |
| 337 | +
|
| 338 | + Edit an order's size (quantity), or price. Only good-till-cancelled (GTC) Limit Orders can be edited. |
| 339 | +
|
| 340 | + Args: |
| 341 | + - order_id: ID of order to edit. |
| 342 | + - limit_price: New price for order. |
| 343 | + - base_size: New size for order |
| 344 | + """ |
| 345 | + |
| 346 | + request_path = f"/api/v3/brokerage/orders/edit" |
| 347 | + method = "POST" |
| 348 | + |
| 349 | + payload = { |
| 350 | + 'order_id': order_id, |
| 351 | + 'price': str(limit_price), |
| 352 | + 'size': str(base_size) |
| 353 | + } |
| 354 | + |
| 355 | + headers = self._build_request_headers(method, request_path, json.dumps(payload)) \ |
| 356 | + if self._is_legacy_auth() \ |
| 357 | + else self._build_request_headers_for_cloud(method, self._host, request_path) |
| 358 | + response = requests.post(self._base_url+request_path, |
| 359 | + json=payload, headers=headers, |
| 360 | + timeout=self.timeout) |
| 361 | + |
| 362 | + edit_result = OrderEdit.from_get_edit_response(response) |
| 363 | + return edit_result |
| 364 | + |
334 | 365 | def cancel_orders(self, order_ids: list) -> OrderBatchCancellation: |
335 | 366 | """ |
336 | 367 | https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_cancelorders |
|
0 commit comments