Documentação

Aplicações

Última atualização em 15. 4. 2020 por Mark Fric

Blocos personalizados

O que são blocos personalizados?

Os blocos personalizados permitem que você crie sua própria combinação de blocos - e armazene esta combinação como seu próprio bloco personalizado.

Por exemplo, veja o bloco de sinal já existente no StrategyQuant:

A CCI está subindo

Este sinal é válido quando:

CCI(Período)[2] < CCI(Período)[1]

onde Período é configurável e [2] significa duas barras para trás, [1] significa uma barra para trás.

Portanto, é válido quando a CCI uma barra de retorno é superior à CCI duas barras de retorno - o que significa que o valor da CCI está subindo.

 

Qual é a vantagem de criar combinações próprias de blocos personalizados?

O valor está na diminuição da aleatoriedade através do uso de sinais que fazem algum sentido real.

StrategyQuant poderia gerar condições como esta, utilizando apenas blocos CCI e IsLower (<)mas a chance de gerar uma condição MEANINGFULMENTE aleatória é pequena quando se considera quantas possibilidades aleatórias existem.

Outra vantagem é que quando você usa bloco CCI(Período) está subindoA partir de fora tem apenas um parâmetro de Período que será usado em ambos os indicadores CCI na condição.

Você pode estender a StrategyQuant criando seus próprios blocos personalizados como este, fazendo um trecho em código Java. Esta é uma boa maneira, mas nem todos são programadores.
Assim, desde o SQ Build 127 existe uma maneira de criar blocos personalizados como este de forma visual no editor AlgoWizard sem qualquer codificação.

Nesta documentação mostraremos como fazer exatamente isso.

 

Passo 1: Defina seu novo bloco personalizado

Em StrategyQuant abra a janela embutida AlgoWizard (1.), clique em Personalizar (2.) menu na parte superior. Em seguida, mude para Blocos personalizados (3.) guia:

Este é o painel de gerenciamento e edição de blocos personalizados.

Como exemplo, vamos criar um novo bloco personalizado que será válido quando a CCI estiver subindo por 3 barras consecutivas. Em pseudo-código, podemos escrever esta condição como:

CCI(Período)[3] < CCI(Período) [2] < CCI(Período) [1]

 

Clique no botão Adicionar bloco botão. Isto abrirá um diálogo, onde poderemos especificar os parâmetros de nosso novo bloco:

Chave de bloco

é a chave única (ID) deste bloco. Ela pode consistir apenas de letras e números, ou espaço ou caracteres especiais. Vamos nomear nosso novo bloco CCIRising3Bars.

Nome do bloco 

é seu nome que veremos na seleção de blocos de construção. Vamos nomeá-la CCI subindo por 3 barras

Tipo de bloco 

é um bloco do tipo. Há dois tipos suportados, por enquanto:

  • Condição - bloco que retorna valor verdadeiro/falso que pode ser usado como parte das condições de entrada ou saída. Geralmente é uma comparação. Bloco deste tipo será visível na seção Sinais dos Blocos de Construção.
  • Nível de preços - bloco que calcula o nível de preço que pode ser usado para ordens de parada / limite. Bloco deste tipo é visível na seção Níveis de preço de parada / limite na categoria de blocos de parada / limite de entrada na configuração de blocos de construção.

Clique Salvar e um novo bloco personalizado será criado:

SQ Bloco personalizado adicionado

Note que este bloco ainda está vazio, criamos uma definição, mas o novo bloco ainda não tem conteúdo.

Vamos adicionar a primeira condição ao bloco, clicando em Adicionar outra condição:

Condição de adição de blocos personalizados

Isto abre um diálogo padrão para escolher entre todos os blocos de construção existentes que você conhece do editor AlgoWizard. Vamos encontrar CCI indicador para nossa primeira comparação:

Não se esqueça de definir o Shift para 3, porque queremos obter o valor CCI de 3 barras de volta. Depois de clicar em Confirme a primeira parte de nossa condição personalizada é criada:

Agora clique em É maior (>) de comparação e alterá-lo para É mais baixo (<).

Então clique em 0 bloqueá-lo e substituí-lo por CCI(14)[2].

