Documentação
Aplicações
Última atualização em 15. 4. 2020 por Mark Fric
Blocos personalizados
Conteúdo da página
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:
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:
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:
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
topo, muito bom idear.
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?
Você deve sempre definir o bloco oposto. O SQ o utilizará para comercializar "o outro lado". No entanto, pode ser a mesma regra
Como posso assinar um bloco personalizado para ser usado somente como Regra de Saída?
Acho que a melhor maneira seria criar um modelo no AlgoWizard com regras de saída definidas com base no novo bloco personalizado
É possível mudar a chave de bloco após a criação de um novo bloco personalizado? Em caso afirmativo, como?
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.
Não importa, eu encontrei a carga da aba de backup. Graças a Deus!
É impressão minha ou as imagens da tela estão borradas? Difíceis de ler.
Olá, estou com um problema,
Criei dois blocos personalizados, consegui realizar testes e funciona muito bem, mas quando quero ver o código, recebo um erro. Ele não permite que eu veja o código em nenhuma linguagem de programação.
erro! uma ou mais estratégias de bloco usadas não estão implementadas no código MQL
Você também criou TPL - arquivos de modelo para o código correspondente? Informe-nos se precisar de ajuda
Como criamos modelos para os blocos personalizados do AlgoWizard?
Crie um grupo aleatório e adicione seus blocos a ele
Configure uma condição aleatória e defina o parâmetro Random group (Grupo aleatório) como o seu grupo de blocos
Espero que isso ajude
Olá. Como faço para mover o bloco personalizado para o grupo aleatório?