StrategyQuant
Assistant IA QAlgoCloudQuantAnalyzerQuantDataManager
Cours gratuitEntreprise
BlogDocumentationForumContactez-nous
BlogMarketplace
Se connecter
Créer un compte gratuit

Produit

  • Tarifs & licences
  • Formations
  • Place de marché
  • Commencer l'essai gratuit

Mentions légales

  • Conditions d'utilisation
  • Politique de confidentialité
  • Cookies

Contact

[email protected]

Société

StrategyQuant s.r.o.

Korunní 2569/108, Vinohrady, 101 00 Praha 10, République tchèque, UE

IČ : 04000498

DIČ : CZ04000498

Réseaux sociaux

  • Mentions légales | TRAITEMENT ET PROTECTION DES DONNÉES PERSONNELLES

    Les performances passées ne constituent pas une garantie de succès futur. Toutes les informations doivent être considérées à des fins pédagogiques uniquement

    Avertissement des ÉTATS-UNIS requis par le gouvernement - La Commodity Futures Trading Commission précise : Le trading sur les contrats à terme et les options présente d'importantes opportunités de gains, mais implique également un risque potentiel élevé. Vous devez être conscient des risques et être prêt à les accepter afin d'investir sur les marchés des contrats à terme et des options. Ne tradez pas avec de l'argent que vous ne pouvez pas vous permettre de perdre. Ceci ne constitue ni une sollicitation ni une offre d'achat/de vente de contrats à terme, d'actions ou d'options sur ces mêmes instruments. Aucune déclaration n'est faite garantissant qu'un compte réalisera ou est susceptible de réaliser des profits ou des pertes similaires à ceux présentés dans ce document. Les performances passées de tout système ou méthode de trading ne sont pas nécessairement représentatives des résultats futurs.

    RÈGLE CFTC 4.41 - LES RÉSULTATS DE PERFORMANCE HYPOTHÉTIQUES OU SIMULÉS COMPORTENT CERTAINES LIMITES. CONTRAIREMENT AUX RÉSULTATS DE PERFORMANCE RÉELS, LES RÉSULTATS SIMULÉS NE REPRÉSENTENT PAS DES OPÉRATIONS DE TRADING RÉELLES. DE PLUS, DANS LA MESURE OÙ LES TRANSACTIONS N'ONT PAS ÉTÉ EXÉCUTÉES, LES RÉSULTATS ONT PU COMPENSER L'IMPACT DE CERTAINS FACTEURS DE MARCHÉ, LE CAS ÉCHÉANT, TELS QUE LE MANQUE DE LIQUIDITÉ. LES PROGRAMMES DE TRADING SIMULÉ EN GÉNÉRAL SONT ÉGALEMENT SUJETS AU FAIT QU'ILS SONT CONÇUS EN BÉNÉFICIANT D'UN RECUL HISTORIQUE. AUCUNE DÉCLARATION N'EST FAITE GARANTISSANT QU'UN COMPTE RÉALISERA OU EST SUSCEPTIBLE DE RÉALISER DES PROFITS OU DES PERTES SIMILAIRES À CEUX INDIQUÉS.

    AUCUNE DÉCLARATION N'EST FAITE GARANTISSANT QU'UN COMPTE RÉALISERA, OU EST SUSCEPTIBLE DE RÉALISER, DES PROFITS OU DES PERTES SIMILAIRES À CEUX ÉVOQUÉS SUR CE SITE. SI VOUS DÉCIDEZ D'INVESTIR DE L'ARGENT RÉEL, TOUTES LES DÉCISIONS DE TRADING SUR LES MARCHÉS FINANCIERS VOUS APPARTIENNENT.

    © StrategyQuant 2026

    Propulsé par Klaudie.ai

    Retour au marketplaceDIGITAL

    Classement des blocs de construction v2

    StrategyQuantPlugins
    Classement des blocs de construction v2

    Classe les blocs de construction en fonction de leurs performances sur plusieurs banques de données afin d'identifier les composants les plus rentables pour vos instruments. Analyse les signaux d'entrée/sortie et les métriques clés pour optimiser la construction de stratégies.

    1/ Les nouveautés de cette version

    • Noms des blocs de construction au lieu de variables pour faciliter l'analyse hors échantillon (Out Of Sample)
    • Analyse les signaux d'entrée et de sortie
    • Sélection par nom de signal : Entrée/Sortie, Long/Short
    • Prend en charge les modèles avec signaux multiples
    • Génère des statistiques par banque de données et répertorie les blocs de construction dans C:\temp\
    • Génère des groupes aléatoires pour chaque banque de données pour une sélection hors échantillon (Out Of Sample) précise
    • Crée un portefeuille de trades à partir de la sélection de filtres OOS
    • Extensible à plus de 10 métriques StrategyQuant

    2/ Installation

    • Dans CodeEditor : importez « SQExtension RankStratsParameters 15052022 V2 04 » et « SQExtension_SortinoRatio »
    • Compilez et redémarrez SQX
    • Créez le dossier C:\Temp\ avec les sous-répertoires : C:\Temp\Results P1, etc. (décompressez Directories.rar)
    • Importez les projets personnalisés :
      • « I 1176 Bouillant Research Custom Project EURUSD Ent 1i Ex 1i I » (crée des stratégies)
      • « I 1177 Bouillant Analysis Custom Project » (analyse si >20000 stratégies)
      • « I 1177 Bouillant Analysis Plus Custom Project » (analyse si <20000 stratégies)

    3/ Tester les blocs de construction

    Créez des stratégies dans l'analyse personnalisée, analysez Long Entry, Short Entry, Long Exit, Short Exit à partir des résultats hors échantillon dans une autre analyse personnalisée.

    4/ Performance des blocs de construction

    Sur 21 ans hors échantillon sur 3 instruments, certains blocs de construction génèrent 4959 $ de profit net tandis que d'autres affichent -4977 $ de perte par an.

    5/ Analyse d'une banque de données unique

    • Ajoutez Custom Analysis Task au projet personnalisé
    • Sélectionnez « RankStrategiesParameters »
    • Sélectionnez la banque de données source (ex. : P1R)
    • Exécutez la tâche
    • Entrez 1 comme nombre de DataBanks
    • Entrez 10 comme nombre minimum de stratégies par bloc de construction (plus c'est élevé, mieux c'est)

    6/ Analyse multi-banques de données

    Analyse plusieurs banques de données de manière séquentielle, sélectionne les blocs de construction selon les critères pour chaque période.

    7/ Configuration de plusieurs banques de données

    Téléchargez le workflow « I 1172 USDCHF H1 10YP1 » (10 ans dans l'échantillon, 1 an hors échantillon, unité de temps H1, 7 périodes).

    Configurez les noms des banques de données :

    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";

    Pour le workflow : saisissez 7 banques de données, 10 stratégies minimum par bloc, 1 pour le portefeuille, 2 pour le filtre de profit net, saisissez le montant seuil.

    8/ Amélioration des résultats

    EURUSD sans filtre :

    USDCHF sans filtre :

    EURUSD avec filtre :

    USDCHF avec filtre :

    Le filtre de profit net a permis d'éviter les pertes de 2020. Testez avec plusieurs métriques (ratio de Sharpe, indice Ulcer) et des groupes aléatoires pour obtenir de meilleurs résultats.

    9/ Aperçu du code

    Réduire par #Region pour afficher la structure :

    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;  
            }
        }
    }
    

    Sources :

    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/
    Les performances passées ne préjugent pas des performances futures. Toutes les informations doivent être considérées comme ayant un but purement éducatif ÉTATS-UNIS Avertissement requis par le gouvernement - La Commodity Futures Trading Commission précise : Le trading de contrats à terme et d'options comporte d'importantes perspectives de gain, mais aussi d'importants risques potentiels. Vous devez être conscient des risques et accepter de les assumer afin d'investir sur les marchés des contrats à terme et des options. Ne tradez pas avec de l'argent que vous ne pouvez pas vous permettre de perdre. Ce document ne constitue ni une sollicitation ni une offre d'achat/de vente de contrats à terme, d'actions ou d'options sur ces derniers. Aucune déclaration n'est faite garantissant qu'un compte réalisera ou est susceptible de réaliser des profits ou des pertes similaires à ceux mentionnés dans ce document. La performance passée de tout système ou méthode de trading n'est pas nécessairement indicative des résultats futurs. RÈGLE CFTC 4.41 - LES RÉSULTATS DE PERFORMANCE HYPOTHÉTIQUES OU SIMULÉS COMPORTENT CERTAINES LIMITES. CONTRAIREMENT À UN HISTORIQUE RÉEL DE PERFORMANCE, LES RÉSULTATS SIMULÉS NE REPRÉSENTENT PAS UN TRADING RÉEL. DE PLUS, ÉTANT DONNÉ QUE LES TRANSACTIONS N'ONT PAS ÉTÉ RÉELLEMENT EXÉCUTÉES, LES RÉSULTATS ONT PU SOUS-ÉVALUER OU SURÉVALUER L'IMPACT DE CERTAINS FACTEURS DE MARCHÉ, TELS QUE LE MANQUE DE LIQUIDITÉ. LES PROGRAMMES DE TRADING SIMULÉ EN GÉNÉRAL SONT ÉGALEMENT SOUMIS AU FAIT QU'ILS SONT CONÇUS AVEC LE RECUL DU TEMPS. AUCUNE DÉCLARATION N'EST FAITE GARANTISSANT QU'UN COMPTE RÉALISERA OU EST SUSCEPTIBLE DE RÉALISER DES PROFITS OU DES PERTES SIMILAIRES À CEUX AFFICHÉS. AUCUNE DÉCLARATION N'EST FAITE GARANTISSANT QU'UN COMPTE RÉALISERA, OU EST SUSCEPTIBLE DE RÉALISER, DES PROFITS OU DES PERTES SIMILAIRES À CEUX ÉVOQUÉS SUR CE SITE. SI VOUS DÉCIDEZ D'INVESTIR DE L'ARGENT RÉEL, TOUTES LES DÉCISIONS DE TRADING SUR LES MARCHÉS FINANCIERS DOIVENT ÊTRE LES VÔTRES.
    Gratuit

    Fichiers

    • Snippet-BuildingBlocksRankingv2.sqm4.7 MBVerrouillé

    Le téléchargement se débloque après l’achat ou avec un niveau actif.

    Détails
    Version1.0.0
    Publié le19 octobre 2026
    Dernière mise à jour2 novembre 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryCustom Analysis