Estrategia comercial basada en retroceso y ruptura


Fecha de creación: 2024-02-28 18:01:56 Última modificación: 2024-02-28 18:01:56
Copiar: 0 Número de Visitas: 585
1
Seguir
1617
Seguidores

Estrategia comercial basada en retroceso y ruptura

Descripción general

La estrategia de negociación de reajuste de ruptura se clasifica como una estrategia de negociación en línea corta, que realiza operaciones de reajuste de ruptura bajo una tendencia específica mediante el cálculo de los indicadores de fuerza absoluta y MACD de los precios. La estrategia combina varios indicadores para juzgar la tendencia principal, la tendencia intermedia y la tendencia a corto plazo, para realizar operaciones de seguimiento de tendencias mediante señales de confirmación de tendencias sincronizadas y complementarias.

Principio de estrategia

La estrategia se basa principalmente en el indicador de fuerza absoluta de los precios y el indicador MACD para lograr una negociación de reajuste de ruptura. En primer lugar, se calcula el ciclo 9 de los precios, el ciclo 21 y el ciclo 50 de EMA, para determinar la dirección de la tendencia general; luego se calcula el indicador de fuerza absoluta de los precios, que refleja la intensidad del ajuste a corto plazo; y finalmente se calcula el indicador MACD para determinar la dirección de la tendencia a corto plazo.

Concretamente, la tendencia a la baja de las variedades debe cumplir con el 9o EMA por encima del 21o EMA, el 21o EMA por encima del 50o EMA. El criterio de ajuste a corto plazo es el diferencial del indicador de fuerza absoluta inferior a 0, el MACDDIFF es menor que 0. La tendencia a la baja de las variedades debe cumplir con el 9o EMA por debajo del 21o EMA, el 21o EMA por debajo del 50o EMA.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Combinación de tendencias generales y ajustes a corto plazo para evitar brechas falsas
  2. El uso de combinaciones de indicadores es más confiable
  3. El indicador de intensidad absoluta refleja la intensidad de ajuste para determinar la calidad del ajuste
  4. El MACD puede determinar tendencias a corto plazo y zonas de sobrecompra y sobreventa

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. El error de juicio de las grandes tendencias puede conducir al fracaso de las transacciones
  2. El tiempo y la intensidad de la reajuste son erróneos y pueden no ser válidos.
  3. Los indicadores se dispersan en situaciones extremas y producen señales erróneas

Para los riesgos anteriores, se pueden mejorar los métodos de optimización de parámetros para juzgar diferentes indicadores de ciclo; ajustar las reglas de tenencia de posiciones, controlar las pérdidas individuales; combinar más señales de filtrado de indicadores y mejorar la precisión.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Prueba más combinaciones de indicadores para encontrar estrategias de negociación más compatibles
  2. Optimización de los parámetros de los indicadores para mejorar su sensibilidad
  3. Ajuste el método de detención de pérdidas para reducir el máximo de pérdidas individuales
  4. Aumentar las condiciones de filtración para emitir señales en áreas más eficientes
  5. Mejora de la precisión de los juicios combinada con más indicadores de ciclo de tiempo

Resumir

En resumen, la estrategia de negociación de reajuste de ruptura en general es una estrategia de negociación de línea corta más estable. Combina el juicio de tendencias múltiples, grandes y cortas, para evitar el error de negociación en situaciones de crisis. Al mismo tiempo, el uso de una combinación de indicadores también mejora la precisión del juicio.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Divergence Scalper [30MIN]", overlay=true , commission_value=0.04 ) 
message_long_entry = input("long entry message") 
message_long_exit = input("long exit message") 
message_short_entry = input("short entry message") 
message_short_exit = input("short exit message") 
//3x ema 
out9 = ta.ema(close,9) 
out21 = ta.ema(close,21) 
out50 = ta.ema(close,50) 
//abs 
absolute_str_formula( ) => 
    top=0.0 
    bottom=0.0 
    if(close>close[1]) 
        top:= nz(top[1])+(close/close[1]) 
    else 
        top:=nz(top[1]) 
    if(close<=close[1]) 
        bottom:= nz(bottom[1])+(close[1]/close) 
    else 
        bottom:=nz(bottom[1]) 
    if (top+bottom/2>=0) 
        1-1/(1+(top/2)/(bottom/2)) 
abs_partial=absolute_str_formula() 
abs_final = abs_partial - ta.sma(abs_partial,50) 
//macd 
fast_length = input(title="Fast Length", defval=23) 
slow_length = input(title="Slow Length", defval=11) 
src = input(title="Source", defval=open) 
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 6) 
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) 
sma_signal = input.string(title="Signal Line MA Type", defval="SMA", options=["SMA", "EMA"]) 
// Calculating 
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) 
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) 
macd = fast_ma - slow_ma 
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) 
hist = macd - signal 
long= abs_final > 0 and hist <0 and out9<out21 and out21<out50 
short = abs_final <0 and hist >0 and out9>out21 and out21>out50 
long_exit = abs_final <0 and hist >0 and out9>out21 and out21>out50 
short_exit = abs_final > 0 and hist <0 and out9<out21 and out21<out50 
strategy.entry("long", strategy.long, when = long and barstate.isconfirmed, alert_message = message_long_entry) 
strategy.entry("short", strategy.short, when = short and barstate.isconfirmed, alert_message = message_short_entry) 
strategy.close("long", when = long_exit and barstate.isconfirmed, alert_message = message_long_exit) 
strategy.close("short", when = short_exit and barstate.isconfirmed, alert_message = message_short_exit)