StrategyQuant
Q AI AssistantAlgoCloudQuantAnalyzerQuantDataManager
Free CourseCompany
BlogDocumentationForumContact us
BlogMarketplace
Log in
Create free account

Product

  • Pricing & licenses
  • Learn
  • Marketplace
  • Start free trial

Legal

  • Terms of Service
  • Privacy Policy
  • Cookies

Contact

[email protected]

Company

StrategyQuant s.r.o.

Korunní 2569/108, Vinohrady, 101 00 Praha 10, Czech Republic, EU

IČ: 04000498

DIČ: CZ04000498

Social

  • Legal Notice | PROCESSING AND PROTECTION OF PERSONAL DATA

    Past performance is no guarantee of future success. All information should be viewed as educational only

    UNITED STATES Disclaimer required by Government - Commodity Futures Trading Commission informs: Futures and options trading have great potential rewards, but also great potential risk. You must be aware of the risks and be willing to accept them in order to invest in the futures and options markets. Don't trade with money you can't afford to lose. This is neither a solicitation nor an offer to buy/sell futures, shares or options on the same. No representation is being made that any account will or is likely to realise profits or losses similar to those discussed in this document. The past performance of any trading system or methodology is not necessarily indicative of future results.

    CFTC RULE 4.41 - HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNLIKE A RECORD OF ACTUAL PERFORMANCE, SIMULATED RESULTS DO NOT REPRESENT ACTUAL TRADING. ALSO, SINCE THE TRADES WERE NOT EXECUTED, THE RESULTS MAY HAVE OFFSET THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY. SIMULATED TRADING PROGRAMMES IN GENERAL ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO REALISE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN.

    NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL, OR IS LIKELY TO, REALISE PROFITS OR LOSSES SIMILAR TO THOSE DISCUSSED WITHIN THIS SITE. IF YOU DECIDE TO INVEST REAL MONEY, ALL TRADING DECISIONS IN THE FINANCIAL MARKETS SHOULD BE YOUR OWN.

    © StrategyQuant 2026

    Powered by Klaudie.ai

    Back to marketplaceDIGITAL

    Set Stop Loss on Limit Price

    StrategyQuantPlugins
    Set Stop Loss on Limit Price

    Automatically sets stop loss only when open prices meet defined thresholds, avoiding stop loss placement on losing positions when managing multiple open trades.

    Sets Stop Loss to a specified level if the openPrice order is above (for long position) or below (for short position) a price Limit.

    If you have multiple positions open, it will avoid to set stop loss on losing positions. This could close immediately the position

    Here is the code :

    package SQ.Blocks.Order.Modify;
    import SQ.Functions.OrderFunctions;
    import SQ.Internal.ActionBlock;
    import com.strategyquant.lib.*;
    import com.strategyquant.datalib.*;
    import com.strategyquant.tradinglib.*;
    // Modified in France by Emmanuel Evrard for the StrategyQuantX Community :)
    @BuildingBlock(name="(SLI) Set Stop Loss if Possible", display="Set Stop Loss if Possible", returnType = ReturnTypes.Action)
    @Help("Sets Stop Loss to a specified level if the openPrice order is above (for long position) or below (for short position) a price Limit. If SL already exists it will be moved.")
    @SortOrder(400)																					// In AlgoWizard, this is a dropbox position (400 or 500 or 600 etc.) of this function in the menu of "Add New Condition", you may have to adjust it depending on the function already installed on the same dropbox. 
    @CategoryOrder(200)
    @IgnoreInBuilder
    @NotSupportedFor(engines="EL")
    public class SetStopLossIfPossible extends ActionBlock 
    {
        @Parameter(defaultValue="Current", category="Order identification", showIfDefault=false, allowAny=true)
        public String Symbol;
        @Parameter(defaultValue="0", category="Order identification", showIfDefault=false)
        @Editor(type=Editors.Selection, values="Long=1,Short=-1")
        public int Direction;
        @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false)
        @Help("Magic number that can identify the order.")
        @Editor(type=Editors.SelectionVariablesWithAny)
        public int MagicNumber;
        @Parameter(defaultValue="", category="Order identification", showIfDefault=false)
        @Help("Comment can be also used to identify the order. In case of Comment, order matches if the order comments contains the text specified here.")
        public String Comment;
        @Parameter(category="Price Min/Max")
        @Help("Price limit of order, only Long Order with higher Open Price will be selected or only Short Order with lower Open price will be selected")
        @Editor(type=Editors.Formula, formulaName="RangeLevel")
        public IFormula PriceLimit;
        @Parameter(category="Stop Loss")
        @Editor(type=Editors.Formula, formulaName="RangeLevel")
        public IFormula StopLoss;
        //------------------------------------------------------------------------
        //------------------------------------------------------------------------
        //------------------------------------------------------------------------
        @Override
        public void OnAction() throws TradingException 
        {
            for(int i=0; i<Strategy.Trader.getOpenOrdersCount(false); i++) 
            {
                ILiveOrder order = Strategy.Trader.getOpenOrder(i, false);
                double openPrice = order.isNettingMode() ? order.getLastOpenPrice() : order.getOpenPrice();
                if(OrderFunctions.identify(order, Strategy, Symbol, Direction, MagicNumber, Comment)) 
                {
                    if (Direction != 1 && openPrice >= PriceLimit.evaluateFormula(Strategy, Symbol, openPrice, Direction))	
                    {
                        double sl = StopLoss.evaluateFormula(Strategy, Symbol, openPrice, Direction);
                        order.setSL(sl).Send();
                    }
                    if (Direction != -1 && openPrice <= PriceLimit.evaluateFormula(Strategy, Symbol, openPrice, Direction))	
                    {
                        double sl = StopLoss.evaluateFormula(Strategy, Symbol, openPrice, Direction);
                        order.setSL(sl).Send();
                    }
                }
            }
        }
    }
    
    Past performance is no guarantee of future success. All information should be viewed as educational only UNITED STATES Disclaimer required by Government - Commodity Futures Trading Commission informs: Futures and options trading have great potential rewards, but also great potential risk. You must be aware of the risks and be willing to accept them in order to invest in the futures and options markets. Don't trade with money you can't afford to lose. This is neither a solicitation nor an offer to buy/sell futures, shares or options on the same. No representation is being made that any account will or is likely to realise profits or losses similar to those discussed in this document. The past performance of any trading system or methodology is not necessarily indicative of future results. CFTC RULE 4.41 - HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNLIKE A RECORD OF ACTUAL PERFORMANCE, SIMULATED RESULTS DO NOT REPRESENT ACTUAL TRADING. ALSO, SINCE THE TRADES WERE NOT EXECUTED, THE RESULTS MAY HAVE OFFSET THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY. SIMULATED TRADING PROGRAMMES IN GENERAL ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO REALISE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL, OR IS LIKELY TO, REALISE PROFITS OR LOSSES SIMILAR TO THOSE DISCUSSED WITHIN THIS SITE. IF YOU DECIDE TO INVEST REAL MONEY, ALL TRADING DECISIONS IN THE FINANCIAL MARKETS SHOULD BE YOUR OWN.
    Free

    Files

    • Snippet-SetStopLossonLimitPrice.sqm5 KBLocked

    Download unlocks after purchase or with an active tier.

    Details
    Version1.0.0
    PublishedOctober 19, 2026
    Last updatedOctober 22, 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryOrder