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