Estrategia de impulso de ruptura basada en el cruce dorado de media móvil


Fecha de creación: 2024-02-06 14:39:22 Última modificación: 2024-02-06 14:39:22
Copiar: 2 Número de Visitas: 593
1
Seguir
1617
Seguidores

Estrategia de impulso de ruptura basada en el cruce dorado de media móvil

Descripción general

Esta estrategia se basa en el promedio móvil del índice de 12 días (EMA) y la horquilla de oro de la EMA de 26 días como señal de entrada. Para filtrar brechas falsas, la estrategia también introduce el indicador MACD para determinar la tendencia del mercado y el indicador RSI para determinar si se encuentra en una zona de sobreventa.

La estrategia ofrece tres opciones para detener los pérdidas: seguimiento de la parada, parada de la línea de equilibrio y parada de la línea de equilibrio. En el caso de la parada, la estrategia ofrece dos objetivos de parada en orden.

Principio de estrategia

  1. Señales de entrada

    • El EMA del día 12 sobre el EMA del día 26 constituye un tenedor de oro
    • El indicador MACD es positivo y la línea MACD está por encima de la línea Signal
    • El RSI está dentro del rango establecido
    • El precio de cierre está por encima del EMA del 21 y el SMA del 7
  2. Confirmación de ingreso

    • Opcional: el precio rompe la resistencia dinámica
  3. Cómo detener el daño

    • Detención de seguimiento: el porcentaje de seguimiento de la parada de seguimiento se establece en función del precio de entrada y el nivel de pérdida de seguimiento
    • Detención de la línea media: el cierre de la cotización cayó por debajo de la parada SMA del día 7
    • La línea media de la horquilla muere: 12 días por debajo de la EMA y 26 días por debajo de la EMA
  4. Cómo se detiene la parálisis

    • Establezca dos objetivos de parada en orden, vendiendo una parte de la cantidad cuando se activa la primera parada y la cantidad total cuando se activa la segunda parada

Ventajas estratégicas

  1. Filtración de señales engañosas con un sistema de medianería para mejorar la precisión de entrada
  2. Múltiples opciones de stop loss para diferentes tipos de comerciantes
  3. Dinámica de seguimiento de pérdidas para lograr el control de riesgos
  4. El objetivo de la suspensión es jugar en grupos y bloquear parte de las ganancias

Riesgo estratégico

  1. Los EMAs generan más señales falsas cuando los mercados se mueven
  2. El bloqueo de seguimiento puede ser roto después de la ruptura.
  3. La pérdida de la parada de la horquilla de la línea media no se detiene a tiempo cuando la tendencia se invierte

Respuesta:

  1. Indicadores MACD combinados para determinar el movimiento real del mercado
  2. Ajuste de la magnitud de la pérdida de seguimiento
  3. Otros métodos de detención de pérdidas o combinación de ellos

Dirección de optimización de la estrategia

  1. Optimización de los parámetros EMA para determinar la mejor combinación de parámetros
  2. Prueba diferentes métodos y parámetros para encontrar la mejor solución
  3. Prueba de diferentes parámetros de frenado para optimizar el efecto de frenado
  4. El tiempo de ingreso en combinación con otros indicadores
  5. Ajuste de acuerdo a las diferentes variedades y parámetros de ciclo

Resumir

Esta estrategia utiliza el sistema de línea uniforme como la principal señal de negociación y ayuda a filtrar la entrada con indicadores como MACD, RSI, etc. El método de parada y el objetivo de parada se han optimizado, y se pueden ajustar los parámetros para que coincidan con diferentes tipos de inversores. El espacio de optimización de la estrategia es amplio y se puede probar y mejorar en varias dimensiones, como la señal de entrada, el método de parada y el objetivo de parada, para mejorar la eficacia de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 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 at https://mozilla.org/MPL/2.0/
// © AbdulRahimShama
//@version=5


strategy('12/26-IT strategy', overlay=true,initial_capital = 100000)



Show_Only_12_26_Crossover_Entry = input.bool(true, group = "Entry_Exit Criteria")
Show_12_26_Crossover_and_resistance_Entry = input.bool(false, group = "Entry_Exit Criteria")


Show_TSL_StopLoss = input.bool(true, group = "Entry_Exit Criteria")
Show_Crossdown_StopLoss = input.bool(true, group = "Entry_Exit Criteria")
Show_SMA7_StopLoss = input.bool(false, group = "Entry_Exit Criteria")



////////////////////////////////////////////////
////////////////TARGETS INPUT
////////////////////////////////////////////////

////////Target1

TargetPerc1 = input.float(title="Target (%)", minval=0,defval=5, group="Target-1") / 100
TargetPrice1 = strategy.position_avg_price * (1 + TargetPerc1)
Target1_exit_qty = input.int(50, group="Target-1",tooltip = "% qty to sell when Target1 is reached")



////////Target2

