Skip to content

Instantly share code, notes, and snippets.

@rokcarl
Created February 1, 2018 08:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rokcarl/840267170f8481a5c4c0d8ca39576f0c to your computer and use it in GitHub Desktop.
Save rokcarl/840267170f8481a5c4c0d8ca39576f0c to your computer and use it in GitHub Desktop.
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import json
import requests
import struct
from backtrader.feed import DataBase
from backtrader import date2num
from backtrader import TimeFrame
class CryptoCompare(DataBase):
def __init__(self, exchange, symbol):
super(CryptoCompare, self).__init__()
self.exchange = exchange
self.symbol = symbol
url_raw = "https://min-api.cryptocompare.com/data/histominute?fsym={}&tsym={}&limit=1440&e={}"
url = url_raw.format(self.symbol.split("/")[0], self.symbol.split("/")[1], self.exchange.title())
self.result = json.loads(requests.get(url).text)
self.candles = self.result["Data"]
self.candles_iter = iter(self.candles)
def _load(self):
try:
candle = next(self.candles_iter)
except StopIteration:
return False
self.l.datetime[0] = date2num(datetime.datetime.fromtimestamp(candle["time"]))
self.l.open[0] = candle["open"]
self.l.high[0] = candle["high"]
self.l.low[0] = candle["low"]
self.l.close[0] = candle["close"]
self.l.volume[0] = candle["volumeto"]
return True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment