Hello,

I'm trying to get some code to run once a day that checks a bunch of pairs and then trades if certain conditions are met (I've presented the key parts to this below).

My issue is that when I run my code I get the output also shown below - as you can see it looks like it's being executed on the same day over and over. Any ideas where I could have gone so wrong?

 

6652 | 19:32:58: 2018-01-03 13:00:006653 | 19:32:58: 100 of 5006654 | 19:32:58: 200 of 5006655 | 19:32:58: 300 of 5006656 | 19:32:58: 400 of 5006657 | 19:32:58: 500 of 5006658 | 19:32:58: New Day6659 | 19:32:58: 2018-01-03 13:00:006660 | 19:32:58: 100 of 5006661 | 19:32:58: 200 of 5006662 | 19:32:58: 300 of 5006663 | 19:32:58: 400 of 5006664 | 19:32:58: 500 of 5006665 | 19:32:58: New Day6666 | 19:32:58: 2018-01-03 13:00:006667 | 19:32:58: 100 of 5006668 | 19:32:58: 200 of 5006669 | 19:32:58: 300 of 5006670 | 19:32:58: 400 of 5006671 | 19:32:58: 500 of 5006672 | 19:32:58: New Day6673 | 19:32:58: 2018-01-03 13:00:006674 | 19:32:58: 100 of 5006675 | 19:32:58: 200 of 5006676 | 19:32:58: 300 of 5006677 | 19:32:58: 400 of 5006678 | 19:32:58: 500 of 5006679 | 19:32:58: New Day6680 | 19:32:58: 2018-01-03 13:00:006681 | 19:32:58: 100 of 5006682 | 19:32:58: 200 of 5006683 | 19:32:58: 300 of 5006684 | 19:32:58: 400 of 5006685 | 19:32:58: 500 of 5006686 | 19:32:58: New Day6687 | 19:32:58: 2018-01-03 13:00:006688 | 19:32:58: 100 of 5006689 | 19:32:58: 200 of 5006690 | 19:32:58: 300 of 5006691 | 19:32:58: 400 of 5006692 | 19:32:58: 500 of 500

 

 



class PairsTradingAlgorithm(QCAlgorithm):


def Initialize(self):

---some parameter stuff here not shown----

tickers = list(set(tickers))
self.symbols = []

for i in tickers:
self.symbols.append(self.AddEquity(i,Resolution.Daily).Symbol)
self.day_run = self.daily_run
self.SetStartDate(2018,1,1)
self.SetEndDate(2019,6,30)
self.lastSlice = None
self.pairs_list = pairs[0:500]



def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data'''


self.lastSlice = data

scheduled_function = self.day_run

self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(13, 0), Action(scheduled_function))

def daily_run(self):

data = self.lastSlice

if data != None:


self.Debug('New Day')
self.Debug(str(self.Time))
run = 0
count = 0

for pair in self.pairs_list:
run += 1
count += 1
if count == 100:
self.Debug(str(run) + ' of ' + str(len(self.pairs_list)))
count = 0



if not (data.ContainsKey(pair[0]) and data.ContainsKey(pair[1])): return

### need to check this is the last 60 days
price_x = self.History([pair[0]], 60)['close'].values

price_y = self.History([pair[1]], 60)['close'].values

if len(price_x) < 60: return

------------Some trading logic ---------------