TargetPerc2 = input.float(title="Target (%)", minval=0,defval=10, group="Target-2") / 100
TargetPrice2 = strategy.position_avg_price * (1 + TargetPerc2)
Target2_exit_qty = input.int(100, group="Target-2",tooltip = "% qty to sell when Target2 is reached")



////////////////////////////////////////////////
////////////////TRAILING STOP LOSS
////////////////////////////////////////////////


TSLsource = input(low, title="TSL Source", group="Trailing StopLoss")

longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=1, group="Trailing StopLoss") * 0.01

TrailStopPrice = 0.0

TrailStopPrice := if strategy.position_size > 0
    sPIVOT_highValue = TSLsource * (1 - longTrailPerc)
    math.max(sPIVOT_highValue, TrailStopPrice[1])
else
    0

TSL = close < TrailStopPrice
plot(series=strategy.position_size > 0 and Show_TSL_StopLoss ? TrailStopPrice : na, color=color.new(color.fuchsia, 0), style=plot.style_linebr, linewidth=2, title='Trailing StopLoss')




////////////////////////////////////////////////
////////////////Moving Averages
////////////////////////////////////////////////



EMA_12=ta.ema(close, 12)
EMA_26=ta.ema(close, 26)
EMA_21=ta.ema(close,21)

plot(EMA_12, title="EMA_12", color=color.rgb(0, 255, 0), offset=0, linewidth=1)
plot(EMA_26, title="EMA_26", color=color.rgb(0, 0, 255), offset=0, linewidth=1)
plot(Show_SMA7_StopLoss ? ta.sma(close,7) : na, title="SMA_7", color=color.rgb(255, 0, 0), offset=0, linewidth=1)



////////////////////////////////////////////////
////////////////RESISTANCE INPUT and PLOTTING
////////////////////////////////////////////////

CrossOverLookbackCandles = input.int(10, group= "RESISTANCE")

resistanceSRC = input(high, group= "RESISTANCE")
resistanceLEFT = input(10, group= "RESISTANCE")
resistanceRIGHT = input(10, group= "RESISTANCE")

hih = ta.pivothigh(resistanceSRC, resistanceLEFT, resistanceRIGHT)
top = ta.valuewhen(hih, resistanceSRC[resistanceRIGHT], 0)

res = plot(top, color=top != top[1] ? na : color.new(#00ff00, 50), offset=-resistanceLEFT, linewidth=2, title="Resistance Line")

EMA_12_Low = ta.lowest(EMA_12, CrossOverLookbackCandles)
EMA_26_Low = ta.lowest(EMA_26, CrossOverLookbackCandles)


////////////////////////////////////////////////
////////////////RSI INPUT and PLOTTING
////////////////////////////////////////////////
RSI = ta.rsi(close, 14)
RSILowerRange = input.int(50, tooltip = "RSI value should be ABOVE this value for entry", group = "RSI")
RSIUpperRange = input.int(70, tooltip = "RSI value should be BELOW this value for entry", group = "RSI")



////////////////////////////////////////////////
////////////////MACD
////////////////////////////////////////////////
fast_length = 12
slow_length = 26
MACD_src = close
signal_length = 9

fast_ma = ta.ema(MACD_src, fast_length)
slow_ma = ta.ema(MACD_src, slow_length)
macd = fast_ma - slow_ma
signal = ta.ema(macd, signal_length)
hist = macd - signal



////////////////////////////////////////////////
////////////////ENTRY CRITERIA
////////////////////////////////////////////////


BUYVALUE= input(100000, tooltip = "Buy qty displayed on chart will be based on this value")

BASEENTRY = macd > signal and RSI > RSILowerRange and RSI < RSIUpperRange and close > EMA_21 and close > ta.sma(close, 7)


Entry= ta.crossover(EMA_12, EMA_26) and BASEENTRY
Entry2 = ta.crossover(close, top) and EMA_12_Low < EMA_26_Low and EMA_12 > EMA_26 and RSI < 70

////////////////////////////////////////////////
////////////////BUY SELL STRATEGY
////////////////////////////////////////////////

if ((Entry and Show_Only_12_26_Crossover_Entry))
    strategy.entry("buy", strategy.long, qty=BUYVALUE/close)

if (Entry2 and Show_12_26_Crossover_and_resistance_Entry)
    strategy.entry("buy", strategy.long, qty=BUYVALUE/close)

strategy.exit("Tg1", "buy", limit=TargetPrice1, qty_percent = Target1_exit_qty)
strategy.exit("Tg2", "buy", limit=TargetPrice2, qty_percent = Target2_exit_qty)



if TSL and Show_TSL_StopLoss and close < EMA_12 
    strategy.close_all ("sl")

if ta.crossunder(EMA_12, EMA_26) and Show_Crossdown_StopLoss
    strategy.close_all ("sl")

if ta.crossunder(close, ta.sma(close, 7)) and Show_SMA7_StopLoss
    strategy.close_all ("sl")