StrategyQuant
AI asistent QAlgoCloudQuantAnalyzerQuantDataManager
Bezplatný kurzO společnosti
BlogDokumentaceFórumKontaktujte nás
BlogTržiště
Přihlásit se
Vytvořit účet zdarma

Produkt

  • Ceny a licence
  • Vzdělávání
  • Tržiště
  • Vyzkoušet zdarma

Právní informace

  • Podmínky služby
  • Zásady ochrany osobních údajů
  • Cookies

Kontakt

[email protected]

Společnost

StrategyQuant s.r.o.

Korunní 2569/108, Vinohrady, 101 00 Praha 10, Česká republika, EU

IČ: 04000498

DIČ: CZ04000498

Sociální sítě

  • Právní doložka | ZPRACOVÁNÍ A OCHRANA OSOBNÍCH ÚDAJŮ

    Minulá výkonnost není zárukou budoucího úspěchu. Všechny informace by měly být chápány výhradně jako vzdělávací

    Upozornění vyžadované vládou USA – Komise pro obchodování s komoditními futures (CFTC) uvádí: Obchodování s futures a opcemi s sebou nese vysoké potenciální výnosy, ale také vysoké potenciální riziko. Pro investování na trzích s futures a opcemi si musíte být vědomi těchto rizik a být ochotni je přijmout. Neobchodujte s penězi, které si nemůžete dovolit ztratit. Toto není výzva ani nabídka k nákupu/prodeji futures, akcií či opcí na ně. Nijak se neprohlašuje, že jakýkoli účet dosáhne nebo pravděpodobně dosáhne zisků či ztrát podobných těm, které jsou probírány v tomto dokumentu. Minulá výkonnost jakéhokoli obchodního systému nebo metodiky nemusí nutně vypovídat o budoucích výsledcích.

    PRAVIDLO CFTC 4.41 – HYPOTETICKÉ ČI SIMULOVANÉ VÝSLEDKY VÝKONNOSTI MAJÍ URČITÁ OMEZENÍ. NA ROZDÍL OD ZÁZNAMU SKUTEČNÉ VÝKONNOSTI NEPŘEDSTAVUJÍ SIMULOVANÉ VÝSLEDKY SKUTEČNÉ OBCHODOVÁNÍ. VZHLEDEM K TOMU, ŽE OBCHODY NEBYLY REÁLNĚ PROVEDENY, MOHOU VÝSLEDKY ZKRESLOVAT VLIV URČITÝCH TRŽNÍCH FAKTORŮ, JAKO JE NAPŘÍKLAD NEDOSTATEK LIKVIDITY. SIMULOVANÉ OBCHODNÍ PROGRAMY OBECNĚ PODLÉHAJÍ TAKÉ TOMU, ŽE JSOU NAVRHOVÁNY SE ZNALOSTÍ VÝVOJE TRHU ZPĚTNĚ. NEEXISTUJE ŽÁDNÁ ZÁRUKA ANI TVRZENÍ, ŽE JAKÝKOLI ÚČET DOSÁHNE NEBO PRAVDĚPODOBNĚ DOSÁHNE ZISKŮ ČI ZTRÁT PODOBNÝCH TĚM, KTERÉ JSOU ZDE ZOBRAZENY.

    NIJAK SE NEPROHLAŠUJE, ŽE JAKÝKOLI ÚČET DOSÁHNE NEBO PRAVDĚPODOBNĚ DOSÁHNE ZISKŮ ČI ZTRÁT PODOBNÝCH TĚM, O KTERÝCH SE PÍŠE NA TĚCHTO STRÁNKÁCH. POKUD SE ROZHODNETE INVESTOVAT SKUTEČNÉ PENÍZE, VEŠKERÁ OBCHODNÍ ROZHODNUTÍ NA FINANČNÍCH TRZÍCH MUSÍ BÝT POUZE VAŠE VLASTNÍ.

    © StrategyQuant 2026

    Běží na Klaudie.ai

    Zpět na tržištěDIGITAL

    Multiple Market Order

    StrategyQuantPluginy
    Multiple Market Order

    Otevírá více tržních příkazů současně s po sobě jdoucími magickými čísly, což umožňuje částečné uzavírání pozic na různých úrovních profit targetu nebo stop lossu. Ideální pro škálovací strategie a správu více úrovní rizika.

    Snippet Multiple Orders at Market – odesílá více příkazů najednou s různými magickými čísly.

    Na snímku vyberte počet příkazů (nb) a magické číslo. Pokud zvolíte 3 jako počet příkazů a 1000 jako magické číslo, vytvoří se 3 tržní příkazy s magickými čísly: 1000, 1001 a 1002.

    Uzavřete částečně některé tržní příkazy na jednom profit targetu a další příkazy na jiných profit targetech nebo stop lossu.

    package SQ.Blocks.Order.Open;
    import java.util.ArrayList;
    import com.strategyquant.datalib.TradingException;
    import com.strategyquant.datalib.UpdateEventTypes;
    import com.strategyquant.lib.SQTime;
    import com.strategyquant.lib.SQUtils;
    import com.strategyquant.tradinglib.*;
    // Modified by Emmanuel Evrard for StrategyQuantX Community
    @BuildingBlock(name="(MMKT) Enter Multiple Order at market", display="EnterMultipleOrderAtMarket", returnType=ReturnTypes.Order)
    @Help("Opens Multiple order at current market price")
    public class EnterAtMarketMultiOrder extends ActionBlock 
    {
        @Parameter(defaultValue="Any", category="Basic", showIfDefault=false)
        @Editor(type=Editors.SelectionSymbolsWithAny)
        public String Symbol;
        @Parameter(defaultValue="1", category="Basic")
        @Editor(type=Editors.Selection, values="Long=1,Short=-1")
        public int Direction;
        @Parameter(category="Basic")
        @Editor(type=Editors.Formula, formulaName="Size")
        @Required
        public IFormula Size;
        @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false)
        @Help("Magic number is used to identify the first trade, it should be unique for every trade you open.")
        public int MagicNumber;
        @Parameter(defaultValue="Number Of Order", category="Order identification", showIfDefault=false)
        @Help("Number Of Order is used to set the quantity of order, Their MagicNumbers are successives to the above MagicNumber")
        public int NbOrder;
        @Parameter(defaultValue="", category="Order identification", showIfDefault=false)
        public String Comment;
        @Parameter(defaultValue="false", category="Order identification", showIfDefault=false)
        @Help("If set to true, it will allow to place multiple trades with the same Magic Number")
        public boolean AllowDuplicateTrades;
        public ExitMethod[] ExitMethods;
        @Override
        public void OnAction() throws TradingException 
        {
            if((!AllowDuplicateTrades || !engineSupportsDuplicateTrades()) && checkLiveOrderExists(0, true) != null) 
                return;
            byte orderType = (Direction > 0 ? OrderTypes.Buy : OrderTypes.Sell);
            double sl = computeSL(orderType, (Direction > 0 ? Strategy.MarketData.Chart(Symbol).Ask() : Strategy.MarketData.Chart(Symbol).Bid()));
            double size = computeSize(orderType, 0, sl);
            ATM atm = Strategy.getATM();
            double pt = computePT(orderType, (Direction > 0 ? Strategy.MarketData.Chart(Symbol).Ask() : Strategy.MarketData.Chart(Symbol).Bid()));
            int MagicNumber1 = MagicNumber;
            for(int i = 0; i < NbOrder; i++) 
            {
                MagicNumber = MagicNumber1 + i;
                if(atm != null && atm.isApplicable(Strategy, size, sl, orderType)) {
                    openATMOrder(atm, -1, size, sl, pt, orderType, 0);
                } else {
                    openNormalOrder(-1, size, sl, orderType, 0);
                }
            }
        }
        protected void openNormalOrder(double openPrice, double size, double sl, byte orderType, int barsValid) throws TradingException {
            ILiveOrder order = Strategy.Trader.Open(orderType, Symbol, openPrice)
                    .setSize(size).setMagicNumber(MagicNumber).setComment(Comment).Send();
            if(order.isSuccessful()) {
                handleBarsValid(order, barsValid);
                for(ExitMethod exitMethod : ExitMethods) {
                    if(!order.isClosedOrder()) exitMethod.setForOrder(order, Strategy);
                }
            }
        }
        protected double computeSL(byte orderType, double orderPrice) throws TradingException {
            ExitMethod slExit = getStopLossExit();
            return slExit == null ? Order.NOT_DEFINED : SQUtils.fixPrice(Strategy.getInstrumentInfo().tickStep, slExit.computeValue(orderType, Strategy, Symbol, orderPrice));
        }
        protected double computePT(byte orderType, double orderPrice) throws TradingException {
            ExitMethod ptExit = getProfitTargetExit();
            return ptExit == null ? Order.NOT_DEFINED : SQUtils.fixPrice(Strategy.getInstrumentInfo().tickStep, ptExit.computeValue(orderType, Strategy, Symbol, orderPrice));
        }
        private ExitMethod getStopLossExit() {
            for(ExitMethod e : ExitMethods) if(e.getExitType() == ExitTypes.StopLoss) return e;
            return null;
        }
        private ExitMethod getProfitTargetExit() {
            for(ExitMethod e : ExitMethods) if(e.getExitType() == ExitTypes.ProfitTarget) return e;
            return null;
        }
        protected double computeSize(byte orderType, double price, double sl) throws TradingException {
            return ((MMFormulaBlock) Size).computeSize(Strategy, Symbol, orderType, price, sl);
        }
        protected ILiveOrder checkLiveOrderExists(int direction, boolean includeClosingOrders) {
            for(int i=Strategy.Trader.getOpenOrdersCount(includeClosingOrders)-1; i>=0; i--) {
                ILiveOrder order = Strategy.Trader.getOpenOrder(i, includeClosingOrders);
                if(order.isMarketOrder() && OrderFunctions.identify(order, Strategy, Symbol, direction, MagicNumber, Comment)) 
                    return order;
            }
            return null;
        }
        protected boolean engineSupportsDuplicateTrades() { return Strategy.Trader.supportsDuplicateTrades(); }
        protected void handleBarsValid(ILiveOrder order, int barsValid) throws TradingException {}
    }
    Minulá výkonnost není zárukou budoucích výsledků. Všechny informace by měly být považovány pouze za vzdělávací Upozornění vyžadované vládou SPOJENÝCH STÁTŮ – Commodity Futures Trading Commission informuje: Obchodování s futures a opcemi přináší velký potenciální zisk, ale také velké potenciální riziko. Abyste mohli investovat na trzích s futures a opcemi, musíte si být vědomi těchto rizik a být ochotni je přijmout. Neobchodujte s penězi, které si nemůžete dovolit ztratit. Toto není výzva ani nabídka k nákupu/prodeji futures, akcií nebo opcí na ně. Žádné tvrzení nenaznačuje, že jakýkoli účet dosáhne nebo pravděpodobně dosáhne zisků či ztrát podobných těm, o kterých se hovoří v tomto dokumentu. Minulá výkonnost jakéhokoli obchodního systému nebo metodiky nemusí nutně vypovídat o budoucích výsledcích. PRAVIDLO CFTC 4.41 – VÝSLEDKY HYPOTETICKÉ ČI SIMULOVANÉ VÝKONNOSTI MAJÍ URČITÁ OMEZENÍ. NA ROZDÍL OD ZÁZNAMU SKUTEČNÉ VÝKONNOSTI SIMULOVANÉ VÝSLEDKY NEPŘEDSTAVUJÍ SKUTEČNÉ OBCHODOVÁNÍ. VZHLEDEM K TOMU, ŽE OBCHODY NEBYLY SKUTEČNĚ PROVEDENY, MOHOU VÝSLEDKY ZKRESLOVAT VLIV URČITÝCH TRŽNÍCH FAKTORŮ, JAKO JE NAPŘÍKLAD NEDOSTATEK LIKVIDITY. SIMULOVANÉ OBCHODNÍ PROGRAMY OBECNĚ PODLÉHAJÍ TAKÉ SKUTEČNOSTI, ŽE JSOU NAVRŽENY SE ZPĚTNÝM POHLEDEM NA HISTORICKÁ DATA. ŽÁDNÉ TVRZENÍ NENAZNAČUJE, ŽE JAKÝKOLI ÚČET DOSÁHNE NEBO PRAVDĚPODOBNĚ DOSÁHNE ZISKŮ ČI ZTRÁT PODOBNÝCH TĚM, KTERÉ JSOU ZDE UVEDENY. ŽÁDNÉ TVRZENÍ NENAZNAČUJE, ŽE JAKÝKOLI ÚČET DOSÁHNE NEBO PRAVDĚPODOBNĚ DOSÁHNE ZISKŮ ČI ZTRÁT PODOBNÝCH TĚM, O KTERÝCH SE HOVOŘÍ NA TĚCHTO STRÁNKÁCH. POKUD SE ROZHODNETE INVESTOVAT SKUTEČNÉ PENÍZE, VEŠKERÁ OBCHODNÍ ROZHODNUTÍ NA FINANČNÍCH TRZÍCH BY MĚLA BÝT POUZE VAŠE VLASTNÍ.
    Zdarma

    Soubory

    • Snippet-MultipleMarketOrder.sqm12 KBUzamčeno

    Stažení se odemkne po nákupu nebo s aktivním tierem.

    Podrobnosti
    Verze1.0.0
    Zveřejněno19. října 2026
    Poslední aktualizace22. října 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryTrading options