StrategyQuant
Q AI AssistantAlgoCloudQuantAnalyzerQuantDataManager
Kostenloser KursUnternehmen
BlogDokumentationForumKontakt
BlogMarktplatz
Anmelden
Kostenloses Konto erstellen

Produkt

  • Preise & Lizenzen
  • Lernen
  • Marktplatz
  • Kostenlose Testversion starten

Rechtliches

  • Nutzungsbedingungen
  • Datenschutzerklärung
  • Cookies

Kontakt

[email protected]

Unternehmen

StrategyQuant s.r.o.

Korunní 2569/108, Vinohrady, 101 00 Praha 10, Tschechische Republik, EU

IČ: 04000498

DIČ: CZ04000498

Social Media

  • Impressum | VERARBEITUNG UND SCHUTZ PERSONENBEZOGENER DATEN

    Die Wertentwicklung in der Vergangenheit ist keine Garantie für zukünftige Erfolge. Alle Informationen sollten ausschließlich zu Bildungszwecken betrachtet werden

    VEREINIGTE STAATEN Gesetzlich vorgeschriebener Haftungsausschluss – Die Commodity Futures Trading Commission informiert: Der Handel mit Futures und Optionen birgt großes Gewinnpotenzial, aber auch erhebliche Verlustrisiken. Sie müssen sich der Risiken bewusst sein und bereit sein, diese zu akzeptieren, um an den Futures- und Optionsmärkten zu investieren. Handeln Sie nicht mit Geld, dessen Verlust Sie sich nicht leisten können. Dies ist weder eine Aufforderung noch ein Angebot zum Kauf/Verkauf von Futures, Aktien oder Optionen darauf. Es wird keine Zusicherung gemacht, dass ein Konto Gewinne oder Verluste erzielen wird oder wahrscheinlich erzielen wird, die denen in diesem Dokument genannten ähnlich sind. Die vergangene Wertentwicklung eines Handelssystems oder einer Methodik lässt nicht notwendigerweise auf zukünftige Ergebnisse schließen.

    CFTC-REGEL 4.41 – HYPOTHETISCHE ODER SIMULIERTE PERFORMANCE-ERGEBNISSE UNTERLIEGEN BESTIMMTEN EINSCHRÄNKUNGEN. IM GEGENSATZ ZU EINER TATSÄCHLICHEN PERFORMANCE-HISTORIE STELLEN SIMULIERTE ERGEBNISSE KEINEN ECHTEN HANDEL DAR. DA DIE TRADES NICHT TATSÄCHLICH AUSGEFÜHRT WURDEN, KÖNNEN DIE ERGEBNISSE AUSSERDEM DIE AUSWIRKUNGEN GEWISSER MARKTFAKTOREN WIE MANGELNDE LIQUIDITÄT ETWAIG KOMPENSIERT HABEN. SIMULIERTE HANDELSPROGRAMME UNTERLIEGEN IM ALLGEMEINEN ZUDEM DER TATSACHE, DASS SIE IM NACHHINEIN ENTWICKELT WURDEN. ES WIRD KEINE ZUSICHERUNG GEMACHT, DASS EIN KONTO GEWINNE ODER VERLUSTE ERZIELEN WIRD ODER WAHRSCHEINLICH ERZIELEN WIRD, DIE DEN DARGESTELLTEN ÄHNLICH SIND.

    ES WIRD KEINE ZUSICHERUNG GEMACHT, DASS EIN KONTO GEWINNE ODER VERLUSTE ERZIELEN WIRD ODER WAHRSCHEINLICH ERZIELEN WIRD, DIE DEN AUF DIESER WEBSITE BESPROCHENEN ÄHNLICH SIND. WENN SIE SICH ENTSCHEIDEN, ECHTES GELD ZU INVESTIEREN, SOLLTEN ALLE HANDELSENTSCHEIDUNGEN AN DEN FINANZMÄRKTEN IHRE EIGENEN SEIN.

    © StrategyQuant 2026

    Bereitgestellt von Klaudie.ai

    Zurück zum MarktplatzDIGITAL

    Batch Rename Strategies

    StrategyQuantPlugins
    Batch Rename Strategies

    Benennen Sie alle Strategien in einer Datenbank mithilfe von Suchen & Ersetzen-Mustern im Batch um. Ideal zum Bereinigen von Namenskonventionen, Entfernen von Präfixen/Suffixen und Standardisieren von Strategienamen in Ihrer gesamten Bibliothek.

    Ideal, wenn Sie schnell saubere, aussagekräftige Namen für eine gesamte Datenbank erstellen möchten – mit diesem Custom Analysis-Snippet können Sie Strategien in StrategyQuant X per einfachem Suchen → Ersetzen (oder Suchen → Entfernen) im Batch umbenennen.

    — Was es macht

    • Läuft als Custom Analysis (Full databank analysis).

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

    • Benennt direkt vor Ort in der ausgewählten Source-Datenbank um.

    • Exakte Übereinstimmung unter Berücksichtigung von Groß-/Kleinschreibung. Unterstützt \n, \t, \r.

    • Hervorragend für Massenbereinigungen: Präfixe/Suffixe kürzen, Wörter entfernen, Symbole/Timeframes/Richtungen vereinheitlichen.

    — Installation

    1. Code Editor → New → Custom Analysis, nennen Sie die Datei CARenameFindReplace
    2. Fügen Sie den Code (unten) ein und klicken Sie auf Compile.
    3. Starten Sie SQX bei Bedarf neu.

    — Verwendung

    1. Custom Project → Task → Custom Analysis. (Kann auch innerhalb einer Datenbank über Databank > Tools > Run CA ausgeführt werden).
    2. Wählen Sie in Full databank analysis CARenameFindReplace aus und bestimmen Sie Ihre Source-Datenbank.
    3. Geben Sie in Input args eines der folgenden Formate ein:
      -
      Ersetzen: old=>new
      Entfernen: old
      -
    4. Aktivieren Sie 'Filter by results of custom analysis', um die ursprünglichen Strategien umzubenennen. (Wenn Sie dies deaktivieren, werden die Strategien dupliziert und nur die Duplikate umbenannt, während die Originale unverändert bleiben.)
    5. Ausführen. Alle Strategienamen in der Source-Datenbank werden aktualisiert.

    — Beispiele

    • Das Wort „Strategy “ (mit nachgestelltem Leerzeichen) entfernen:
      Strategy =>
    • Den SQX-Auto-Namen in eine formatierte Bezeichnung umwandeln:
      Strategy =>XAUUSD_H1_L_
    • Punkte nach einem Präfix-Durchlauf entfernen:
      .=>

    Tipp: Führen Sie mehrere Durchläufe für eine mehrstufige Formatierung aus (z. B. Präfix hinzufügen, dann Zeichen entfernen, dann Suffix hinzufügen). Duplizieren Sie die Datenbank am besten vorher, wenn Sie ein einfaches Rollback wünschen.

    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");
        }
    }
    
    Die Wertentwicklung in der Vergangenheit ist keine Garantie für zukünftigen Erfolg. Alle Informationen sollten ausschließlich zu Bildungszwecken betrachtet werden. Von der Regierung der VEREINIGTEN STAATEN vorgeschriebener Haftungsausschluss – Die Commodity Futures Trading Commission weist darauf hin: Der Handel mit Futures und Optionen birgt große potenzielle Erträge, aber auch große potenzielle Risiken. Sie müssen sich der Risiken bewusst und bereit sein, diese zu akzeptieren, um an den Futures- und Optionsmärkten zu investieren. Handeln Sie nicht mit Geld, dessen Verlust Sie sich nicht leisten können. Dies ist weder eine Aufforderung noch ein Angebot zum Kauf/Verkauf von Futures, Aktien oder darauf basierenden Optionen. Es wird keine Zusicherung gegeben, dass irgendein Konto Gewinne oder Verluste erzielen wird oder wahrscheinlich erzielen wird, die den in diesem Dokument besprochenen ähnlich sind. Die vergangene Wertentwicklung eines Handelssystems oder einer Handelsmethodik lässt nicht notwendigerweise auf zukünftige Ergebnisse schließen. CFTC-REGEL 4.41 – HYPOTHETISCHE ODER SIMULIERTE PERFORMANCE-ERGEBNISSE UNTERLIEGEN BESTIMMTEN EINSCHRÄNKUNGEN. IM GEGENSATZ ZU EINER AUFZEICHNUNG DER TATSÄCHLICHEN WERTENTWICKLUNG STELLEN SIMULIERTE ERGEBNISSE KEINEN TATSÄCHLICHEN HANDEL DAR. DA DIE TRADES NICHT AUSGEFÜHRT WURDEN, KÖNNEN DIE ERGEBNISSE AUSSERDEM DEN EINFLUSS BESTIMMTER MARKTFAKTOREN WIE ETWA MANGELNDE LIQUIDITÄT AUSGEGLICHEN HABEN. SIMULIERTE HANDELSPROGRAMME UNTERLIEGEN IM ALLGEMEINEN ZUDEM DER TATSACHE, DASS SIE IM NACHHINEIN ENTWICKELT WURDEN. ES WIRD KEINE ZUSICHERUNG GEGEBEN, DASS EIN KONTO GEWINNE ODER VERLUSTE ERZIELEN WIRD ODER WAHRSCHEINLICH ERZIELEN WIRD, DIE DEN DARGESTELLTEN ÄHNLICH SIND. ES WIRD KEINE ZUSICHERUNG GEGEBEN, DASS IRGENDEIN KONTO GEWINNE ODER VERLUSTE ERZIELEN WIRD ODER WAHRSCHEINLICH ERZIELEN WIRD, DIE DEN AUF DIESER WEBSITE BESPROCHENEN ÄHNLICH SIND. WENN SIE SICH ENTSCHEIDEN, ECHTES GELD ZU INVESTIEREN, SOLLTEN ALLE HANDELSENTSCHEIDUNGEN AN DEN FINANZMÄRKTEN IHRE EIGENEN SEIN.
    Kostenlos

    Dateien

    • Snippet-BatchRenameStrategies.sqm5 KBGesperrt

    Der Download wird nach dem Kauf oder mit einem aktiven Tier freigeschaltet.

    Details
    Version1.0.0
    Veröffentlicht19. Oktober 2026
    Zuletzt aktualisiert2. November 2026
    AppSQ
    TypeSnippet
    AuthorZach
    App version145.3058
    Codebase categoryCustom Analysis