I'm trying to fire an event once daily at 3:59:30 PM. I've tried the following to no avail:
// This method does not accept seconds?
self.Schedule.On(self.DateRules.EveryDay(self.symbol),
self.TimeRules.At(15, 59),
Action(self.ThirtySecondsBeforeMarketClose))
// This method fires at 4:00PM instead of 3:59:30 PM
self.Schedule.On(self.DateRules.EveryDay(self.symbol), \
self.TimeRules.BeforeMarketClose(self.symbol, 0.5), \
Action(self.ThirtySecondsBeforeMarketClose))
// This method oddly fires twice at 9:31 AM and once at 3:59:00 PM
self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.Every(timedelta(seconds=(23370))), Action(self.EveryMarketClose))
Brian Sax
I should mention I also tried adding seconds as a self.TimeRules.At parameter:
self.Schedule.On(self.DateRules.EveryDay(self.symbol),
self.TimeRules.At(15, 59, 30),
Action(self.ThirtySecondsBeforeMarketClose))
But this still fires at 4:00:00 PM and not 3:59:30 PM.
Brian Sax
Also tried putting a timedelta of seconds into the BeforeMarketClose parameter which throws an error:
self.Schedule.On(self.DateRules.EveryDay(self.symbol),
self.TimeRules.BeforeMarketClose(self.symbol, timedelta(seconds=(30))),
Action(self.EveryMarketClose))
Derek Melchin
Hi Brian,
The BeforeMarketClose method expects a `double` at its second argument. Therefore, to place a Scheduled Event 30 seconds before the close, we can use
self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.BeforeMarketClose(self.symbol, 0.5), self.event)
Note that for this scheduled event to be fired at the correct time, we'd have to be subscribed to second-resolution data or be trading in live mode where the event is triggered by the clock. When using minute-resolution data in backtesting, we recommend placing the scheduled event 1 minute before the close instead. Otherwise, the event will fire as a past event and the price of `self.symbol` will be outdated by 30 seconds.
self.TimeRules.BeforeMarketClose(self.symbol, 1)
See the attached backtest for reference.
Best,
Derek Melchin
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.
Brian Sax
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!