Repita estes dois passos para acrescentar uma segunda condição CCI(14)[2] < CCI(14)[1].

O resultado deve ser o seguinte:

Esta é uma condição completa. Ela é válida quando a CCI(14) está subindo para as últimas 3 barras.

Você deve ter notado que o período da CCI está definido para um valor fixo 14.
Se utilizássemos este bloco personalizado em seu estado atual, ele teria este aspecto:

Nosso novo bloco personalizado teria apenas o parâmetro gráfico obrigatório, e nenhum outro parâmetro.

Isto significa que o período da CCI utilizado no bloco será sempre 14 - o período será não gerado aleatoriamente em StrategyQuant e você não pode configurá-lo mais tarde.
Talvez seja isso para alguns parâmetros, mas queremos que o período CCI seja gerado de forma aleatória.

É aqui que os parâmetros de blocos personalizados entram em jogo. Há Parâmetros seção na parte inferior esquerda:

Parâmetros de blocos personalizados
Neste momento ele contém apenas um parâmetro - Quadro - que é obrigatório para cada bloco personalizado.
Vamos adicionar um novo parâmetro Período. Clique em Adicionar parâmetro botão. Isto adicionará um novo parâmetro à tabela. Renomeie-o para Período e mude seu tipo para período:

Você pode nomear seu parâmetro da maneira que quiser, e tem uma escolha de opções para um tipo:

  • quadro - significa que se trata de um parâmetro gráfico. Os indicadores são calculados a partir dos dados do gráfico, e o parâmetro do gráfico nos permite e StrategyQuant definir qual gráfico utilizar.
  • período - um tipo especial que deve ser usado para períodos indicadores. É um tipo separado porque StrategyQuant precisa saber que este parâmetro é um período, de modo que será limitado por limites de intervalo de período estabelecidos no gerador.
  • turno - outro tipo especial que deve ser usado para turnos. O turno é um índice para o histórico de barras. Shift=0 significa barra atual, Shift=1 significa barra anterior, Sift=2 significa duas barras de volta. Novamente é um tipo separado porque StrategyQuant precisa saber que este parâmetro é um deslocamento, de modo que será limitado pelos limites de deslocamento por período definidos no gerador.
  • int, duplo, bool - tipos de variáveis padrão disponíveis

Adicionamos um novo parâmetro de período, mas ele ainda não é utilizado em nossas condições de bloco personalizado, eles ainda têm valor fixo 14:

Para usar o parâmetro na condição, devemos clicar duas vezes em cada condição para abri-lo para edição. Em seguida, clique no azul […] ao lado do parâmetro Período. Ele abrirá uma lista onde você poderá escolher entre possíveis Parâmetros de bloco por período. Nós escolheremos nosso novo parâmetro Período.

O resultado é que o período em nosso indicador CCI agora não será mais um valor fixo, mas será configurável externamente usando o parâmetro Período:

Repita isso para o resto das condições da CCI, o resultado deve ser assim:


Desta forma, criamos um novo bloco personalizado chamado CCI subindo por 3 barras. Depois de salvar seus blocos personalizados, você pode usá-lo imediatamente no editor AlgoWizard:

Assim como na configuração de blocos de construção de um construtor:

O bom é que você não precisa fazer mais nada. Como este bloco personalizado foi criado usando componentes de bloco já existentes, StrategyQuant sabe como gerar o código fonte para ele para sua plataforma comercial alvo.

 

Etapa 2: Especificação de um bloco oposto

Criamos um novo bloco personalizado CCI subindo por 3 barras. A estratégia comercial geralmente tem regras Longas e Curtas, onde as condições de entrada Curtas são opostas às condições de entrada Longas.

Cada bloco padrão na StrategyQuant tem seu bloco oposto especificado, de modo que a SQ "sabe" como criar um bloco oposto para um bloco gerado.

Se o bloco personalizado não tem um bloco oposto definido, então ele é apenas copiado e utilizado também como um bloco oposto.
Assim, suas condições estratégicas ficariam parecidas:

Entrada Longa = CCI subindo por 3 barras
Entrada curta = CCI subindo por 3 barras

