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
self.SetBrokerageModel(BrokerageName.OandaBrokerage)
# Find more symbols here: http://quantconnect.com/data
# THIS NEEDS TO BE ADDED AFTER THE BROKERAGE MODEL!
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.
Arguments:
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))
self.Liquidate
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?
ThatBlokeDave
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!