Estratégia de teste de retorno do ponto de pivô dinâmico

Autora:ChaoZhang, Data: 23 de dezembro de 2023 - 29 de dezembro de 2023
Tags:

img

Resumo

Esta estratégia faz posições longas ou curtas com base nos níveis de suporte e resistência calculados a partir dos preços mais altos, mais baixos e de fechamento do dia de negociação anterior.

Princípio da estratégia

  1. Calcular o nível de suporte S1, o nível de resistência R1 e o ponto de pivô vPP do dia em curso com base no preço mais alto xHigh, o preço mais baixo xLow e o preço de encerramento xClose do dia de negociação anterior.

    vPP = (xHigh+xLow+xClose) / 3

    vR1 = vPP+(vPP-xLow)

    vS1 = vPP-(xHigh - vPP)

  2. Determine se o preço atravessa vR1 ou vS1. vá longo se o preço atravessa vR1 e vá curto se o preço atravessa abaixo de vS1.

    pos = iff(close > vR1, 1, If ((close < vS1, -1, nz(pos[1], 0)))

  3. se o reverse trading for habilitado com reverse=true, o sinal de negociação é invertido.

  4. Vai longo quando vR1 está quebrado e vai curto quando vS1 está quebrado de acordo com o sinal possig.

Vantagens da estratégia

  1. A estratégia utiliza níveis dinâmicos de suporte e resistência para capturar movimentos de tendência.
  2. Os níveis de suporte e resistência são atualizados diariamente, tornando-os dinâmicos.
  3. Tanto as negociações longas como as curtas podem ser configuradas para se adequarem a diferentes ambientes de mercado.
  4. A lógica da estratégia é simples e limpa para fácil compreensão e implementação.
  5. Visualizações dos níveis de suporte e resistência permitem a detecção intuitiva de mudanças de tendência.

Análise de riscos

  1. Os sinais de compra e venda desnecessários podem ser desencadeados se o mercado estiver em variação.
  2. Se ocorrerem movimentos de tendência extremos, o suporte/resistência quebrado pode estender-se continuamente, resultando em perdas.
  3. O ponto de pivô e o cálculo de suporte/resistência são simples e necessitam de uma otimização adicional.

Gestão de riscos:

  1. Ajustar o tamanho das posições para limitar as perdas por transação única.
  2. Estabelecer um stop loss para evitar que as perdas excedam o montante máximo tolerável.
  3. Adicionar filtros baseados em outros indicadores para evitar a troca excessiva em mercados variados.

Oportunidades de melhoria

  1. Otimizar o cálculo do suporte e da resistência para melhorar a previsibilidade.
  2. Incorporar indicadores de tendência e impulso para evitar transações desnecessárias.
  3. Adicionar estratégia de stop loss para controlar perdas únicas e máximas.
  4. Utilize o aprendizado de máquina para otimizar dinamicamente os níveis de suporte/resistência.

Resumo

Esta estratégia faz negociações longas ou curtas baseadas em níveis de suporte e resistência dinâmicos de quebra de preços. A lógica é simples de entender e implementar, ao mesmo tempo em que é capaz de identificar efetivamente inversões de tendência. No entanto, existem riscos e são necessárias melhorias adicionais com indicadores adicionais para gerar sinais de negociação mais confiáveis.


//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/06/2018
// This Pivot points is calculated on the current day.
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Dynamic Pivot Point Backtest", shorttitle="Dynamic Pivot Point", overlay = true)
reverse = input(false, title="Trade reverse")
xHigh  = request.security(syminfo.tickerid,"D", high[1])
xLow   = request.security(syminfo.tickerid,"D", low[1])
xClose = request.security(syminfo.tickerid,"D", close[1])
vPP = (xHigh+xLow+xClose) / 3
vR1 = vPP+(vPP-xLow)
vS1 = vPP-(xHigh - vPP)
pos = iff(close > vR1, 1,
       iff(close < vS1, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(vS1, color=#ff0000, title="S1", style = circles, linewidth = 1)
plot(vR1, color=#009600, title="R1", style = circles, linewidth = 1)

Mais.