Back to Ccxt

Okx Fetch Closed Orders Pagenumber Pagination

wiki/examples/py/okx-fetch-closed-orders-pagenumber-pagination.md

4.5.521.8 KB
Original Source
python
# -*- coding: utf-8 -*-

import os
import sys


import ccxt  # noqa: E402

'''
This is an example of pagenumber-based pagination as described here:
https://github.com/ccxt/ccxt/wiki/Manual#pagenumber-based-cursor-pagination
'''

symbol = 'ETH/BTC'

exchange = ccxt.okx({
   'apiKey': 'YOUR_API_KEY',  # put your values here
   'secret': 'YOUR_SECRET',
})


def get_all_closed_orders_since_to(exchange, symbol, since, to):
   result = []
   page = 1
   min_timestamp = to
   print('Fetching all orders since', exchange.iso8601(since), since)
   while min_timestamp > since:
       try:
           print('Fetching page', page)
           params = {'current_page': page}
           orders = exchange.fetch_closed_orders(symbol, since, None, params)
           if len(orders):
               min_timestamp = orders[0]['timestamp']
               print('Fetched', len(orders), 'orders, the oldest order as of', exchange.iso8601(min_timestamp), min_timestamp)
               result += orders
               page += 1
           else:
               min_timestamp = since
       except ccxt.ExchangeNotAvailable as e:
           pass  # retry
   return result


one_day = 24 * 60 * 60 * 1000  # in milliseconds
since = exchange.parse8601('2018-11-25T00:00:00')  # 0:00 AM UTC in milliseconds
# or
since = exchange.milliseconds() - one_day  # last 24 hours in milliseconds

to = since + one_day

all_orders = get_all_closed_orders_since_to(exchange, symbol, since, to)

all_orders = exchange.sort_by(all_orders, 'timestamp')

print('Fetched all', len(all_orders), 'orders')
print('The oldest order as of', exchange.iso8601(all_orders[0]['timestamp']))
print('The youngest order as of', exchange.iso8601(all_orders[-1]['timestamp']))
print('Done.')