LEAN is the open source
algorithmic trading engine powering QuantConnect. Founded in 2013 LEAN has been built by a
global community of 80+ engineers and powers more than a dozen hedge funds today.
Alpha League Competition: $1,000 Weekly Prize Pool
Qualifying Alpha Streams Reentered Weekly Learn
more
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.
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.
Place the limit order (save its OrderTicket object or Id)
In OnOrderEvent method, verify whether the order event refers to a filled order with the limit order Id; 2a. If our limit order was filled, place a take profit (TP) limit order and a stop loss (SL) order (save their OrderTicket or Id)
In OnOrderEvent method, verify whether the order event refers to a filled order with the TP or SL order. 3a. If our TP or SL was filled, cancel the other.
For further information, please check out the docs, under Trading and Orders section.
1
Edited by Alexandre Catarino
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.
Thanks for your answer, but I have a few follow-up questions:
The documentation of the LimitOrder function says "Fill order for the limit price or better." What if the current security price is below the limitPrice and I want to open a long position if and only if the security price cllimbs above the limit price?
With what order methods can I realize a take profit and a stop loss order?
Did you confuse OnSecurityChanges with OnOrderEvent  ? According to the documentation, OnOrderEvent seems to be the correct method, but you keep referring to OnSecurityChanges.
Yes, sorry, I confused OnSecurityChanges with OnOrderEvent (I edited my previous comment).
Yes. If the price is below the limit price, it will be filled at the limit price. In backtesting mode, the model checks whether the limit price is below the last bar low and sets the fill price as the minimum of the limit price and the last bar high. Note that if the algorithm uses a market order, it can place the three orders in a sequence of statements.
If you don't want to use market orders (self.Order, self,MarketOrder, self.Liquidate methods) to close the position, the take profit order is a limit order (self.LimitOrder method) and the stop loss is a stop market order (self.StopMarketOrder method).
1
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.
If you use a MarketOrder then in your code, you dont have submit the orders inside the event "OnOrderEvent" since you can wait the MarketOrder be filled before placing the subsequent orders. Just call MarketOrder with synchronous flag, and in sequence, submit the orders for SL and TP. Before submiting the SL and TP, check the MarketOrder was filled
If I place a market order for the actual long position, followed by a SL and a TP as Erik Bengtson suggested, dont I have to cancel either the SL or the TP once one of them is filled, i.e. don't I have to use OnOrderEvent for this?Â
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.
Loading...
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!
You do not have enough QC Credit to send this award, get a QC Credit Pack
here.
Award Sent Successfully
Thank you for giving back to the community.
Processing...
Choose a Credit Pack
Payment Confirmation
QuantConnect Credit (QCC) can be applied to your cloud-invoices or
gifted to others in the community with Community Awards in recognition of their contributions.
Community Awards highlight the awesome work your fellow community members are doing and inspires
high quality algorithm contributions to the community. Select an option below to add
QuantConnect Credit to your account:
$5
500 Credit Points
 
$10
1,000 Credit Points
 
$18
2,000 Credit Points
10% bonus
$45
5,000 Credit Points
10% bonus
03/23XXXX XXXX XXXX 0592
We will charge your default organization credit card on file, click
here to update.