Estratégia de inversão de impulso baseada em vários prazos

Autora:ChaoZhang, Data: 2024-02-27 14:27:49
Tags:

img

Resumo

Esta estratégia identifica oportunidades de negociação através do cálculo dos rácios corpo-candelário/candelário e da combinação de indicadores RSI para detectar condições de mercado de sobrecompra/supervenda.

Estratégia lógica

A lógica central desta estratégia baseia-se no seguinte:

  1. Calcule a percentagem de corpo/candelário: Calculando os preços de abertura, fechamento, alta e baixa, derive a percentagem ocupada pelo corpo e as mechas da vela.

  2. Calcule a porcentagem de mudança da força da vela: Calcule a magnitude do movimento interno do preço de cada vela para determinar a força da vela.

  3. Combine com o RSI para identificar condições de sobrecompra / sobrevenda: defina linhas de limiar de sobrecompra e sobrevenda para o RSI. RSI acima da linha de sobrecompra significa estado de sobrecompra e vice-versa para sobrevenda.

  4. Determine os sinais de reversão: Quando a porcentagem de mecha < 20% e a força da vela > 2 x a força média, juntamente com o fechamento da vela anterior maior que o fechamento da vela atual, ele sinaliza a condição curta. O oposto indica a condição longa.

  5. Definir stop loss e take profit: definir stop loss baseado em percentagem fixa e tomar níveis de lucro separadamente para transações longas e curtas.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Identificação eficaz da tendência e das inversões utilizando proporções corpo de vela/wick. Detecta bem a dinâmica de preços e pontos de virada.

  2. Maior precisão dos sinais de reversão combinando mudança de intensidade da vela e RSI. O RSI é ajustável, proporcionando maior capacidade de otimização.

  3. Configuração razoável de stop loss/take profit para capitalizar as oportunidades de curto prazo, reduzindo simultaneamente a exposição ao risco comercial.

  4. Flexível ajuste dos parâmetros para otimização em diferentes produtos e prazos.

Análise de riscos

Alguns riscos da estratégia:

  1. Potenciais sinais falsos durante fortes rupturas de tendência. Pode ser reduzido através da otimização de períodos de comparação de velas e parâmetros do RSI.

  2. A probabilidade de reversões fracassadas não pode ser totalmente eliminada. Estar longo em tendência de queda e vice-versa induz perdas. As perdas de parada devem ser ajustadas em conformidade para minimizar os danos.

  3. O desempenho depende do produto e do período de tempo.

Oportunidades de melhoria

A estratégia pode ser otimizada das seguintes formas:

  1. Períodos de ajuste fino considerados na identificação de sobrecompra/supervenda para determinar as combinações de parâmetros ideais.

  2. Otimizar os limiares de RSI de sobrecompra/supervenda com base nas especificidades do produto.

  3. Teste os rácios stop loss/take profit para derivar um plano ideal de gestão de riscos.

  4. Classificar os produtos de acordo com a volatilidade para um ajuste de parâmetros mais direcionado.

  5. Os filtros adicionais baseados em outros indicadores podem melhorar a robustez.

Conclusão

A estratégia é altamente prática em geral para detectar reversões, entendendo as informações do candelabro. Como um sistema de negociação de curto prazo típico, tem uma capacidade de otimização considerável em produtos e ambientes para rastrear tendências de médio prazo.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("mecha larga study",overlay = true,  max_bars_back = 600)
//Porcentaje Mecha cuerpo
bodyPercent = math.abs(open - close) / (high - low) * 100
wickPercent = 100 - bodyPercent

plot(bodyPercent, "Porcentaje del cuerpo", color.rgb(163, 76, 175))
plot(wickPercent, "Porcentaje de la mecha", color.red)

VelaDeFuerza =  math.abs(((high[0] - low[0])*100)/high)//PORCENTAJE DE VARIACION DE UNA VELA
plot(VelaDeFuerza, color = color.purple)

Promedio = ((VelaDeFuerza[0] + VelaDeFuerza[1] + VelaDeFuerza[2] + VelaDeFuerza[3] + VelaDeFuerza[4]  + VelaDeFuerza[5] + VelaDeFuerza[6] + VelaDeFuerza[7] + VelaDeFuerza[8] + VelaDeFuerza[9] + VelaDeFuerza[10] + VelaDeFuerza[11] + VelaDeFuerza[12] + VelaDeFuerza[13]  + VelaDeFuerza[14] ) / 15)
plot(Promedio, color = color.yellow)


// rsi 
per_Rsi = input.int(14, "Periodo RSI",minval= 11, maxval=20) //inicializo el rsi en 14 periodos pero doy la posibilidad al usuario de cambiarlo
rsi_Sc = input.int(75,"Sobre Compra",minval=68,maxval=80) //ENTRADA DE SOBRE COMPRA DE RSI
rsi_Sv = input.int(25,"Sobre Venta",minval=20,maxval=33) //ENTRADA DE SOBRE VENTA DE RSI
rsi= ta.rsi(close,per_Rsi)//guardo el rsi con los paramentros anteriores en una variable

//logica
MayorPromedio =   Promedio + 0.800
plot(MayorPromedio, color = color.green)

Venta =   bodyPercent > 80   and VelaDeFuerza > Promedio * 2  and close < close[1]
Compra =   bodyPercent > 80  and VelaDeFuerza > Promedio * 2 and close > close[1]


precioVenta = Venta? close : na
precioCompra = Compra? close : na

tp1 = 0.00
sl  = 0.00
tp1 := 0.003
sl := 0.010

TP1short = precioVenta - (precioVenta * tp1)
Slshort = precioVenta + (precioVenta * sl)

TP1long = precioCompra + (precioCompra * tp1)
SLlong = precioCompra - (precioCompra * sl)


name1 = "tp1"
name2 = "tp2"
name3= "SL"




if ( precioVenta ) 
    strategy.entry("short", strategy.short , comment = "Sell  SL: " + str.tostring(Slshort, "0.000")  + " TP1: " + str.tostring(TP1short,"0.000") ) 
    strategy.exit("exit" , "short", stop = Slshort , limit = TP1short ,qty_percent = 100 )  
if ( precioCompra ) 
    strategy.entry("long", strategy.long , comment = "Buy   SL: " + str.tostring(SLlong, "0.000")  + " TP1: " + str.tostring(TP1long,"0.000") )
    strategy.exit("exit" , "long", stop = SLlong  , limit = TP1long ,qty_percent = 100 )

Mais.