I tried this code:
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import backtrader as bt
# from __future__ import (absolute_import, division, print_function,
# unicode_literals)
# import backtrader as bt
# LOGIN TO IB REQUIRED
class St(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(self.data)
def run(args=None):
cerebro = bt.Cerebro(stdstats=False)
cerebro.addstrategy(St)
store = bt.stores.IBStore(port=7496)
data = store.getdata(dataname='GBP.USD',
sectype='CASH',
fromdate=datetime.datetime(2019, 9, 11),
todate=datetime.datetime(2019, 9, 12),
timeframe=bt.TimeFrame.Minutes,
compression=5)
cerebro.adddata(data)
cerebro.addstrategy(St)
cerebro.run()
if __name__ == '__main__':
run()
And get this as a response to the cell:
Server Version: 76
TWS Time at connection:20210103 17:14:29 Greenwich Mean Time
The kernel stays running for a bit (its latest version) and then no new data comes before it stops. The above message is also what comes before the dataframe when I simply print the IB data it is working fine.
But when I try to produce an indicator/backtest on it; nothing happens. Any ideas on the issue? As IBStore is built in would backtest usually know which columns to use or should I be matching them as if its CSV?
Thanks