Backtrader:Can't connect to live data

Discussion in 'Automated Trading' started by rudj87, Dec 27, 2021.

  1. rudj87

    rudj87

    Hi,
    I just started learning programming in python for trading with backtrader, now I'm doing some connection tests with IB Gateway-Backtrader with IbPY API.
    I can't understand why sometimes it works but most of the time the program seems that it can't download historical data to go and use live data.
    This is the simple test program:

    Code:
    import sys
    import time
    
    import backtrader as bt
    
    
    class Example(bt.Strategy):
    
        def logdata(self):
            txt = []
            txt.append('{}'.format(len(self)))
    
            txt.append('{}'.format(
                self.data.datetime.datetime(0).isoformat())
            )
            txt.append('{:.2f}'.format(self.data.open[0]))
            txt.append('{:.2f}'.format(self.data.high[0]))
            txt.append('{:.2f}'.format(self.data.low[0]))
            txt.append('{:.2f}'.format(self.data.close[0]))
            txt.append('{:.2f}'.format(self.data.volume[0]))
            txt.append('operate:{}'.format(self.operate))
            print(','.join(txt))
    
        def notify_data(self, data, status, *args, **kwargs):
            if status == data.LIVE:  # the data has switched to live data
                self.operate = True
                pass
            else:
                self.operate = False
    
        def next(self):
    
            self.logdata()
            self.buysell()
    
        def buysell(self):
            if self.operate == False:
                return
            print("buying 1000...")
            self.buy(size=1000)
            time.sleep(15)
            print("closing buy...")
            self.close()
            time.sleep(15)
            print("selling 1000...")
            self.sell(size=1000)
            time.sleep(15)
            print("closing sell...")
            self.close()
            time.sleep(15)
    
    
    # https://www.backtrader.com/docu/live/ib/ib/
    if __name__ == "__main__":
        print("inizializzo Strategia Di Esempio")
        ticker = 'EUR.USD'
        print(ticker)
        cerebro = bt.Cerebro()
        print(1)
        store = bt.stores.IBStore(port=4002, notifyall=True, _debug=False, reconnect=-1)
        print(2)
        data = bt.feeds.IBData(dataname='EUR.USD-CASH-IDEALPRO',
                               host='127.0.0.1', port=7496, clientId=35)
        print(3)
        #data = store.getdata(dataname=ticker, sectype='CASH', exchange='IDEALPRO', timeframe=bt.TimeFrame.Minutes)
        cerebro.resampledata(data, timeframe=bt.TimeFrame.Seconds, compression=15)
    
        cerebro.broker = store.getbroker()
        cerebro.addstrategy(Example)
        cerebro.run()
    and this is the output:
    init example strategy
    EUR.USD
    Server Version: 76
    TWS Time at connection:20211227 14:57:44 CET
    <managedAccounts accountsList=DU4825409>
    <nextValidId orderId=1>
    <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:cashfarm>
    <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm>
    <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:cashhmds>
    <error id=-1, errorCode=2107, errorMsg=HMDS data farm connection is inactive but should be available upon demand.ushmds>
    <error id=-1, errorCode=2158, errorMsg=Sec-def data farm connection is OK:secdefil>
    <currentTime time=1640613464>
    <updateAccountValue key=AccountCode, value=DU4825409, currency=None, accountName=DU4825409>
    <updateAccountValue key=AccountOrGroup, value=DU4825409, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=AccountOrGroup, value=DU4825409, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=AccountOrGroup, value=DU4825409, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AccountOrGroup, value=DU4825409, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=AccountOrGroup, value=DU4825409, currency=USD, accountName=DU4825409>
    <updateAccountValue key=AccountReady, value=true, currency=None, accountName=DU4825409>
    <updateAccountValue key=AccountType, value=INDIVIDUAL, currency=None, accountName=DU4825409>
    <updateAccountValue key=AccruedCash, value=-319.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=AccruedCash, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=AccruedCash, value=-319.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AccruedCash, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=AccruedCash, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=AccruedCash-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AccruedDividend, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AccruedDividend-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AvailableFunds, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=AvailableFunds-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Billable, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Billable-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=BuyingPower, value=6655892.57, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=CashBalance, value=998702.8855, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=CashBalance, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=CashBalance, value=974715.2978, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=CashBalance, value=2401665.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=CashBalance, value=6202.962, currency=USD, accountName=DU4825409>
    <updateAccountValue key=ColumnPrio-P, value=12, currency=None, accountName=DU4825409>
    <updateAccountValue key=ColumnPrio-S, value=3, currency=None, accountName=DU4825409>
    <updateAccountValue key=CorporateBondValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=CorporateBondValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=CorporateBondValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=CorporateBondValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=CorporateBondValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=Cryptocurrency, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=Cryptocurrency, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=Cryptocurrency, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Cryptocurrency, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=Cryptocurrency, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=Currency, value=BASE, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=Currency, value=CAD, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=Currency, value=EUR, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Currency, value=JPY, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=Currency, value=USD, currency=USD, accountName=DU4825409>
    <updateAccountValue key=Cushion, value=1, currency=None, accountName=DU4825409>
    <updateAccountValue key=EquityWithLoanValue, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=EquityWithLoanValue-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=ExcessLiquidity, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=ExcessLiquidity-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=ExchangeRate, value=1.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=ExchangeRate, value=0.6895466, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=ExchangeRate, value=1.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=ExchangeRate, value=0.0077203, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=ExchangeRate, value=0.8840756, currency=USD, accountName=DU4825409>
    <updateAccountValue key=FullAvailableFunds, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullAvailableFunds-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullExcessLiquidity, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullExcessLiquidity-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullInitMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullInitMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullMaintMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FullMaintMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FundValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=FundValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=FundValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FundValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=FundValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=FutureOptionValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=FutureOptionValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=FutureOptionValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FutureOptionValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=FutureOptionValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=FuturesPNL, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=FuturesPNL, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=FuturesPNL, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FuturesPNL, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=FuturesPNL, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=FxCashBalance, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=FxCashBalance, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=FxCashBalance, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=FxCashBalance, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=FxCashBalance, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=GrossPositionValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=GrossPositionValue-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Guarantee, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=Guarantee-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=IndianStockHaircut, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=IndianStockHaircut-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=InitMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=InitMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=IssuerOptionValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=IssuerOptionValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=IssuerOptionValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=IssuerOptionValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=IssuerOptionValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=Leverage-P, value=0.00, currency=None, accountName=DU4825409>
    <updateAccountValue key=Leverage-S, value=0.00, currency=None, accountName=DU4825409>
    <updateAccountValue key=LookAheadAvailableFunds, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadAvailableFunds-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadExcessLiquidity, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadExcessLiquidity-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadInitMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadInitMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadMaintMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadMaintMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=LookAheadNextChange, value=0, currency=None, accountName=DU4825409>
    <updateAccountValue key=MaintMarginReq, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=MaintMarginReq-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=MoneyMarketFundValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=MoneyMarketFundValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=MoneyMarketFundValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=MoneyMarketFundValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=MoneyMarketFundValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=MutualFundValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=MutualFundValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=MutualFundValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=MutualFundValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=MutualFundValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=NLVAndMarginInReview, value=false, currency=None, accountName=DU4825409>
    <updateAccountValue key=NetDividend, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=NetDividend, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=NetDividend, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=NetDividend, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=NetDividend, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=NetLiquidation, value=998383.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=NetLiquidation-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationByCurrency, value=998383.8855, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationByCurrency, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationByCurrency, value=974396.2978, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationByCurrency, value=2401665.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationByCurrency, value=6202.962, currency=USD, accountName=DU4825409>
    <updateAccountValue key=NetLiquidationUncertainty, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=OptionMarketValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=OptionMarketValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=OptionMarketValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=OptionMarketValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=OptionMarketValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=PASharesValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PASharesValue-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PhysicalCertificateValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PhysicalCertificateValue-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PostExpirationExcess, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PostExpirationExcess-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PostExpirationMargin, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=PostExpirationMargin-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=RealCurrency, value=BASE, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=RealCurrency, value=CAD, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=RealCurrency, value=EUR, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=RealCurrency, value=JPY, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=RealCurrency, value=USD, currency=USD, accountName=DU4825409>
    <updateAccountValue key=RealizedPnL, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=RealizedPnL, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=RealizedPnL, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=RealizedPnL, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=RealizedPnL, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=SegmentTitle-P, value=Crypto at Paxos, currency=None, accountName=DU4825409>
    <updateAccountValue key=SegmentTitle-S, value=CFD, currency=None, accountName=DU4825409>
    <updateAccountValue key=StockMarketValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=StockMarketValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=StockMarketValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=StockMarketValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=StockMarketValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=TBillValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=TBillValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=TBillValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TBillValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=TBillValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=TBondValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=TBondValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=TBondValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TBondValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=TBondValue, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=TotalCashBalance, value=998702.8855, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=TotalCashBalance, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=TotalCashBalance, value=974715.2978, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TotalCashBalance, value=2401665.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=TotalCashBalance, value=6202.962, currency=USD, accountName=DU4825409>
    <updateAccountValue key=TotalCashValue, value=998702.89, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TotalCashValue-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TotalDebitCardPendingCharges, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TotalDebitCardPendingCharges-P, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=TradingType-S, value=STKNOPT, currency=None, accountName=DU4825409>
    <updateAccountValue key=UnrealizedPnL, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=UnrealizedPnL, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=UnrealizedPnL, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=UnrealizedPnL, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=UnrealizedPnL, value=0.00, currency=USD, accountName=DU4825409>
    <updateAccountValue key=WarrantValue, value=0.00, currency=BASE, accountName=DU4825409>
    <updateAccountValue key=WarrantValue, value=0.00, currency=CAD, accountName=DU4825409>
    <updateAccountValue key=WarrantValue, value=0.00, currency=EUR, accountName=DU4825409>
    <updateAccountValue key=WarrantValue, value=0.00, currency=JPY, accountName=DU4825409>
    <updateAccountValue key=WarrantValue, value=0.00, currency=USD, accountName=DU4825409>
    <updatePortfolio contract=<ib.ext.Contract.Contract object at 0x000001D55FC33C40>, position=-24994, marketPrice=1.13112495, marketValue=-28271.34, averageCost=1.1307192, unrealizedPNL=-10.14, realizedPNL=-8.45, accountName=DU4825409>
    <updateAccountTime timeStamp=14:57>
    <updatePortfolio contract=<ib.ext.Contract.Contract object at 0x000001D55FC48190>, position=-21000, marketPrice=114.7475052, marketValue=-2409697.61, averageCost=114.365, unrealizedPNL=-8032.61, realizedPNL=0.0, accountName=DU4825409>
    <updateAccountTime timeStamp=14:56>
    <updateAccountTime timeStamp=14:57>
    <accountDownloadEnd accountName=DU4825409>
    <contractDetails reqId=16777216, contractDetails=<ib.ext.ContractDetails.ContractDetails object at 0x000001D55FC482B0>>
    <contractDetailsEnd reqId=16777216>
    <backtrader.feeds.ibdata.IBData object at 0x000001D55FC26EE0> *** DATA NOTIF: DELAYED
    <marketDataType reqId=16777217, marketDataType=1>

    What could be the problem?
     
  2. d08

    d08

    Too many requests in quick succession perhaps?
     
  3. rudj87

    rudj87

    Do you mean because of the timeframe in seconds?
     
  4. d08

    d08

    It doesn't matter if seconds or minutes or days.
    I'm also curious why it's doing any switching between Delayed and Live.
    No clue what's going on underneath with backtrader. My recommendation would be to use the native IB API or ibpythonic so you can talk using the API directly.
     
  5. rudj87

    rudj87

    according to the Backtrader documentation, it's in DELAYED mode when it's downloading the historical data and when it finishes it switches to LIVE.
    I'm using IbPY because was in the Backtrader documentation. Is there any test that I can do to find out what's the problem?
     
  6. d08

    d08

    IbPy has long been abandoned. Not sure what BackTrader does when switching between delayed and live, it's not really required for the IB API.
    My suggestion is to look at the native IB API examples and try the same thing without the added complexity from IbPy and BT.
     
  7. rudj87

    rudj87

    I tried to study the ib API, but I'm a beginner, at the moment I can't understand that documentation. Anyway, I've just noticed that with the TWS it works well, I don't understand why with ibgateway it works just sometimes...
     
  8. d08

    d08

    Check versions. For API purposes, TWS and Gateway are exactly the same. Another issue can be if you're requesting data both in your real and paper account at the same time.
     
  9. don't use backtrader, write ur own
     
    d08 likes this.