Pular para o conteúdo

Fragmentos

Nesta página, você vai conhecer os fragmentos disponíveis no ScriptBot: para que servem, como funcionam e de que forma podem facilitar suas automatizações. Entenda também como esses recursos aceleram o desenvolvimento de estratégias de forma prática e eficiente.

Os fragmentos (anteriormente chamados de “variáveis modeláveis”) são blocos de dados usados no ScriptBot para armazenar informações que podem ser aplicadas em qualquer parte da estratégia, como expressões lógicas, filtros, indicadores e eventos.

Eles ajudam a organizar melhor a construção das estratégias e facilitam o reaproveitamento de expressões. Além disso, os fragmentos resolvem uma limitação importante: a impossibilidade de realizar otimizações no Backtest do MetaTrader 5, causada pela forma como expressões e indicadores eram carregados. Essa restrição foi superada com a introdução dos fragmentos.

Durante a inicialização da estratégia, os fragmentos são automaticamente convertidos em valores fixos, já incorporados à lógica final. Isso melhora o desempenho e impede alterações durante a execução.

Abaixo estão os principais tipos de fragmentos disponíveis:

  • INTEGER: Números inteiros
  • DOUBLE: Números decimais (ponto flutuante)
  • STRING: Textos, expressões ou qualquer outro valor
  • TIMEFRAME: Períodos gráficos (como M1, H1, etc)
Fragmentos

Para utilizar um fragmento é simples, basta utilizar o nome do fragmento na sua expressão lógica, como por exemplo:

CLOSE[0] > CLOSE[1] && STR0

Se, por exemplo, o fragmento STR0 tiver o valor ALL_PROFIT_OPEN >= 50, a expressão lógica será automaticamente convertida, durante a inicialização, para:

CLOSE[0] > CLOSE[1] && ALL_PROFIT_OPEN >= 50

Os fragmentos podem ser utilizados em parâmetros de indicadores, como mostrado na imagem abaixo:

Fragmentos

Podemos observar o uso dos fragmentos TF0, INT0 e INT1. Esses fragmentos serão automaticamente convertidos durante a inicialização, o que permite realizar otimizações de estratégias usando o Backtest do MetaTrader 5 ou simplesmente facilitar a manutenção da estratégia.

A possibilidade de utilizar parâmetros nos fragmentos do tipo STRING os torna ainda mais versáteis, permitindo que atuem como verdadeiras funções de conversão. Isso possibilita modificar o comportamento do fragmento de acordo com os parâmetros fornecidos, tornando as expressões mais flexíveis e dinâmicas.

Vamos definir o fragmento STR0 com o seguinte valor: ALL_PROFIT_OPEN >= {0} && {1}.
Os caracteres { e } delimitam os parâmetros. Dentro das chaves, você deve informar o índice do parâmetro, começando em zero. O índice {0} representa o primeiro parâmetro, {1} o segundo, e assim por diante.

Fragmentos

Abaixo está um exemplo de uso do fragmento sem parâmetros:

CLOSE[0] > CLOSE[1] && STR0

O fragmento STR0 será automaticamente convertido para CLOSE[0] > CLOSE[1] && ALL_PROFIT_OPEN >= {0} && {1}, o que causará um erro na compilação da expressão lógica devido à ausência dos parâmetros necessários. Esse erro acontece porque, na definição do fragmento, os parâmetros {0} e {1} foram declarados como obrigatórios.

Abaixo está um exemplo de uso do fragmento com parâmetros:

CLOSE[0] > CLOSE[1] && STR0[50, Print["My age is: ", INT0]]

O fragmento STR0 será convertido para CLOSE[0] > CLOSE[1] && ALL_PROFIT_OPEN >= 50 && Print["My age is: ", INT0]. Nenhum erro ocorrerá, pois todos os parâmetros foram fornecidos corretamente.

De modo geral, o uso de parâmetros permite criar expressões mais complexas e flexíveis. Além disso, possibilita modificar o comportamento da expressão de forma dinâmica, conforme os valores passados.