
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.
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.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
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.
La estrategia puede ser optimizada en los siguientes aspectos:
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.
/*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)