Estratégia de tendência de ruptura de resistência de suporte dinâmico

Autora:ChaoZhang, Data: 2023-12-26 15:21:45
Tags:

img

Resumo

Esta estratégia julga a direção da tendência com base no rompimento de suporte/resistência de longo prazo e entra na posição quando o suporte/resistência é quebrado. Ele usa zigzag para definir picos e vales, confirmando picos/vales com 2 barras, então há lag de 2 barras. Ele calcula a diferença entre SMA de picos e vales em um período definido (21 por padrão) como nível SR alternativo. Esta idéia é do indicador Nebula-Advanced-Dynamic-Support-Resistance da synapticEx. Ele fica longo quando a resistência é quebrada e fica curto quando o suporte é quebrado.

Estratégia lógica

A estratégia utiliza a seguinte lógica para determinar tendências e sinais de negociação:

  1. Confirmar picos/vales em ziguezague: quando nos últimos 5 bares, a barra 5 pico < barra 4 pico < barra 3 pico > barra 2 pico > barra 1 pico, a barra 3 vale é confirmada como o vale mais baixo.

  2. Calcular o número de picos hn e de vales ln num período definido (padrão 21). Se hn>0 e ln>0, calcular o nível médio dos picos hsum/hn e o nível médio dos vales lsum/ln. A diferença r é utilizada como nível SR alternativo.

  3. Comparar o preço de fechamento com o valor dinâmico de resistência e o valor de suporte para determinar a direção da tendência.

  4. Vá longo quando ocorrer uma ruptura válida de resistência.

Análise das vantagens

As vantagens desta estratégia:

  1. Usando zigzag para confirmar SR fornece precisão, evitando fuga falsa.

  2. A SR baseada em estatísticas a longo prazo é mais valiosa para reduzir o risco.

  3. O SR alternativo melhora a validade dos sinais de ruptura.

  4. A lógica é simples e fácil de entender, adequada para negociação quântica.

  5. Período estatístico adaptável a diferentes ciclos e produtos.

Análise de riscos

Riscos desta estratégia:

  1. 2 barras de atraso com zigzag pode perder melhor ponto de entrada.

  2. A SR prevista é apenas para referência, uma fuga anormal ainda pode acontecer.

  3. Período estatístico inadequado leva a SR inválido.

  4. O recuo do preço após a ruptura pode desencadear o stop loss.

  5. A violenta oscilação dos preços após a entrada traz perdas maiores.

As soluções são:

  1. Encurtar adequadamente o período estatístico para reduzir o atraso.

  2. Combine mais fatores para prever SR.

  3. Estabilidade de ensaio de diferentes períodos.

  4. Estabelecer um nível razoável de stop loss.

  5. Utilize o dimensionamento de posição para limitar perdas individuais.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Usar aprendizagem de máquina para prever SR, melhorando a taxa de sucesso dos sinais de ruptura.

  2. Combine o volume CONF para confirmar a validade dos sinais de ruptura.

  3. Classificar as estatísticas da SR com base em diferentes ciclos, melhorando a eficiência da SR.

  4. Adicionar posição no lucro, definir parada de trilha para equilibrar lucro/perda.

  5. Combinar a MA para determinar a tendência, evitando o longo/curto sem tendência.

Conclusão

Em conclusão, esta é uma estratégia robusta de seguimento de tendências. Ele tem alta precisão na determinação da direção da tendência e controle de risco adequado. Mas o atraso torna impossível lucrar com cada sinal longo / curto. Portanto, ele se encaixa em traders quant experientes para combinar com suas próprias estratégias. Ao otimizar períodos estatísticos e integrar outros indicadores ou modelos, ele pode se tornar uma estratégia eficiente de seguimento de tendências.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SR TREND STRATEGY", shorttitle="SR TREND", overlay=true, calc_on_order_fills=true)
//based on by synapticEx SR indicator https://www.tradingview.com/script/O0F675Kv-Nebula-Advanced-Dynamic-Support-Resistance/
length = input(title="SR lookbak length", type=input.integer, defval=21)
h = bar_index>5 and high[5]<high[4] and high[4]<high[3] and high[3]>high[2] and high[2]>high[1] ? 1 : 0
l = bar_index>5 and low[5]>low[4]   and low[4]>low[3]   and low[3]<low[2]   and low[2]<low[1]   ? 1 : 0
ln = sum(l, length)
hn = sum(h, length)
hval =  h>0 ? high[3] : 0
lval =  l>0 ? low[3]  : 0
lsum = sum(lval, length)
hsum = sum(hval, length)
r = ln>0 and hn>0 ? abs((hsum/hn) - (lsum/ln)): 0
float lvalc = na
float lvalr = na
float hvalc = na
float hvalr = na
lvalc := lval and r>0 ? lval   : lvalc[1]
lvalr := lval and r>0 ? lval+r : lvalr[1]
hvalc := hval and r>0 ? hval   : hvalc[1]
hvalr := hval and r>0 ? hval-r : hvalr[1]
int trend=0
trend:=close > lvalr and close > hvalr ? 1 : close < lvalr and close < hvalr ? -1 : trend[1]
strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and close>hvalc)
strategy.entry("Short", strategy.short, when=trend==-1 and close<lvalc)
int long=0
int short=0
long:= trend==1 and close>hvalc ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and close<lvalc ? 1 : trend==1 ? -1 : short[1]
barcolor(long>0? color.green : short>0? color.red : trend>0? color.white: trend<0 ? color.orange : color.blue)

Mais.