Estratégia dinâmica de suporte e resistência com base em dados históricos


Data de criação: 2023-11-28 17:00:13 última modificação: 2023-11-28 17:04:16
cópia: 4 Cliques: 648
1
focar em
1619
Seguidores

Estratégia dinâmica de suporte e resistência com base em dados históricos

Visão geral

Esta estratégia baseia-se em cálculos dinâmicos de altos, baixos e preços de fechamento históricos, com suporte e resistência, e com isso gera sinais de negociação. Esta estratégia é adequada para posições de linha média e longa, que podem aproveitar efetivamente a resistência de suporte no mercado para lucrar.

Princípio da estratégia

  1. Calcule o valor médio dos preços mais altos, mais baixos e mais baixos do último ciclo, obtendo o ponto de referência PP.

  2. Calcule 3 linhas de apoio: S1 = 2PP - preço máximo; S2 = PP - (R1-S1); S3 = preço mínimo - 2(Preço máximo - PP)

  3. Calcule 3 linhas de resistência: R1 = 2PP - preço mínimo; R2 = PP + (R1-S1); R3 = preço máximo + 2(PP - Preço mínimo)

  4. Faça mais quando o preço atravessa a resistência; faça menos quando o preço atravessa a linha de apoio.

Análise de vantagens

  1. A dinâmica da resistência de suporte baseada em dados históricos permite capturar a estrutura do mercado em tempo real.

  2. A configuração de resistência de suporte em vários níveis permite a otimização do gerenciamento de risco.

  3. Sinais de negociação simples e intuitivos e o modo de parar os prejuízos.

Análise de Riscos

  1. Em situações de alta volatilidade, os preços de referência fornecidos pelos dados históricos podem não ser válidos.

  2. A troca entre posições multi-vogais requer o custo de transação.

  3. É preciso garantir a qualidade dos dados e evitar erros de cálculo.

Direção de otimização

  1. Pode-se considerar a introdução de mais dados históricos como referências, como a linha de 100 dias, etc.

  2. Optimizar o gerenciamento de posições, como ajustando a proporção de posições com base na volatilidade.

  3. Aumentar as estratégias de stop loss, como o rastreamento de stop loss ou o gerenciamento de stop loss.

Resumir

Esta estratégia é baseada no conceito de resistência de suporte histórico e fornece preços de referência em vários níveis. A estratégia é simples e direta, adequada para manter posições médias e longas e lucrativas.

Código-fonte da estratégia
/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// 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.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )