Estrategia de ruptura de soporte y resistencia de la media móvil

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

Resumen general

Esta estrategia identifica los niveles clave de soporte y resistencia basados en promedios móviles, y toma operaciones cuando el precio rompe estos niveles.

Estrategia lógica

La estrategia utiliza una media móvil simple (SMA) con un período de 50 para identificar zonas de soporte y resistencia.

  • Cuando el precio de cierre cruza por encima de la SMA desde abajo, el máximo máximo de los últimos 50 períodos se toma como resistencia R
  • Cuando el precio de cierre cruza por debajo de la SMA desde arriba, el mínimo más bajo de los últimos 50 períodos se toma como soporte S
  • Ir largo cuando el cierre excede la resistencia R
  • Ir corto cuando el apoyo de las rupturas de cerca S

En otras palabras, la estrategia utiliza la SMA de 50 períodos para dividir las zonas de precios, y toma operaciones cuando el precio rompe con estas zonas.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de medias móviles para identificar soporte/resistencia es razonablemente confiable y puede filtrar eficazmente las fallas.
  2. Un período de 50 años no es ni demasiado largo ni demasiado corto y puede detectar niveles significativos a medio plazo.
  3. Utiliza sólo un único indicador SMA, lo que resulta en una baja sobrecarga del sistema y una fácil implementación.
  4. Las estrategias de breakout son simples y efectivas.
  5. Hay pocos parámetros ajustables, evitando la optimización excesiva.

Análisis de riesgos

La estrategia también presenta los siguientes riesgos:

  1. Todavía existe cierto riesgo de fallas falsas que los SMA no pueden filtrar completamente.
  2. El período fijo no puede adaptarse a los diferentes ciclos del mercado, lo que podría perder oportunidades a corto plazo.
  3. El valor de las pérdidas se calcula en función de las pérdidas que se hayan producido durante el período de referencia.
  4. Para las operaciones a más largo plazo, es necesario controlar la dirección de la tendencia más amplia.

Estos riesgos se pueden abordar mediante optimizaciones como ajustar el período de SMA, agregar indicadores de filtro de tendencia, etc. La gestión adecuada de la stop loss también es muy importante.

Direcciones de optimización

Algunas formas en que se puede mejorar la estrategia:

  1. Agregue indicadores como el MACD para ayudar a medir la dirección de la tendencia y el impulso.
  2. Implementar la optimización adaptativa de los períodos de admisión para el ajuste dinámico.
  3. Mejorar la detección de rupturas, por ejemplo, requiriendo la ruptura simultánea de las bandas de Bollinger y de las bandas de MA.
  4. Incorporar mecanismos de stop loss para controlar las pérdidas de operaciones individuales.
  5. Prueba diferentes parámetros del período de admisión para encontrar combinaciones óptimas.

Estas mejoras pueden hacer que la estrategia sea más robusta en diferentes ciclos de mercado.

Resumen de las actividades

En general, la estrategia identifica soporte / resistencia con SMA y breakouts de operaciones, manteniendo las cosas simples y efectivas. También hay un espacio significativo para la optimización en múltiples dimensiones.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-27 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
//-- 開源代碼受Mozilla公眾授權條款2.0版規範, 網址是https://mozilla.org/MPL/2.0/
//
//@version=4
//
//  作品: [LunaOwl] 支撐壓力策略第4版
//  英文: [LunaOwl] Support Resistance Strategy V4
//
////////////////////////////////
//     ~~!!*(๑╹◡╹๑) **       //
//  製作:  @LunaOwl 彭彭      //
//  日期:  2019年03月05日     //
//  修改:  2019年04月22日     //
//  四版:  2020年06月16日     //
//  發表:  2020年06月17日     //
////////////////////////////////

//==設定策略==//

strategy("[LunaOwl] 支撐壓力策略 [回測]",
     shorttitle          = "支撐壓力策略 [回測]",
     overlay             = true,
     calc_on_order_fills = false,
     calc_on_every_tick  = false,
     pyramiding          = 0,
     currency            = currency.NONE,
     initial_capital     = 10000,
     slippage            = 5,
     default_qty_value   = 100,
     default_qty_type    = strategy.percent_of_equity,
     commission_type     = strategy.commission.percent,
     commission_value    = 0.05
     )

LB = input(50, title = "回溯期數", type = input.integer)
R = valuewhen(cross(sma(close, LB),close), highest(high, LB), 1)
S = valuewhen(cross(close,sma(close, LB)),  lowest( low, LB), 1)

plot(R, title = "壓力", color = color.green)
plot(S, title = "支撐", color = color.red)

//==定義輸出結果==//

Trend_up = crossover(close, R) ? 1 : 0
Trend_dn = crossunder(close, S) ? -1 : 0

//==設定出場規則==//

Enter = Trend_up ==  1 and Trend_up[1] == 0 ? Trend_up : na
Exit  = Trend_dn == -1 and Trend_dn[1] == 0 ? Trend_dn : na
strategy.entry("多", strategy.long, when = Enter)
strategy.entry("空", strategy.short, when = Exit)

Más.