Is there any way I can use ccxt
to extract the price of a crypto currency at a given time in the past?
Example: get price of BTC on binance at time 2018-01-24 11:20:01
Advertisement
Answer
You can use the fetch_ohlcv
method on the binance class in CCXT
def fetch_ohlcv(self, symbol, timeframe='1m', since=None, limit=None, params={}):
You’ll need the date as a timestamp in milliseconds, and you can only get it precise to the minute, so take away the seconds, or you’ll get the price for the minute after
timestamp = int(datetime.datetime.strptime("2018-01-24 11:20:00", "%Y-%m-%d %H:%M:%S").timestamp() * 1000)
You can only get the price of BTC in comparison to another currency, we’ll use USDT(closely matches USD) as our comparison currency, so we will look up the price of BTC in the BTC/USDT market
When we use the method, we will set since to your timestamp, but set the limit as one so that we only get one price
import ccxt from pprint import pprint print('CCXT Version:', ccxt.__version__) exchange = ccxt.binance() timestamp = int(datetime.datetime.strptime("2018-01-24 11:20:00+00:00", "%Y-%m-%d %H:%M:%S%z").timestamp() * 1000) response = exchange.fetch_ohlcv('BTC/USDT', '1m', timestamp, 1) pprint(response)
Which will return candlestick values for one candle
[ 1516792860000, // timestamp 11110, // value at beginning of minute, so the value at exactly "2018-01-24 11:20:00" 11110.29, // highest value between "2018-01-24 11:20:00" and "2018-01-24 11:20:59" 11050.91, // lowest value between "2018-01-24 11:20:00" and "2018-01-24 11:20:59" 11052.27, // value just before "2018-01-24 11:21:00" 39.882601 // The volume traded during this minute ]