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

    Building Blocks Ranking v2

    StrategyQuantWtyczki
    Building Blocks Ranking v2

    Tworzy ranking bloków konstrukcyjnych na podstawie wyników z wielu baz danych, aby znaleźć najbardziej zyskowne komponenty dla Twoich instrumentów. Analizuje sygnały wejścia/wyjścia oraz kluczowe metryki w celu zoptymalizowania budowy strategii.

    1/ Co nowego w tej wersji

    • Nazwy bloków konstrukcyjnych (Building Blocks) zamiast zmiennych dla łatwiejszej analizy Out Of Sample
    • Analizuje sygnały wejścia i wyjścia
    • Wybór według nazwy sygnału: Entry/Exit, Long/Short
    • Obsługuje szablony z wieloma sygnałami
    • Tworzy statystyki dla poszczególnych baz danych i wyświetla listę bloków konstrukcyjnych w C:\temp\
    • Generuje losowe grupy dla każdego banku danych w celu precyzyjnego wyboru Out Of Sample
    • Tworzy portfel transakcji na podstawie wyboru filtrów OOS
    • Możliwość rozszerzenia do ponad 10 wskaźników StrategyQuant

    2/ Instalacja

    • W CodeEditor: Zaimportuj „SQExtension RankStratsParameters 15052022 V2 04” oraz „SQExtension_SortinoRatio”
    • Skompiluj i zrestartuj SQX
    • Utwórz folder C:\Temp\ z podkatalogami: C:\Temp\Results P1 itp. (rozpakuj Directories.rar)
    • Zaimportuj projekty niestandardowe:
      • „I 1176 Bouillant Research Custom Project EURUSD Ent 1i Ex 1i I” (tworzy strategie)
      • „I 1177 Bouillant Analysis Custom Project” (analizuje, jeśli >20000 strategii)
      • „I 1177 Bouillant Analysis Plus Custom Project” (analizuje, jeśli <20000 strategii)

    3/ Testowanie bloków konstrukcyjnych

    Utwórz strategie w ramach analizy niestandardowej, przeanalizuj sygnały Long Entry, Short Entry, Long Exit, Short Exit na podstawie wyników Out Of Sample w kolejnej analizie niestandardowej.

    4/ Wydajność bloków konstrukcyjnych

    W okresie 21 lat Out Of Sample na 3 instrumentach niektóre bloki konstrukcyjne przynoszą 4959 $ zysku netto, podczas gdy inne wykazują -4977 $ straty rocznie.

    5/ Analiza pojedynczego banku danych

    • Dodaj zadanie Custom Analysis Task do projektu niestandardowego
    • Wybierz „RankStrategiesParameters”
    • Wybierz źródłowy bank danych (np. P1R)
    • Uruchom zadanie
    • Wpisz 1 jako liczbę banków danych
    • Wpisz 10 jako minimalną liczbę strategii na blok konstrukcyjny (im więcej, tym lepiej)

    6/ Analiza wielu banków danych

    Analizuje sekwencyjnie wiele banków danych, wybierając bloki konstrukcyjne według kryteriów dla każdego okresu.

    7/ Konfiguracja wielu banków danych

    Pobierz workflow „I 1172 USDCHF H1 10YP1” (10-letni okres In Sample, 1-roczny Out Of Sample, interwał H1, 7 okresów).

    Skonfiguruj nazwy banków danych:

    String DatabankName1 = "P1 R";
    String DatabankName2 = "P2 R";
    String DatabankName3 = "P3 R";
    String DatabankName4 = "P4 R";
    String DatabankName5 = "P5 R";
    String DatabankName6 = "P6 R";
    String DatabankName7 = "P7 R";

    Dla workflow: wprowadź 7 banków danych, minimum 10 strategii na blok, 1 dla portfela, 2 dla filtra zysku netto i wpisz wartość progową.

    8/ Poprawa wyników

    EURUSD bez filtra:

    USDCHF bez filtra:

    EURUSD z filtrem:

    USDCHF z filtrem:

    Filtr zysku netto pozwolił uniknąć strat w 2020 roku. Przeprowadź testy z wieloma metrykami (wskaźnik Sharpe'a, Ulcer Index) i grupami losowymi, aby uzyskać lepsze rezultaty.

    9/ Przegląd kodu

    Zwiń według #Region, aby uzyskać przejrzystą strukturę:

    package SQ.CustomAnalysis;
    import com.strategyquant.lib.*;
    import java.util.ArrayList;
    import com.strategyquant.datalib.*;
    import com.strategyquant.tradinglib.*;
    import com.strategyquant.tradinglib.PlTypes;
    import com.strategyquant.tradinglib.project.ProjectEngine;
    import com.strategyquant.tradinglib.results.SpecialValues;
    import com.strategyquant.datalib.TradingException;
    import com.strategyquant.lib.SQTime;
    import com.strategyquant.lib.ValuesMap;
    import com.strategyquant.lib.XMLUtil;
    import java.util.Arrays;
    import java.util.Collections;
    import java.lang.String;
    import com.strategyquant.tradinglib.results.stats.comparator.OrderComparatorByOpenTime;
    import SQ.Utils.Bouillant;
    import com.strategyquant.lib.L;
    import com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult;
    import com.strategyquant.lib.ValuesMap;
    import java.io.File;  							
    import java.io.BufferedWriter;
    import java.io.IOException;  					
    import java.io.FileWriter;   					
    import java.util.Scanner;  						
    import javax.swing.JOptionPane;    				
    import java.io.FileNotFoundException;  			
    import java.io.*;
    import org.jdom2.*;
    import org.jdom2.output.*;
    import org.jdom2.Element;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.Document;
    import java.io.StringReader;
    import java.util.*;
    import java.io.IOException;
    import org.jdom2.Attribute;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    import com.google.common.base.Strings;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import java.time.Duration;
    import java.time.Instant;
    import java.sql.Timestamp;
    public class RankStratsParametersV1 extends CustomAnalysisMethod 
    {
        public static final Logger Log = LoggerFactory.getLogger(RankStratsParametersV1.class);
        static Boolean DebugMode = false;
        static FileWriter FilterWriterTmp;
        public RankStratsParametersV1() 
        {
            super("RankStrategiesParameters", TYPE_PROCESS_DATABANK);
        }
        @Override
        public boolean filterStrategy(String project, String task, String databankName, ResultsGroup rg) throws Exception 
        {
            return true;
        }
        @Override
        public ArrayList<ResultsGroup> processDatabank(String project, String task, String databankName, ArrayList<ResultsGroup> databankRG) throws Exception 
        {
            try 
            {
                //#region Init
                    String LongEntrySignal= "LongEntrySignal";
                    String ShortEntrySignal= "ShortEntrySignal";
                    String LongExitSignal= "LongExitSignal";
                    String ShortExitSignal= "ShortExitSignal";
                    String stratMetric1= "ProfitFactor";
                    String stratMetric2 = "NetProfit";
                    String stratMetric3 = "SharpeRatio";
                    String stratMetric4 = "UlcerIndex";
                    String stratMetric5 = "SortinoRatio";
                    String stratMetric6 = "WinningPct";
                    String stratMetric7 = "ReturnDDRatio";
                    String stratMetric8 = "RExpectancy";
                    String stratMetric9 = "AnnualPctReturnDDRatio";
                    String stratMetric10 = "Drawdown";
                    String stratMetric11 = "NumberOfTrades";
                //#endregion
                String OutputPath1 = "C:\\Temp\\";
                String input;
                input = (String)JOptionPane.showInputDialog(null, "How many DataBanks are you analysing?", "Analysis Settings", JOptionPane.QUESTION_MESSAGE, null, null, 7);
                int NbDataBanks = Integer.parseInt(input);
                if (NbDataBanks < 1) {NbDataBanks = 1;}
                if (NbDataBanks > 12) {NbDataBanks = 12;}
                NbDataBanks = NbDataBanks + 1;
                input = (String)JOptionPane.showInputDialog(null,"Enter minimum strategies per Building block", "Analysis Settings", JOptionPane.QUESTION_MESSAGE, null, null, 10);
                int minimum = Integer.parseInt(input);
                if (minimum <= 0) { minimum = 1 ; }
                // Process databanks and create statistics
                // [Core processing logic for building block analysis]
                return databankRG;  
            }
            catch (Exception e)
            {
                Log.error("Error RankStratsParametersV1", e);
                return databankRG;  
            }
        }
    }
    

    Źródła:

    https://strategyquant.com/doc/programming-for-sq/changing-strategy-parameters-programmatically/
    https://strategyquant.com/doc/programming-for-sq/viewing-and-changing-strategy-parameters-version-2/
    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-BuildingBlocksRankingv2.sqm4.7 MBZablokowane

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

    Szczegóły
    Wersja1.0.0
    Opublikowano19 października 2026
    Ostatnia aktualizacja2 listopada 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryCustom Analysis