Estrategia de reingreso dinámico de compra exclusiva

El autor:¿ Qué pasa?, Fecha: 2023-12-19 13:56:55
Las etiquetas:

img

Resumen general

Esta estrategia es un sistema de negociación de compra exclusiva que genera señales de compra basadas en cruces de promedios móviles y el Índice Semanal de Canales de Productos Básicos (CCI) o el Índice Direccional Semanal de Promedio (ADX).

La estrategia también permite una reentrada dinámica, lo que significa que puede abrir nuevas posiciones largas si el precio supera las tres medias móviles después de una salida.

Principio de la estrategia

El script define las condiciones para generar señales de compra.

  • La media móvil rápida cruza por encima de la media móvil lenta
  • El usuario puede elegir filtrar las operaciones utilizando CCI semanal o ADX semanal

Reingreso dinámico:Si no hay una posición larga activa y el precio está por encima de las tres medias móviles, se abre una nueva posición larga.

Condición de salida:Si el precio de cierre cae por debajo de la tercera media móvil, el guión cierra la posición larga.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. El uso de múltiples indicadores técnicos para filtrar las señales reduce las señales falsas
  2. El mecanismo de reingreso dinámico maximiza la captura de tendencias
  3. El hecho de ser sólo largo evita los riesgos de cortocircuito

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Hay un cierto riesgo de golpes.
  2. Los tiempos de espera largos pueden ser demasiado largos, requiriendo paradas
  3. Los parámetros mal configurados pueden causar operaciones demasiado frecuentes.

Soluciones:

  1. Utilice mejores combinaciones de parámetros e indicadores para filtrar
  2. Establecer pérdidas de parada razonables
  3. Ajustar los parámetros para garantizar la estabilidad

Direcciones de optimización

Esta estrategia se puede optimizar mediante:

  1. Prueba de más combinaciones de indicadores técnicos para encontrar un mejor momento de entrada
  2. Optimización de parámetros para encontrar las mejores combinaciones de parámetros
  3. Mecanismos de stop loss para controlar pérdidas individuales
  4. Añadir dimensionamiento de posiciones a las posiciones de incremento/disminución basadas en las condiciones del mercado

Resumen de las actividades

Esta estrategia dinámica de reingreso de compra única integra múltiples indicadores técnicos para determinar el momento de entrada y adopta un diseño dinámico de reingreso para rastrear las tendencias en tiempo real.


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

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


Más.