StrategyQuant
Assistente de IA QAlgoCloudQuantAnalyzerQuantDataManager
Curso GratuitoEmpresa
BlogDocumentaçãoFórumFale conosco
BlogMarketplace
Entrar
Criar conta grátis

Produto

  • Preços e licenças
  • Aprender
  • Marketplace
  • Começar teste gratuito

Aviso legal

  • Termos de Serviço
  • Política de Privacidade
  • Cookies

Contato

[email protected]

Empresa

StrategyQuant s.r.o.

Korunní 2569/108, Vinohrady, 101 00 Praha 10, República Checa, UE

IČ: 04000498

DIČ: CZ04000498

Redes sociais

  • Aviso Legal | PROCESSAMENTO E PROTEÇÃO DE DADOS PESSOAIS

    O desempenho passado não é garantia de sucesso futuro. Todas as informações devem ser consideradas apenas para fins educativos

    ESTADOS UNIDOS Aviso legal exigido pelo Governo - A Commodity Futures Trading Commission informa: A negociação de futuros e opções apresenta grandes potenciais de recompensa, mas também grandes riscos potenciais. Deve estar ciente dos riscos e disposto a aceitá-los para investir nos mercados de futuros e opções. Não negoceie com dinheiro que não possa perder. Isto não constitui uma solicitação nem uma oferta para comprar/vender futuros, ações ou opções sobre os mesmos. Não está a ser feita qualquer declaração de que qualquer conta irá ou terá probabilidade de obter lucros ou perdas semelhantes aos abordados neste documento. O desempenho passado de qualquer sistema ou metodologia de negociação não é necessariamente indicativo de resultados futuros.

    REGRA 4.41 DA CFTC - OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM DETERMINADAS LIMITAÇÕES. AO CONTRÁRIO DE UM REGISTO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. ALÉM DISSO, COMO AS ORDENS NÃO FORAM EXECUTADAS, OS RESULTADOS PODEM TER COMPENSADO O IMPACTO, SE HOUVER, DE DETERMINADOS FATORES DE MERCADO, COMO A FALTA DE LIQUIDEZ. OS PROGRAMAS DE NEGOCIAÇÃO SIMULADA EM GERAL TAMBÉM ESTÃO SUJEITOS AO FACTO DE SEREM CONCEBIDOS COM O BENEFÍCIO DE UMA ANÁLISE RETROSPETIVA. NÃO ESTÁ A SER FEITA QUALQUER DECLARAÇÃO DE QUE QUALQUER CONTA IRÁ OU TERÁ PROBABILIDADE DE OBTER LUCROS OU PERDAS SEMELHANTES AOS APRESENTADOS.

    NÃO ESTÁ A SER FEITA QUALQUER DECLARAÇÃO DE QUE QUALQUER CONTA IRÁ OU TERÁ PROBABILIDADE DE OBTER LUCROS OU PERDAS SEMELHANTES AOS ABORDADOS NESTE SITE. SE DECIDIR INVESTIR DINHEIRO REAL, TODAS AS DECISÕES DE NEGOCIAÇÃO NOS MERCADOS FINANCEIROS DEVEM SER DA SUA INTEIRA RESPONSABILIDADE.

    © StrategyQuant 2026

    Desenvolvido por Klaudie.ai

    Voltar ao marketplaceDIGITAL

    Building Blocks Ranking v2

    StrategyQuantPlugins
    Building Blocks Ranking v2

    Classifica os blocos de construção por desempenho em vários databanks para encontrar os componentes mais lucrativos para os seus instrumentos. Analisa sinais de entrada/saída e métricas-chave para otimizar a criação de estratégias.

    1/ Novidades nesta versão

    • Nomes dos Blocos de Construção em vez de variáveis para facilitar a análise Fora da Amostra (OOS)
    • Analisa sinais de Entrada e Saída
    • Selecione pelo nome do sinal: Entry/Exit, Long/Short
    • Suporta modelos (templating) com múltiplos sinais
    • Gera estatísticas por databank e lista os Blocos de Construção em C:\temp\
    • Gera grupos aleatórios para cada databank para uma seleção Fora da Amostra precisa
    • Cria um portfólio de operações a partir da seleção de filtros OOS
    • Expansível para mais de 10 métricas do StrategyQuant

    2/ Instalação

    • No CodeEditor: importe "SQExtension RankStratsParameters 15052022 V2 04" e "SQExtension_SortinoRatio"
    • Compile e reinicie o SQX
    • Crie a pasta C:\Temp\ com os subdiretórios: C:\Temp\Results P1, etc. (descompacte Directories.rar)
    • Importe projetos personalizados:
      • "I 1176 Bouillant Research Custom Project EURUSD Ent 1i Ex 1i I" (cria estratégias)
      • "I 1177 Bouillant Analysis Custom Project" (analisa se >20000 estratégias)
      • "I 1177 Bouillant Analysis Plus Custom Project" (analisa se <20000 estratégias)

    3/ Testando Blocos de Construção

    Crie estratégias na análise personalizada, analise Long Entry, Short Entry, Long Exit, Short Exit a partir dos resultados Fora da Amostra em outra análise personalizada.

    4/ Desempenho dos Blocos de Construção

    Ao longo de 21 anos Fora da Amostra em 3 instrumentos, alguns Blocos de Construção geram $4959 de lucro líquido, enquanto outros apresentam -$4977 de prejuízo por ano.

    5/ Análise de Databank Único

    • Adicione a Custom Analysis Task ao Custom Project
    • Selecione "RankStrategiesParameters"
    • Selecione o Databank de origem (por exemplo, P1R)
    • Execute a tarefa
    • Insira 1 como número de DataBanks
    • Insira 10 como número mínimo de estratégias por Bloco de Construção (quanto maior, melhor)

    6/ Análise de Múltiplos Databanks

    Analisa vários Databanks sequencialmente, selecionando Blocos de Construção por critérios para cada período.

    7/ Configuração de Múltiplos Databanks

    Baixe o fluxo de trabalho "I 1172 USDCHF H1 10YP1" (10 anos Na Amostra, 1 ano Fora da Amostra, tempo gráfico H1, 7 períodos).

    Configure os nomes dos databanks:

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

    Para o fluxo de trabalho: insira 7 databanks, 10 estratégias mínimas por bloco, 1 para portfólio, 2 para o filtro de Lucro Líquido, insira o valor limite.

    8/ Melhoria dos Resultados

    EURUSD sem filtro:

    USDCHF sem filtro:

    EURUSD com filtro:

    USDCHF com filtro:

    O filtro de lucro líquido evitou perdas em 2020. Teste com várias métricas (Sharpe Ratio, Ulcer Index) e grupos aleatórios para obter melhores resultados.

    9/ Visão Geral do Código

    Recolha por #Region para ver a estrutura:

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

    Fontes:

    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/
    O desempenho passado não é garantia de sucesso futuro. Todas as informações devem ser consideradas apenas para fins educacionais Isenção de responsabilidade dos ESTADOS UNIDOS exigida pelo Governo - A Commodity Futures Trading Commission informa: A negociação de futuros e opções oferece grandes recompensas potenciais, mas também grandes riscos potenciais. Você deve estar ciente dos riscos e disposto a aceitá-los para investir nos mercados de futuros e opções. Não opere com dinheiro que não possa perder. Isto não é uma solicitação nem uma oferta para comprar/vender futuros, ações ou opções sobre os mesmos. Nenhuma declaração está sendo feita de que qualquer conta obterá ou terá probabilidade de obter lucros ou perdas semelhantes aos discutidos neste documento. O desempenho passado de qualquer sistema ou metodologia de negociação não é necessariamente indicativo de resultados futuros. REGRA 4.41 DA CFTC - RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. AO CONTRÁRIO DE UM REGISTRO DE DESEMPENHO REAL, RESULTADOS SIMULADOS NÃO REPRESENTAM NEGOCIAÇÕES REAIS. ALÉM DISSO, COMO AS OPERAÇÕES NÃO FORAM EXECUTADAS, OS RESULTADOS PODEM TER COMPENSADO O IMPACTO, SE HOUVER, DE CERTOS FATORES DE MERCADO, COMO A FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL TAMBÉM ESTÃO SUJEITOS AO FATO DE SEREM PROJETADOS COM O BENEFÍCIO DA ANÁLISE RETROSPECTIVA. NENHUMA DECLARAÇÃO ESTÁ SENDO FEITA DE QUE QUALQUER CONTA OBTERÁ OU TERÁ PROBABILIDADE DE OBTER LUCROS OU PERDAS SEMELHANTES AOS MOSTRADOS. NENHUMA DECLARAÇÃO ESTÁ SENDO FEITA DE QUE QUALQUER CONTA OBTERÁ, OU TERÁ PROBABILIDADE DE OBTER, LUCROS OU PERDAS SEMELHANTES AOS DISCUTIDOS NESTE SITE. SE DECIDIR INVESTIR DINHEIRO REAL, TODAS AS DECISÕES DE NEGOCIAÇÃO NOS MERCADOS FINANCEIROS DEVEM SER EXCLUSIVAMENTE SUAS.
    Grátis

    Arquivos

    • Snippet-BuildingBlocksRankingv2.sqm4.7 MBBloqueado

    O download é liberado após a compra ou com um plano ativo.

    Detalhes
    Versão1.0.0
    Publicado19 de outubro de 2026
    Última atualização2 de novembro de 2026
    AppSQ
    TypeSnippet
    AuthorEmmanuel
    App version145.3058
    Codebase categoryCustom Analysis