Estrategia de negociación con retroceso de medias móviles dinámicas


Fecha de creación: 2024-02-27 14:38:45 Última modificación: 2024-02-27 14:38:45
Copiar: 0 Número de Visitas: 584
1
Seguir
1617
Seguidores

Estrategia de negociación con retroceso de medias móviles dinámicas

Descripción general

Esta estrategia utiliza un sistema de doble línea de paridad para buscar oportunidades potenciales de ruptura en una acción o moneda digital en particular. Su principio básico es comprar acciones o monedas digitales cuando la línea de paridad corta rebota por debajo de la línea de paridad larga.

Principio de estrategia

La estrategia utiliza una media móvil simple (SMA) de dos períodos diferentes como señal de negociación. El primer ciclo SMA es más largo y representa la dirección de la tendencia general. El segundo ciclo SMA es más corto y se utiliza para capturar movimientos de precios a corto plazo.

Cuando el SMA corto se desprende del SMA largo por debajo, representa que el precio está en una tendencia ascendente en general, por lo que la estrategia abre una posición de más cabeza. Cuando el precio baja y se vuelve a probar el SMA largo, indica el final del pullback corto, en este momento la estrategia considera el stop loss o el beneficio para cerrar la posición.

Además, la estrategia también establece condiciones de sobreventa y sobreventa para evitar el comercio en situaciones extremas. La posición se abrirá solo si se cumplen al mismo tiempo las condiciones de doble cruce de línea y valoración razonable.

Ventajas estratégicas

  • Utiliza un sistema de doble línea para identificar tendencias medianas y cortas
  • Combinando las ventajas del seguimiento de tendencias y la negociación de reajustes
  • Las condiciones de venta excesiva y de compra excesiva de las plataformas integradas reducen las transacciones innecesarias

Análisis de riesgos

  • El tiempo de finalización del ajuste es difícil de determinar, y puede predeterminar la pérdida por error.
  • El cambio de tendencia no puede detenerse rápidamente y puede acarrear grandes pérdidas
  • La configuración incorrecta de los parámetros puede causar transacciones demasiado frecuentes o conservadoras

Optimización de la estrategia

La estrategia tiene espacio para ser optimizada aún más:

  1. El uso de herramientas más complejas para determinar fluctuaciones y tendencias de precios, como las bandas de Brin, el indicador KD, etc.
  2. La fecha de finalización de la reorientación, junto con otros factores, como cambios en el volumen de transacciones, la volatilidad, etc.
  3. El cambio de tamaño de las posiciones para maximizar las ganancias
  4. Optimización de la lógica de stop loss, utilizando KAMA, la nube Ichimoku y una barra de tiempo más baja para determinar el tiempo de stop loss

Resumir

Esta estrategia integra las ventajas del seguimiento de tendencias y el ajuste de operaciones, utilizando un sistema de doble línea para juzgar la aparición de oportunidades. Al mismo tiempo, la construcción de ciertas condiciones de sobrecompra y sobreventa evita la apertura de posiciones innecesarias. Esta es una estrategia de comercio cuantitativa muy práctica que vale la pena investigar y optimizar.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)