hi @Ta-Tum, the parameters of PandasData are programmed as below:

('datetime', 0), ('open', 1), ('high', 2), ('low', 3), ('close', 4), ('volume', 5), ('openinterest', 6),

May be you fit ur dataframe as follow:

df = pd.DataFrame(index = dataframe .index)
df['Open'] = dataframe ['Open'].values
df['High'] = dataframe ['High'].values
df['Low'] = dataframe ['Low'].values
df['Close'] = dataframe ['Close'].values
df['Volume'] = dataframe ['Volume'].values
df['openinterest'] = dataframe ['Signal'].values

Then at class MLSignal:

class MLSignal(bt.SignalStrategy):

def log(self, txt, dt=None): pass def __init__(self): # Keep a reference to the "close" line in the data[0] dataseries self.dataclose = self.datas[0].close self.datasignal = self.datas[0].openinterest def next(self): self.log(' Close, %.2f' % self.dataclose[0]) self.log(' Signal, %.2f' % self.datasignal[0] if self.order: return if self.action[0] == 1.0: self.log('BUY CREATE, %.2f' % self.dataclose[0]) self.order = self.buy() if self.action[0] == 2.0: self.log('SELL CREATE, %.2f' % self.dataclose[0]) self.order = self.sell()

I think this should pass dataframe data signal into the strategy part.
Hope this helps. I've been looking for this solution for quite long too. ;) Thanks