Descenso de tendencia - Estrategia de sombra larga

El autor:¿ Qué pasa?, Fecha: 2023-11-15 16:43:17
Las etiquetas:

img

Esta estrategia juzga la dirección de la tendencia actual calculando la relación de longitud de sombra alcista / bajista e identifica la tendencia con el indicador ATR.

Estrategia lógica

La estrategia juzga principalmente la tendencia actual mediante el cálculo de la relación de sombra alcista/bajista.

La lógica específica es:

  1. Calcular sombra bajista: cerrado - bajo
  2. Calcular la sombra alcista: alto abierto
  3. Tome el máximo de sombra bajista y alcista como longitud de sombra
  4. Calcular la longitud del cuerpo de la vela: alto - bajo
  5. Calcular la relación entre la sombra y la longitud del cuerpo
  6. Si la relación es > 0,5 y baja > alcista, juzgar tendencia a la baja y posición larga
  7. Si la relación es > 0,5 y alcista > bajista, juzgar tendencia alcista y posición corta
  8. Validación de la ruptura con longitud de la vela > 0,75 * ATR
  9. Establecer el stop loss y el take profit después de la entrada, con una relación de 2:1

Lo anterior es la lógica básica de negociación, la identificación de puntos de ruptura inversa con la detección de tendencias y la optimización de las ganancias con stop loss / take profit.

Ventajas

  1. La proporción de sombras juzga con precisión la tendencia
  2. ATR filtra las señales falsas de fuga
  3. Stop loss y take profit gestiona el riesgo
  4. La relación riesgo-recompensación de 2:1 cumple con el estándar de negociación cuantitativa
  5. Apto para operaciones a corto plazo con acciones de alta volatilidad
  6. Lógica simple y clara, fácil de entender

Los riesgos

  1. La volatilidad de los precios puede afectar al stop loss y aumentar la pérdida
  2. El rendimiento depende en gran medida del ajuste de parámetros
  3. La inversión de tendencia puede conducir a pérdidas
  4. La ampliación del stop loss/take profit puede aumentar la probabilidad de pérdida
  5. Una fuga fallida puede llevar a grandes pérdidas.

Los riesgos se pueden gestionar mediante un stop loss razonable, la optimización de parámetros y la salida oportuna de la posición.

Mejoramiento

La estrategia se puede optimizar de las siguientes maneras:

  1. Optimizar el parámetro de proporción de sombras para obtener el mejor valor
  2. Optimizar el parámetro ATR para la mejor longitud de la vela
  3. Optimizar los coeficientes stop loss/take profit para obtener una relación riesgo-recompensa óptima
  4. Añadir el tamaño de la posición como el aumento gradual de la posición
  5. Añadir pérdidas de parada para proteger las ganancias
  6. Añadir otros indicadores a las señales de filtro
  7. Optimizar el período de tiempo de backtest y probar diferentes etapas del mercado

Con pruebas y optimización multifacéticas, el rendimiento de la estrategia se puede maximizar.

En general, esta estrategia se beneficia de las oscilaciones de precios a corto plazo a través de la identificación de tendencias y la gestión de riesgos.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)



Más.