Hi !
Could you help me to prevent entry orders after a certain time ?
I am searching on the forum and no issue.
I already implement Schedule.Event to close all order at a certain time and day.
Schedule.Event().Every(DayOfWeek.Friday).At(15, 44).Run(() =>
{
foreach (var holding in Portfolio.Values)
{
if (holding.HoldStock)
{
MarketOnCloseOrder(holding.Symbol, -holding.Quantity, tag: "Liquidate Market Close");
}
}
});
But what i read that not prevent algo to send order after this time.
Gmamuze Cht
Hi !
I make that, it's not smart but seems to work.
if (Portfolio.Invested) { Schedule.Event().Every(DayOfWeek.Friday).At(15, 44).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 45).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 46).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 47).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 48).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 49).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 50).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 51).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 52).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 53).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 54).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 55).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 56).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 57).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 58).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 59).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(15, 60).Run(() => Schedule.Event().Every(DayOfWeek.Friday).At(16, 00).Run(() => { foreach (var holding in Portfolio.Values) { if (holding.HoldStock) { MarketOrder(holding.Symbol, -holding.Quantity, tag: "Liquidate Market Close"); } } })))))))))))))))))); }
Dave Mueller
Hi Gmamuze:
You could declare a variable called "entryHours" which is set to False by default. You could schedule an event at whichever time you would like to start looking for entry points that changes the variable to True, and at the event where you liquidate everything, change it back to False.
Then, when you're checking for entry points, you could add a check to see if "entryHours" == "True"
Gmamuze Cht
Hi Dave!
Like this way ?
https://www.quantconnect.com/forum/discussion/5941/how-to-only-request-trades-during-market-hours/p1Gmamuze Cht
https://www.quantconnect.com/forum/discussion/5941/how-to-only-request-trades-during-market-hours/p1
sorry missed to snip the link.
Jason Mark
I primarly use Python for my algorithm development but couldn't you use the self.Time property in the OnData method. self.Time is a DateTime object. If I were trying to "prevent entry orders after a certain time". I would use
def OnData(self, data): if self.Time.Hour > 13: return;
as an example, this would prevent the code from executing if the time is past 1pm. I think Schedule.Event() calls should only be made in the Initialize() method.
Daniel Chen
Hi Gmamuze and Jason,
Thank you for your posts. As Jason indicated, using Time in the OnData() method is a good way to avoid entry orders after a certain time.
public override void OnData(Slice data) { var certainTime = 12; // Let's say you want to avoid entry orders after 12pm if (Time.Hour > certainTime) { return; } }
If you have further questions, please feel free to let us know.
Gmamuze Cht
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!