Normalmente não queremos isso, queremos que as regras sejam como elas:

Entrada Longa = CCI subindo por 3 barras
Entrada curta = CCI caindo para 3 barras

Bloco CCI caindo para 3 barras ainda não existe. Para que funcione, é preciso criá-lo. Felizmente, é muito simples. Volte para o editor de blocos personalizados e clique em Sem vínculo definido:

Isto abrirá um diálogo onde poderemos criar um novo bloco personalizado que será usado como um bloco oposto, ou escolher um existente - se ele existir.
Vamos criar um novo bloco e nomeá-lo CCI caindo para 3 barras:


Clique em Salvar e o novo bloco é criado:

Note que não está vazio - StrategyQuant criou-o negando o bloco original para sua conveniência. A negação é correta, portanto não há mais nada a fazer agora. Temos dois blocos definidos da maneira que queríamos:

 

Atualização de blocos opostos

Esta negação automática acontece apenas uma vez quando se cria o bloco oposto. Se você agora fez algumas mudanças no bloco CCI subindo por 3 barrasestas mudanças não são refletidas em seu bloco oposto CCI caindo para 3 barras automaticamente.

Para aplicar as mudanças automaticamente, negando novamente o bloco personalizado da fonte, você pode ir para o bloco oposto e clicar no botão Negar do bloco oposto botão.

Basta observar - você deve fazer isso no bloco oposto.
Então, se você editar bloco CCI subindo por 3 barras você deve então mudar para um bloco CCI caindo para 3 barras e aí clique no botão Negar do bloco oposto para negar automaticamente o conteúdo do bloco alterado e utilizá-lo no bloco oposto.

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
11 Comentários
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
tníquel
tníquel
22. 4. 2020 10:25 am

topo, muito bom idear.

Fernando Morales
Fernando Morales
19. 8. 2020 8:53 pm

Posso usar o mesmo bloco para ambos os sinais BUY/SELL? Quer dizer, ao não criar o bloco oposto, o SQ irá usá-lo para bying/vender?

tomas262
tomas262
Responder a  Fernando Morales
26. 8. 2020 10:52 pm

Você deve sempre definir o bloco oposto. O SQ o utilizará para comercializar "o outro lado". No entanto, pode ser a mesma regra

Fernando Morales
Fernando Morales
19. 8. 2020 8:56 pm

Como posso assinar um bloco personalizado para ser usado somente como Regra de Saída?

tomas262
tomas262
Responder a  Fernando Morales
26. 8. 2020 10:51 pm

Acho que a melhor maneira seria criar um modelo no AlgoWizard com regras de saída definidas com base no novo bloco personalizado

PaperoneJ12
8. 1. 2022 5:42 pm

É possível mudar a chave de bloco após a criação de um novo bloco personalizado? Em caso afirmativo, como?

Daniel Eagan
Daniel Eagan
16. 8. 2022 10:00 pm

Como posso salvar o conteúdo dentro de meus blocos personalizados e grupos aleatórios. Por algum motivo, todo o conteúdo desapareceu dentro de cada um de meus blocos personalizados. Os valores dos parâmetros permanecem, mas o conteúdo desapareceu. Isso provavelmente me levará de 12 a 15 horas de trabalho para colocar todos esses valores de volta. Qualquer ajuda seria muito apreciada. Obrigado.

Daniel Eagan
Daniel Eagan
Responder a  Daniel Eagan
16. 8. 2022 10:04 pm

Não importa, eu encontrei a carga da aba de backup. Graças a Deus!

Redlock55
22. 5. 2023 11:56 am

É impressão minha ou as imagens da tela estão borradas? Difíceis de ler.

Hodei Ostolaza bernedo
Hodei Ostolaza bernedo
5. 2. 2024 5:02 pm

Hello , i have a problem ,
I have created two custom blocks, I have managed to perform tests and works great but when I want to look at the code I get an error. It doesn’t allow me to see the code in any programming language.

error!one ore more block strategies uses isnt implemented in MQL code

tomas262
Admin
Responder a  Hodei Ostolaza bernedo
6. 2. 2024 5:38 pm

Did you also create TPL – template files for corresponding code? Let us know if any help needed