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

    Renommer des stratégies par lot

    StrategyQuantPlugins
    Renommer des stratégies par lot

    Renommez par lot toutes les stratégies d'une databank à l'aide de motifs rechercher & remplacer. Idéal pour harmoniser vos conventions de nommage, supprimer les préfixes/suffixes et uniformiser les noms de stratégies dans toute votre bibliothèque.

    Idéal si vous souhaitez créer rapidement des noms clairs et structurés sur l'ensemble d'une databank – ce snippet de Custom Analysis vous permet de renommer en bloc des stratégies dans StrategyQuant X à l'aide d'un simple rechercher → remplacer (ou simplement rechercher → supprimer).

    — Fonctionnalités

    • S'exécute en tant que Custom Analysis (analyse complète de la databank).

    • Input args accepte find=>replace or just find to remove.

    • Renomme directement dans la databank source sélectionnée.

    • Correspondance littérale, sensible à la casse. Prend en charge \n, \t, \r.

    • Parfait pour le nettoyage massif : supprimer les préfixes/suffixes, éliminer des mots, standardiser les symboles/unités de temps/directions.

    — Installation

    1. Code Editor → New → Custom Analysis, nommez le fichier CARenameFindReplace
    2. Collez le code (ci-dessous) et cliquez sur Compile.
    3. Si nécessaire, redémarrez SQX.

    — Utilisation

    1. Custom Project → Task → Custom Analysis. (Peut également être exécuté au sein d'une databank depuis Databank > Tools > Run CA).
    2. Dans Full databank analysis, sélectionnez CARenameFindReplace et choisissez votre banque de données Source.
    3. Dans Input args, saisissez l'une des options suivantes :
      -
      Remplacer : old=>new
      Supprimer : old
      -
    4. Activez « Filter by results of custom analysis » pour renommer les stratégies d'origine. (Si vous désactivez cette option, les stratégies seront dupliquées et seuls les doublons seront renommés, laissant les originales intactes.)
    5. Lancez l'exécution. Tous les noms de stratégie dans la banque de données Source sont mis à jour.

    — Exemples

    • Supprimer le mot « Strategy » (avec l'espace final) :
      Strategy =>
    • Convertir le nom automatique SQX en un libellé formaté :
      Strategy =>XAUUSD_H1_L_
    • Supprimer les points après une passe de préfixe :
      .=>

    Astuce : effectuez plusieurs passes pour un formatage en plusieurs étapes (par ex., ajouter un préfixe, puis supprimer des caractères, puis ajouter un suffixe). Pensez à dupliquer la banque de données au préalable si vous souhaitez pouvoir revenir facilement en arrière.

    Code :

    package SQ.CustomAnalysis;
    import com.strategyquant.tradinglib.*;
    import com.strategyquant.tradinglib.project.ProjectEngine;
    import com.strategyquant.tradinglib.project.SQProject;
    import java.util.ArrayList;
    import java.util.HashSet;
    public class CARenameFindReplace extends CustomAnalysisMethod {
        public CARenameFindReplace() {
            super("CARenameFindReplace", TYPE_PROCESS_DATABANK);
        }
        @Override
        public boolean filterStrategy(String project, String task, String databankName, ResultsGroup rg) throws Exception {
            return true;
        }
        @Override
        public ArrayList processDatabank(
                String project,
                String task,
                String databankName,
                ArrayList databankRG) throws Exception {
            // Read single Input args string
            String raw = getInputArgs();
            if (raw == null) raw = "";
            raw = raw.trim();
            // No args -> do nothing
            if (raw.isEmpty()) {
                return databankRG;
            }
            // Parse: "find=>replace" OR just "find" (remove)
            String find, repl;
            int arrow = raw.indexOf("=>");
            if (arrow >= 0) {
                find = raw.substring(0, arrow);
                repl = raw.substring(arrow + 2);
            } else {
                find = raw;
                repl = "";
            }
            find = unescape(find);
            repl = unescape(repl);
            // If find is empty, do nothing (prevents accidental rename-all)
            if (find.isEmpty()) {
                return databankRG;
            }
            SQProject prj = ProjectEngine.get(project);
            Databank db = prj.getDatabanks().get(databankName);
            // Snapshot of originals to avoid ConcurrentModificationException
            ArrayList snapshot = new ArrayList<>(databankRG);
            // Track existing names so we can avoid collisions if needed
            HashSet usedNames = new HashSet<>();
            for (ResultsGroup rg : snapshot) {
                if (rg.getName() != null) usedNames.add(rg.getName());
            }
            // 1) Create renamed clones (no db.add inside the iteration)
            ArrayList clonesToAdd = new ArrayList<>();
            for (ResultsGroup rg : snapshot) {
                String oldName = rg.getName();
                if (oldName == null) continue;
                String newName = oldName.replace(find, repl);
                // Only duplicate if name changes
                if (!newName.equals(oldName)) {
                    // Avoid exact-name collisions (optional safety)
                    String finalName = makeUniqueName(newName, usedNames);
                    ResultsGroup newRg = rg.clone();
                    newRg.setName(finalName);
                    clonesToAdd.add(newRg);
                    usedNames.add(finalName);
                }
            }
            // 2) Add clones after iteration (safe)
            for (ResultsGroup newRg : clonesToAdd) {
                db.add(newRg, true);
            }
            // Return the newly created strategies (mirrors SQX RenameStrategies behaviour)
            return clonesToAdd;
        }
        private static String makeUniqueName(String baseName, HashSet used) {
            if (!used.contains(baseName)) return baseName;
            int i = 2;
            while (true) {
                String candidate = baseName + "_" + i;
                if (!used.contains(candidate)) return candidate;
                i++;
            }
        }
        private static String unescape(String s) {
            if (s == null) return "";
            return s.replace("\\n", "\n")
                    .replace("\\t", "\t")
                    .replace("\\r", "\r");
        }
    }
    
    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-BatchRenameStrategies.sqm5 KBVerrouillé

    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
    AuthorZach
    App version145.3058
    Codebase categoryCustom Analysis