Estrategia de doble impulso

El autor:¿ Qué pasa?, Fecha: 2023-09-28 15:03:57
Las etiquetas:

Resumen general

La estrategia de doble impulso utiliza indicadores de impulso rápidos y lentos para generar señales de entrada y salida. Es una estrategia de reacción rápida adecuada para instrumentos de tendencia en los marcos de tiempo diarios y de 4 horas.

La estrategia permite configurar el modo largo / corto o solo largo. También permite habilitar la stop loss fija o ignorarla para que la estrategia actúe únicamente en las señales de entrada y salida.

Estrategia lógica

La estrategia utiliza un impulso de período rápido (default 5 días) y un impulso de período lento (default 10 días).

Cuando el momento lento y el momento rápido están por encima de 0, se genera una señal de entrada larga.

Cuando el impulso lento o rápido cae por debajo de 0, se genera una señal de salida.

Del mismo modo, cuando el momento lento y el momento rápido están por debajo de 0, se genera una señal de entrada corta.

Por lo tanto, la estrategia captura los cambios de tendencia mediante el cruce de dos indicadores de impulso con períodos diferentes.

Análisis de ventajas

  • El uso de doble impulso proporciona una detección más precisa del cambio de tendencia y menos señales falsas.

  • El impulso del período rápido reacciona rápidamente a los cambios del mercado, mientras que el período lento filtra el ruido.

  • Los modos largos/cortos flexibles o únicamente largos se adaptan a las diferentes preferencias comerciales.

  • El riesgo de pérdida de detención opcional se controla.

  • La naturaleza de reacción rápida lo hace adecuado para el comercio de tendencias en plazos diarios o más largos para ganancias excesivas.

Análisis de riesgos

  • El doble impulso se basa en valores del indicador por encima/por debajo de 0, que tiene cierto retraso.

  • La estrategia es más dependiente de la tendencia y puede tener un rendimiento inferior en los mercados de rango con más frenos.

  • No utilizar el stop loss supone un riesgo de grandes pérdidas.

  • La elección errónea de símbolos o plazos puede llevar a malos resultados.

Para controlar los riesgos, ajuste los períodos de impulso, utilice un porcentaje de pérdida de parada fijo razonable, seleccione símbolos de tendencia fuerte y ejecute en plazos diarios o más altos.

Oportunidades de mejora

La estrategia puede mejorarse de varias maneras:

  1. Agregue filtros como MACD o RSI para evitar operaciones incorrectas en los puntos de inflexión de la tendencia.

  2. Se añadirán pérdidas de parada adaptativas para ajustar la distancia de parada en función de la volatilidad del mercado.

  3. Optimizar los parámetros de impulso para diferentes símbolos a través de la optimización paso a paso, el análisis de marcha hacia adelante, etc.

  4. Añadir reglas de tamaño de posición para ajustar el nuevo tamaño de posición basado en el rendimiento pasado.

  5. Diferenciar las condiciones de mercado largas y cortas para entradas y salidas asimétricas.

Conclusión

La estrategia de doble impulso captura la dirección de la tendencia utilizando cruce de impulso rápido y lento. Utilizando indicadores simples para detectar cambios de tendencia, es adecuado para conducir tendencias intradiarias o de varios días y generar retornos excedentes.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
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/
// © QuantCT

//@version=4
strategy("Momentum Strategy Idea",
         shorttitle="Momentum", 
         overlay=false,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)

// ____ Inputs

fast_period = input(title="Fast Period", defval=5) 
slow_period = input(title="Slow Period", defval=10)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

mom_fast = mom(close, fast_period)
mom_slow = mom(close, slow_period)
    
enter_long = (mom_slow > 0 and mom_fast > 0)
exit_long = (mom_slow < 0 or mom_fast < 0)
enter_short = (mom_slow < 0 and mom_fast < 0)
exit_short = (mom_slow > 0 or mom_fast > 0)

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 
   
// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)
    
// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

mom_fast_plot = plot(mom_fast, color=colors)
mom_slow_plot = plot(mom_slow, color=colors)
fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)








Más.