Propriedades das estratégias

Cada estratégia do pinheiro tem uma série de propriedades que determinam seu comportamento:

  1. Capital inicial
  2. Moeda de base
  3. Tamanho da ordem
  4. Pirâmide
  5. Comissão
  6. Verificar o preço para ordens limites
  7. Derrapagem
  8. Margem
  9. Recalcule
  10. Preenchimento de Ordem

Eles estão disponíveis nas configurações de estratégia, na aba Propriedades:

Cada um dos parâmetros especificados nas propriedades da estratégia pode ser alterado através da edição dos argumentos da função strategy() na chamada de função no Pine script correspondente:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick, process_orders_on_close, use_bar_magnifier)

Vamos dar uma olhada em cada parâmetro de entrada no menu Propriedades e seu parâmetro correspondente na linguagem Pine:

1 - Capital inicial (parâmetro: initial_capital) representa a quantidade de fundos inicialmente disponíveis para a estratégia de negociação, na moeda definida na Moeda de Base. Por padrão, este valor é igual a 1,000,000. Talvez seja necessário aumentar este valor para que as negociações ocorram em determinados símbolos.

2 - Moeda de base (parâmetro: moeda) especifica a moeda utilizada para os cálculos. Os resultados que aparecem na aba Testador de Estratégia (lucro, perda, drawdown, etc.) são expressos nesta moeda. As opções disponíveis são:

Default, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Se a opção Padrão for selecionada, a estratégia usará a moeda padrão para este símbolo e não haverá conversão de moeda.

3 - Tamanho da Ordem (parâmetros: default_qty_value, default_qty_type). Isto requer um valor e um modo de cálculo. Note que os valores calculados podem estar sujeitos a restrições devido às quantidades mínimas negociáveis para o símbolo:

  • Contratos (argumento: strategy.fixed) - a estratégia entrará com o número especificado de contratos/ações/ lotes.
  • Valor em moeda (argumento: strategy.cash) - a estratégia entrará com o valor especificado na moeda de base.
  • Porcentagem do capital (argumento: strategy.percent_of_equity) - o tamanho das posições será calculado como uma porcentagem do capital disponível quando a negociação for aberta.

4 - Pirâmide (parâmetro: pyramiding) especifica o número máximo de entradas sucessivas permitidas na mesma direção. Quando a pirâmide é desativada, a estratégia só pode abrir uma posição longa ou curta, mesmo que as condições de entrada sejam cumpridas. A pirâmide só afeta as entradas feitas usando a função strategy.entry(). Não tem efeito sobre as ordens criadas usando strategy.order().

5 - Comissão (parâmetros: commission_type), commission_value). É o valor pago em taxas de negociação para cada negociação. Deve ser fornecido um valor e um modo de cálculo. Note que a comissão é aplicada tanto nas entradas quanto nas saídas, e que quando uma porcentagem é usada, a comissão calculada irá variar de acordo com o valor da transação:

  • Porcentagem do valor transacionado (argumento: strategy.commission.percent) - impõe uma comissão sobre cada ordem igual à porcentagem especificada.
  • Moeda por contrato (argumento: strategy.commission.cash_per_contract) - impõe uma comissão sobre cada contrato.
  • Moeda por ordem (argumento: strategy.commission.cash_per_order) - impõe uma comissão sobre cada ordem.

6 - Verificar o preço para ordens limites (parâmetro: backtest_fill_limits_assumption) torna as condições de entrada em uma posição utilizando ordens limite mais rigorosas. Por padrão, este valor é 0, ou seja, as ordens limitadas são preenchidas com dados do histórico assim que o preço indicado na ordem é atingido. Se o parâmetro não for zero, então as ordens limite podem entrar numa posição dentro da barra somente se o preço de mercado tiver excedido o nível da ordem limite pelo número especificado de ticks.

7 - Derrapagem (parâmetro: slippage) especifica o valor em ticks a ser adicionado ao preço de atendimento das ordens de mercado ou stop. Ele pode ser usado para contabilizar o spread.

8- Margem para posições Long/Short (parâmetros: margin_long, margin_short) especifica a margem para cada negociação, ou seja, a porcentagem da posição que o trader deve cobrir. Por exemplo, se a Margem para posições Long for fixada em 25%, o trader tem que ter fundos suficientes para cobrir 25% da negociação aberta e pode potencialmente gastar até 400% de seu patrimônio em cada negociação. Se uma negociação foi aberta e começa a perder dinheiro na medida em que os fundos do trader não são suficientes para cobrir sua parte da negociação, ocorre uma chamada de Margem e liquida-se à força uma parte da posição original. Você pode saber mais sobre esses recursos e como eles são calculados nesse artigo da Central de Ajuda.

9 - As opções de Recálculo especificam com que frequência a estratégia deve ser recalculada. Por padrão, a estratégia é recalculada no fechamento de cada barra, mas usando as opções abaixo, ela também pode ser recalculada:

  • Após o preenchimento da ordem (parâmetro: calc_on_order_fills) - permite que a estratégia execute um cálculo adicional de ordem intra-bar imediatamente após o preenchimento de uma ordem. Esse cálculo adicional acontece tanto nas barras históricas quanto nas barras em tempo real.
  • Em Cada Tick (parâmetro: calc_on_every_tick). Por padrão, as estratégias só calculam no fechamento das barras em tempo real. Este parâmetro permite que a estratégia calcule em cada atualização das barras em tempo real, como um estudo faria. Note que os dados do tick são perdidos quando o gráfico é atualizado, portanto, as estratégias que utilizam esta opção serão repintadas. Este parâmetro não afeta o comportamento das estratégias em barras históricas. Observe também que as estratégias que utilizam este recurso não mostrarão resultados realistas nas barras históricas, pois elas não contêm dados do tick.

10 - Preenchimento das ordens:

  • Usar a lupa de barra (parâmetro: use_bar_magnifier) - direciona o Emulador de Corretora para usar preços mais precisos e em tempos gráficos menores durante o backtesting do histórico para obter resultados mais realistas. Leia mais sobre esse recurso na Central de Ajuda.
  • No fechamento da barra (parâmetro: process_orders_on_close). Se verdadeiro, a estratégia gera uma tentativa adicional de executar ordens depois que uma barra é fechada e os cálculos da estratégia são concluídos. Se as ordens forem ordens à mercado, o emulador da corretora as executará antes da abertura da próxima barra. Se as ordens forem dependentes de preço, elas só serão executadas se as condições de preço forem atendidas. Essa opção é útil se você quiser executar ordens ao mesmo tempo em que elas são criadas: por padrão, as ordens são criadas no fechamento da barra atual e executadas na abertura da barra seguinte; com essa configuração ativada, elas serão executadas no mesmo fechamento em que a ordem foi criada. Observe que entrar na posição no mesmo tick em que a ordem é criada pode ser enganoso, pois isso não seria possível de ser realizado em uma negociação real.
  • O uso do OHLC padrão força as estratégias executadas nos gráficos Heikin Ashi a preencher as ordens usando os preços reais do OHLC, para obter resultados mais realistas. Por padrão, os scripts de estratégia preenchem as ordens usando os preços do gráfico, independentemente do tipo de gráfico. Para gráficos Heikin Ashi, essa configuração impede o uso de preços sintéticos que podem não se alinhar à realidade. Por exemplo, essa estratégia que aplicamos ao gráfico diário NASDAQ:AAPL Heikin Ashi preencheu uma ordem em 2023-09-25 a um preço sintético de US$ 175,61. Entretanto, depois de ativar a opção "Usando OHLC padrão", a mesma ordem foi preenchida com o preço padrão do gráfico de US$ 174,20.