For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See:

quandl example

  • Hello, backtrader newbie here, not an expert python guy, but am still learning,

    I'm trying to use quandl, but have yet to see any sample code on how it works...
    according to the documents, you will need baseURL, but not sure what they want here, I believe my code starts like this, but need help to just get whatever data i can get, can anyone help me? I just need a sample of the code should look like.. I'm also sure I need to use my APIkey as well in this case...

    data = bt.feeds.Quandl(


  • administrators

    There is no need to apply the baseurl parameter. It is only there in case the base url of the service would change, allowing the end user to keep on working.

    The parameters and default values are documented here:

    The important things:

    • dataset which defaults to WIKI (just change it if you need something from other dataset)
    • dataname which is the value to download from the dataset
    • apikey, just put yours
    mydata = bt.feeds.Quandl(dataname='YHOO' apikey='myapikey', dataset='myspecialdataset')

    You can additionally configure any of the standard parameters of the data feeds (the most important being): fromdate, todate, sessionstart, sessionend, timeframe, compression, tz

    Note (from the top of the community)

    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See:

  • thanks that worked!

  • Hi , I am trying to play around with the example stategy, but can´t get the data feed to work. What am i missing ? (AttributeError: 'NoneType' object has no attribute 'close')
    Quandl returns the fx-data with a column rate instead of close.

    from datetime import datetime
    import backtrader as bt
    class SmaCross(bt.SignalStrategy):
    	params = (('pfast', 10), ('pslow', 30),)
    	def __init__(self):
    		sma1, sma2 = bt.ind.SMA(period=self.p.pfast), bt.ind.SMA(period=self.p.pslow)
    		self.signal_add(bt.SIGNAL_LONG, bt.ind.CrossOver(sma1, sma2))
    cerebro = bt.Cerebro()
    data = bt.feeds.Quandl(dataname='CURRFX/GBPEUR', apikey='xxxxxxxx')

  • administrators

    That's an indication that something has happened.

    • The connection to Quandl has failed
    • There was no data received

    The original code was from the original YahooFinanceData and not much care was put into sending a notification back to the system (they didn't exist back then) or to raise an exception indicating an approximate error condition.

  • administrators

    See Docs - Data Feeds Reference and the reference for the Quandl data feed.

    It could be (unknown here) that what you have before the / is the dataset and you have to pass it using that parameter, dataset=CURRFX

Log in to reply