Hello All, 

 I am a little confused how to ensure I am scheduling events at the times that I think I am scheduling them for. 

I have checked the Exchange.TimeZone property of my returned CFD. This part seems nice enough. However, when I cross check the data that I am receiving with other sources of the same feed, I cannot seem to make a connection between the time I think I am sceduling an event for and the data I am receiving. 

To validate my setup, I am just check the most recent data when event is triggered and comparing it to Oanda's feed on Tradingview at the same time. However, I can't seem to find matching data. 

It might be an issue with the way I am saving the last close value in OnData(). The following is my code and some screenshots of my debugs and data on Tradingview. 

import numpy as np
from System import *

### <summary>
### Basic template algorithm simply initializes the date range and cash. This is a skeleton
### framework you can use for designing an algorithm.
### </summary>
class FTSEFridays(QCAlgorithm):
'''Basic template algorithm simply initializes the date range and cash'''

def Initialize(self):
'''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

self.SetStartDate(2018,7, 1) #Set Start Date
self.SetEndDate(2018,7,11) #Set End Date
self.SetCash(10000) #Set Strategy Cash

self.Allocate = 1 # Percentage of holdings to risk

# Setup Oanda Broker simulation

# Find more symbols here: http://quantconnect.com/data
self._ftse = self.AddCfd("UK100GBP", Resolution.Minute)

#Logging / Debugs
self.Logging_On = True
self.Debug_On = True

# Other stuff
self.lastClose = None

#Set Shcedule
# self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday,DayOfWeek.Friday), self.TimeRules.At(6, 55), self.MorningBuy)
# self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday,DayOfWeek.Friday), self.TimeRules.At(16, 29), self.AfternoonSell)
self.Schedule.On(self.DateRules.WeekEnd(), self.TimeRules.At(6, 55), self.MorningBuy)
self.Schedule.On(self.DateRules.WeekEnd(), self.TimeRules.At(16, 29), self.AfternoonSell)

if self.Debug_On:
self.Debug("INIT: Exchange Hours: {}".format(self._ftse.Exchange.Hours))
self.Debug("INIT: Exchange Timezone: {}".format(self._ftse.Exchange.TimeZone))
self.Debug("INIT: Local Time: {}".format(self._ftse.Exchange.LocalTime))
self.Debug("INIT: Self.Time {}".format(self.Time))

def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.

data: Slice object keyed by symbol containing the stock data
self.lastClose = data["UK100GBP"].Close

def MorningBuy(self):
if self.Debug_On:
self.Debug("MorningBuy: Fired at : {0}, Local Time: {1}, Close Price: {2}".format(
self.Time, self._ftse.Exchange.LocalTime, self.lastClose))
self.SetHoldings("UK100GBP", self.Allocate)

def AfternoonSell(self):
if self.Debug_On:
self.Debug("AfternoonSell: Fired at : {0}, Local Time: {1}, Close Price: {2}".format(
self.Time, self._ftse.Exchange.LocalTime, self.lastClose))

Here is my output


It shows that the close was 7611.4 at 06:55am (self.Time) and 11:55am Local Exchange Time) 

Then if I look at the data for both self.Time and Exchange.LocalTime on Tradingview (06:55am and 11:55am respectively), I don't see any close matching it or within a bar. 

First 6:55 am - Close = 7632.6


Second 11:55am - Close = 7570.3


I assume that this might be something at my end. Any pointers would be greatly appreciated. 

PS. Where does self.Time come from? is it NYC?