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

    Batch Rename Strategies

    StrategyQuantWtyczki
    Batch Rename Strategies

    Masowo zmieniaj nazwy wszystkich strategii w bazie danych za pomocą reguł znajdź i zamień. Idealne narzędzie do porządkowania konwencji nazewnictwa, usuwania prefiksów/sufiksów i standaryzacji nazw strategii w całej bibliotece.

    Idealne rozwiązanie, jeśli chcesz szybko nadać przejrzyste, czytelne nazwy strategiom w całej bazie danych – ten fragment kodu Custom Analysis pozwala na zbiorczą zmianę nazw strategii w StrategyQuant X za pomocą prostej operacji znajdź → zamień (lub znajdź → usuń).

    — Co robi

    • Działa jako Custom Analysis (analiza całej bazy danych).

    • Parametry wejściowe przyjmują find=>replace or just find to remove.

    • Zmienia nazwy bezpośrednio w miejscu w wybranej bazie źródłowej.

    • Dosłowne dopasowanie z uwzględnieniem wielkości liter. Obsługuje \n, \t, \r.

    • Doskonałe do masowego porządkowania: usuwania prefiksów/sufiksów, wycinania słów oraz standaryzacji symboli/interwałów/kierunków.

    — Jak zainstalować

    1. Code Editor → New → Custom Analysis, nazwij plik CARenameFindReplace
    2. Wklej kod (poniżej) i kliknij Compile.
    3. W razie potrzeby zrestartuj SQX.

    — Instrukcja użycia

    1. Custom Project → Task → Custom Analysis. (Można go również uruchomić wewnątrz databanku z poziomu Databank > Tools > Run CA).
    2. W sekcji Full databank analysis wybierz CARenameFindReplace i wskaż swój databank Source.
    3. W polu Input args wprowadź jedną z opcji:
      -
      Zastąp: old=>new
      Usuń: old
      -
    4. Włącz opcję „Filter by results of custom analysis”, aby zmienić nazwy oryginalnych strategii. (Jeśli ją wyłączysz, strategie zostaną zduplikowane i tylko duplikaty zmienią nazwę, pozostawiając oryginały bez zmian).
    5. Kliknij Run. Wszystkie nazwy strategii w źródłowym databanku zostaną zaktualizowane.

    — Przykłady

    • Usuń słowo „Strategy ” (ze spacją na końcu):
      Strategy =>
    • Konwertuj automatyczną nazwę SQX na sformatowaną etykietę:
      Strategy =>XAUUSD_H1_L_
    • Usuń kropki po przejściu dodawania prefiksu:
      .=>

    Wskazówka: Wykonaj wiele przejść w celu wieloetapowego formatowania (np. dodaj prefiks, potem usuń znaki, a następnie dodaj sufiks). Rozważ wcześniejsze zduplikowanie bazy danych, jeśli chcesz mieć możliwość łatwego przywrócenia zmian.

    Kod:

    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");
        }
    }
    
    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-BatchRenameStrategies.sqm5 KBZablokowane

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