|
4 | 4 | """CLI tool to interact with the trading API.""" |
5 | 5 |
|
6 | 6 | from collections import deque |
7 | | -from datetime import datetime, timedelta, timezone |
| 7 | +from datetime import datetime, timedelta |
8 | 8 | from decimal import Decimal |
9 | 9 | from enum import Enum |
10 | 10 | from typing import AsyncIterator |
@@ -170,56 +170,50 @@ async def list_gridpool_trades( |
170 | 170 | print_trade(trade, gid) |
171 | 171 |
|
172 | 172 |
|
| 173 | +# pylint: disable=too-many-arguments |
173 | 174 | async def list_gridpool_orders( |
174 | 175 | url: str, |
175 | 176 | auth_key: str, |
176 | 177 | *, |
177 | | - delivery_start: datetime, |
| 178 | + delivery_from: datetime | None, |
| 179 | + delivery_to: datetime | None, |
178 | 180 | gid: int, |
179 | 181 | sign_secret: str | None = None, |
180 | 182 | ) -> None: |
181 | 183 | """List orders and stream new gridpool orders. |
182 | 184 |
|
183 | | - If delivery_start is provided, list historical orders and stream new orders |
184 | | - for the 15 minute delivery period starting at delivery_start. |
185 | | - If no delivery_start is provided, stream new orders for any delivery period. |
| 185 | + Optionally orders can be filtered by delivery period. |
186 | 186 |
|
187 | 187 | Note that retrieved sort order for listed orders (starting from the newest) |
188 | 188 | is reversed in chunks trying to bring more recent orders to the bottom. |
189 | 189 |
|
190 | 190 | Args: |
191 | 191 | url: URL of the trading API. |
192 | 192 | auth_key: API key. |
193 | | - delivery_start: Start of the delivery period or None. |
| 193 | + delivery_from: Start timestamp (inclusive) to filter delivery start times or None. |
| 194 | + delivery_to: End timestamp (exclusive) to filter delivery start times or None. |
194 | 195 | gid: Gridpool ID. |
195 | 196 | sign_secret: The cryptographic secret to use for HMAC generation. |
196 | 197 | """ |
197 | 198 | client = Client(server_url=url, auth_key=auth_key, sign_secret=sign_secret) |
198 | 199 |
|
199 | 200 | print_order_header() |
200 | 201 |
|
201 | | - delivery_time_filter = None |
202 | | - # If delivery period is selected, list historical orders also |
203 | | - if delivery_start is not None: |
204 | | - check_delivery_start(delivery_start) |
205 | | - delivery_time_filter = DeliveryTimeFilter( |
206 | | - time_interval=Interval( |
207 | | - start_time=delivery_start, |
208 | | - end_time=delivery_start + timedelta(minutes=15), |
209 | | - ), |
210 | | - duration_filters=[], |
211 | | - ) |
212 | | - lst = client.list_gridpool_orders(gid, delivery_time_filter=delivery_time_filter) |
213 | | - |
214 | | - async for order in reverse_iterator(lst): |
215 | | - print_order(order, gid) |
| 202 | + delivery_time_filter = DeliveryTimeFilter(Interval(delivery_from, delivery_to)) |
216 | 203 |
|
217 | | - if delivery_start and delivery_start <= datetime.now(timezone.utc): |
218 | | - return |
| 204 | + lst = client.list_gridpool_orders( |
| 205 | + gid, |
| 206 | + delivery_time_filter=delivery_time_filter, |
| 207 | + ) |
219 | 208 |
|
220 | 209 | stream = client.gridpool_orders_stream( |
221 | | - gid, delivery_time_filter=delivery_time_filter |
| 210 | + gid, |
| 211 | + delivery_time_filter=delivery_time_filter, |
222 | 212 | ).new_receiver() |
| 213 | + |
| 214 | + async for order in reverse_iterator(lst): |
| 215 | + print_order(order, gid) |
| 216 | + |
223 | 217 | async for order in stream: |
224 | 218 | print_order(order, gid) |
225 | 219 |
|
|
0 commit comments