StrategyQuant
Asystent Q AIAlgoCloudQuantAnalyzerQuantDataManager
Darmowy kursFirma
BlogDokumentacjaForumKontakt
BlogMarketplace
Zaloguj się
Załóż bezpłatne konto

Produkt

  • Cennik i licencje
  • Baza wiedzy
  • Marketplace
  • Rozpocznij darmowy okres próbny

Informacje prawne

  • Regulamin
  • Polityka prywatności
  • Pliki cookie

Kontakt

[email protected]

Firma

StrategyQuant s.r.o.

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

IČ: 04000498

DIČ: CZ04000498

Media społecznościowe

  • Nota prawna | PRZETWARZANIE I OCHRONA DANYCH OSOBOWYCH

    Dotychczasowe wyniki nie stanowią gwarancji przyszłych sukcesów. Wszelkie informacje należy traktować wyłącznie jako materiały edukacyjne

    STANY ZJEDNOCZONE Zastrzeżenie prawne wymagane przez Rząd - Commodity Futures Trading Commission informuje: Handel kontraktami futures i opcjami wiąże się z dużymi potencjalnymi zyskami, ale także z ogromnym potencjalnym ryzykiem. Musisz być świadomy tego ryzyka i gotów je zaakceptować, aby inwestować na rynkach kontraktów futures i opcji. Nie handluj środkami, na których utratę nie możesz sobie pozwolić. Nie stanowi to ani zachęty, ani oferty kupna/sprzedaży kontraktów futures, akcji lub opcji na nie. Nie składa się żadnych oświadczeń, że jakiekolwiek konto osiągnie lub ma prawdopodobieństwo osiągnięcia zysków lub strat podobnych do tych omówionych w tym dokumencie. Wyniki osiągane w przeszłości przez jakikolwiek system lub metodologię handlową niekoniecznie wskazują na przyszłe rezultaty.

    REGUŁA CFTC 4.41 - HIPOTETYCZNE LUB SYMULOWANE WYNIKI MAJĄ PEWNE OGRANICZENIA. W PRZECIWIEŃSTWIE DO HISTORII RZECZYWISTYCH WYNIKÓW, WYNIKI SYMULOWANE NIE PRZEDSTAWIAJĄ RZECZYWISTEGO HANDLU. PONADTO, PONIEWAŻ TRANSAKCJE NIE ZOSTAŁY FAKTYCZNIE ZAWARTE, WYNIKI MOGĄ NIE UWZGLĘDNIAĆ WPŁYWU OKREŚLONYCH CZYNNIKÓW RYNKOWYCH, TAKICH JAK BRAK PŁYNNOŚCI. PROGRAMY DO SYMULACJI TRANSAKCJI GENERALNIE PROJEKTUJE SIĘ RÓWNIEŻ Z KORZYŚCIĄ WIEDZY PO FAKCIE (Z PERSPEKTYWY CZASU). NIE SKŁADA SIĘ ŻADNYCH OŚWIADCZEŃ, ŻE JAKIEKOLWIEK KONTO OSIĄGNIE LUB MA PRAWDOPODOBIEŃSTWO OSIĄGNIĘCIA ZYSKÓW LUB STRAT PODOBNYCH DO PRZEDSTAWIONYCH.

    NIE SKŁADA SIĘ ŻADNYCH OŚWIADCZEŃ, ŻE JAKIEKOLWIEK KONTO OSIĄGNIE LUB MA PRAWDOPODOBIEŃSTWO OSIĄGNIĘCIA ZYSKÓW LUB STRAT PODOBNYCH DO TYCH OMÓWIONYCH W TEJ WITRYNIE. JEŚLI ZDECYDUJESZ SIĘ ZAINWESTOWAĆ PRAWDZIWE PIENIĄDZE, WSZYSTKIE DECYZJE HANDLOWE NA RYNKACH FINANSOWYCH POWINNY BYĆ TWOIMI WŁASNYMI.

    © StrategyQuant 2026

    Obsługiwane przez Klaudie.ai

    Wróć do MarketplaceDIGITAL

    Wiele zleceń rynkowych

    StrategyQuantWtyczki
    Wiele zleceń rynkowych

    Otwiera jednocześnie wiele zleceń rynkowych z kolejnymi magic numbers, umożliwiając częściowe zamykanie pozycji na różnych poziomach Take Profit lub Stop Loss. Idealne rozwiązanie do strategii stopniowania pozycji (scalingu) i zarządzania wieloma poziomami ryzyka.

    Fragment kodu Wiele zleceń rynkowych — wysyła wiele zleceń naraz z różnymi magic numbers.

    Na zrzucie ekranu wybierz liczbę zleceń (nb) i magic number. Jeśli wybierzesz 3 jako liczbę zleceń i 1000 jako magic number, utworzone zostaną 3 zlecenia rynkowe z numerami magicznymi: 1000, 1001, a następnie 1002.

    Zamknij częściowo niektóre zlecenia rynkowe na jednym poziomie Take Profit, a następnie zamknij pozostałe zlecenia na innych poziomach Take Profit lub Stop Loss.

    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 {}
    }
    Dotychczasowe wyniki nie stanowią gwarancji przyszłych zysków. Wszelkie informacje należy traktować wyłącznie jako materiały edukacyjne Zastrzeżenie wymagane przez rząd STANÓW ZJEDNOCZONYCH – Commodity Futures Trading Commission informuje: Handel kontraktami futures i opcjami wiąże się z potencjalnie wysokimi zyskami, ale także z ogromnym ryzykiem. Należy być świadomym ryzyka i być gotowym je zaakceptować, aby inwestować na rynkach kontraktów futures i opcji. Nie inwestuj pieniędzy, na których stratę nie możesz sobie pozwolić. Niniejszy dokument nie stanowi zachęty ani oferty kupna/sprzedaży kontraktów futures, akcji ani powiązanych z nimi opcji. Nie składa się żadnych oświadczeń, że jakiekolwiek konto osiągnie lub ma szansę osiągnąć zyski lub straty podobne do omówionych w tym dokumencie. Wyniki osiągnięte w przeszłości przez jakikolwiek system lub metodologię handlową niekoniecznie wskazują na przyszłe rezultaty. REGUŁA CFTC 4.41 – HIPOTETYCZNE LUB SYMULOWANE WYNIKI MAJĄ PEWNE OGRANICZENIA. W PRZECIWIEŃSTWIE DO HISTORII RZECZYWISTYCH WYNIKÓW, WYNIKI SYMULOWANE NIE ODZWIERCIEDLAJĄ RZECZYWISTEGO HANDLU. PONADTO, PONIEWAŻ TRANSAKCJE NIE ZOSTAŁY FAKTYCZNIE ZAWARTE, WYNIKI MOGĄ NIE UWZGLĘDNIAĆ WPŁYWU PEWNYCH CZYNNIKÓW RYNKOWYCH, TAKICH JAK BRAK PŁYNNOŚCI. SYMULOWANE PROGRAMY HANDLOWE Z REGUŁY CECHUJE RÓWNIEŻ TO, ŻE SĄ PROJEKTOWANE Z PERSPEKTYWY CZASU. NIE SKŁADA SIĘ ŻADNYCH OŚWIADCZEŃ, ŻE JAKIEKOLWIEK KONTO OSIĄGNIE LUB MA SZANSĘ OSIĄGNĄĆ ZYSKI LUB STRATY PODOBNE DO PRZEDSTAWIONYCH. NIE SKŁADA SIĘ ŻADNYCH OŚWIADCZEŃ, ŻE JAKIEKOLWIEK KONTO OSIĄGNIE LUB MA SZANSĘ OSIĄGNĄĆ ZYSKI LUB STRATY PODOBNE DO OMÓWIONYCH W TYM SERWISIE. W PRZYPADKU DECYZJI O INWESTOWANIU PRAWDZIWYCH PIENIĘDZY, WSZYSTKIE DECYZJE HANDLOWE NA RYNKACH FINANSOWYCH POWINNY BYĆ PODEJMOWANE SAMODZIELNIE.
    Bezpłatne

    Pliki

    • Snippet-MultipleMarketOrder.sqm12 KBZablokowane

    Pobieranie odblokuje się po zakupie lub z aktywnym poziomem członkostwa.

    Szczegóły
    Wersja1.0.0
    Opublikowano19 października 2026
    Ostatnia aktualizacja22 października 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryTrading options