Estrategia de cruce de EMA con precio más alto


Fecha de creación: 2024-03-29 14:39:27 Última modificación: 2024-03-29 14:39:27
Copiar: 2 Número de Visitas: 527
1
Seguir
1617
Seguidores

Estrategia de cruce de EMA con precio más alto

Descripción general

La estrategia de cruce de la brecha más alta de la EMA es una estrategia de negociación basada en el cruce de la brecha de precio y la media móvil del índice (EMA). La estrategia utiliza el precio más alto en un período determinado como una señal de compra y la EMA como una señal de venta.

Principio de estrategia

El principio central de las estrategias de cruce de EMA de brechas en los precios es el uso de brechas en los precios y cruces de EMA para capturar la tendencia del mercado. Cuando los precios superan los precios más altos dentro del período especificado, indica que el mercado puede entrar en una tendencia alcista, por lo que la estrategia genera una señal de compra. Al mismo tiempo, EMA como un indicador de seguimiento de la tendencia, cuando los precios caen por debajo de EMA, indica que la tendencia alcista puede terminar, por lo que la estrategia genera una señal de venta.

La estrategia utiliza los siguientes pasos para llevar a cabo la transacción:

  1. El precio más alto en el período especificado se calcula como el precio de compra de ruptura.
  2. La EMA es la señal de venta.
  3. Cuando el precio de cierre supera el precio de compra, la estrategia generará una señal de compra si no se tiene una posición en ese momento.
  4. Cuando el precio de cierre cae por debajo de la EMA, la estrategia genera una señal de venta si se tiene una posición en ese momento.
  5. El precio más bajo en el período especificado se calcula como el precio de parada.
  6. Si el precio cae por debajo del precio de parada, la estrategia se cierra inmediatamente.

Mediante los pasos anteriores, la estrategia puede beneficiarse de la tendencia al alza del mercado, mientras que el uso de stop loss controla el riesgo a la baja.

Ventajas estratégicas

La estrategia de cruce de la brecha más alta de la EMA tiene las siguientes ventajas:

  1. Seguimiento de tendencias: Esta estrategia utiliza brechas de precios y cruces de EMA para capturar tendencias del mercado y puede beneficiarse de las tendencias al alza.
  2. Control de riesgo: la estrategia utiliza el precio de stop loss para controlar el riesgo de bajada, lo que reduce efectivamente la máxima retirada de la estrategia.
  3. Flexibilidad de parámetros: La estrategia ofrece varios parámetros para la personalización del usuario, como el ciclo, la proporción de riesgo, si se utiliza el stop loss, etc., que se pueden ajustar según los diferentes estilos de negociación y el entorno del mercado.
  4. Simple y eficaz: La lógica de la estrategia es simple y clara, fácil de entender y de implementar, y al mismo tiempo ofrece buenos rendimientos en un mercado de tendencia.

Riesgo estratégico

A pesar de las ventajas de la estrategia de cruce por encima de los EMA máximos, también tiene los siguientes riesgos:

  1. Riesgo de fluctuaciones en el mercado: en situaciones de gran fluctuación en el mercado, la estrategia puede generar más señales falsas, lo que lleva a transacciones frecuentes y pérdidas de fondos.
  2. Riesgo de cambio de tendencia: la estrategia puede retrasar las ventas cuando la tendencia del mercado cambia, lo que lleva a que las ganancias se vuelvan o las pérdidas se conviertan en pérdidas.
  3. Riesgo de configuración de parámetros: el rendimiento de la estrategia depende de la configuración de los parámetros, como el ciclo, la proporción de riesgo, etc. Si la configuración de los parámetros es incorrecta, puede causar un mal rendimiento de la estrategia.

Para mitigar estos riesgos, se pueden considerar las siguientes medidas:

  1. Ajuste adecuado de los parámetros: ajuste adecuado de los parámetros de la estrategia, como el aumento del ciclo y la reducción de la proporción de riesgo, según los diferentes entornos de mercado y la variedad de operaciones, para reducir las señales falsas y la frecuencia de las operaciones.
  2. Combinación con otros indicadores: Se puede combinar con otros indicadores técnicos, como el RSI, el MACD, etc., para confirmar la efectividad de las tendencias y las señales y aumentar la fiabilidad de la estrategia.
  3. Establecer un precio de parada razonable: Establecer un precio de parada razonable que controle el riesgo de caída y no se detenga demasiado pronto, lo que lleva a perder oportunidades de ganancias.

Dirección de optimización de la estrategia

Para mejorar aún más el rendimiento de las estrategias de cruce de EMA de breakout, se pueden considerar las siguientes direcciones de optimización:

  1. Parámetros de ajuste dinámico: según la volatilidad del mercado y la intensidad de la tendencia, los parámetros de la estrategia de ajuste dinámico, como aumentar el ciclo cuando la volatilidad es mayor, aumentar la proporción de riesgo cuando la tendencia es más fuerte, etc., para adaptarse a diferentes condiciones del mercado.
  2. Introducción de mecanismos de blanqueo: La introducción de mecanismos de blanqueo, basados en el comercio original de múltiples tiendas, también puede beneficiarse de la tendencia a la baja, mejorando la adaptabilidad y la rentabilidad de la estrategia.
  3. Optimización de los paros y paradas: Optimización de los paros y paradas, como el uso de paradas móviles, paradas parciales, etc., para controlar mejor el riesgo y bloquear las ganancias.
  4. Combinación de análisis básico con análisis técnico para ajustar posiciones y parámetros de la estrategia ante eventos importantes, como la publicación de resultados empresariales o datos económicos, para responder a posibles cambios en el mercado.

Mediante estas medidas de optimización, se puede mejorar la estabilidad, adaptabilidad y rentabilidad de las estrategias de cruce de EMA a precios más altos, lo que permite un buen rendimiento en un mayor número de entornos de mercado.

Resumir

La estrategia de breakout EMA es una estrategia de seguimiento de tendencias sencilla y efectiva que capta la tendencia del mercado utilizando breakouts y cruces de EMA, mientras que se utiliza el stop loss para controlar el riesgo a la baja. La lógica de la estrategia es clara, los parámetros son flexibles y son fáciles de entender y implementar. Aunque la estrategia tiene ciertos riesgos, como el riesgo de fluctuaciones en el mercado, el riesgo de cambio de tendencia y el riesgo de configuración de parámetros, estos riesgos se pueden mitigar con medidas de control de riesgo adecuadas, como ajustar los parámetros, combinar otros indicadores y establecer un stop loss razonable, etc. Además, la estrategia tiene espacio para una optimización adicional, como el ajuste de parámetros dinámicos, la introducción de mecanismos de optimización de stop loss y de vallas múltiples, y la combinación de análisis básico para mejorar el rendimiento y la adaptabilidad de la estrategia.

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

// @version = 5
strategy(title="BreakHigh Strategy", overlay=true)
Period = input.int(34, "Number of previous bars(34,52 Recommend)")
showbg = input(defval = false,title = "Show BackGround Color")
showema = input(defval = true ,title = "Show Line")
MarkBuySig = input(defval = true ,title = "Show Buy/Sell Signal")

Risk_Per_Trade = input(2.5, '% of Risk Per Trade') / 100  // Risk% Per Trade Switch
SLDAY = input(title='Lowest price of the previous number of bars', defval=9)
Buysig = input(defval=true, title='Start Strategy')
UseSl = input(defval=false, title='Use Stoploss Price')
Compound = input(defval = false ,title =  "Compound Profit")
xtf = input.timeframe(title='** Fix chart to which time frame ? **)', defval='D')


//BUY
float buyLine = na
buyLine := ta.highest(high,Period)[1] 
plot(showema ? buyLine : na, linewidth=1, style=plot.style_linebr, color=color.new(color.green, 0))

//SELL
output = ta.ema(close, Period)
show = request.security(syminfo.tickerid, xtf, output)
FastL = plot(showema ? show : na, color=color.new(color.white, 0), linewidth=2, title='Slow EMA')

//Buy-Sell Signal
Green = close > buyLine   // Buy
Red = close < show // Sell

buycond = Green and Green[1] == 0
sellcond = Red and Red[1] == 0

bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)

buy = bearish[1] and buycond
sell = bullish[1] and sellcond

plotshape(MarkBuySig ? buy : na, style=shape.labelup, text='Buy Next Bar', textcolor=color.new(color.black, 0), location=location.belowbar, color=color.new(color.green, 0))
plotshape(MarkBuySig ? sell : na, style=shape.labeldown, text='Sell Next Bar', textcolor=color.new(color.black, 0), location=location.abovebar, color=color.new(color.red, 0))
bgcolor(showbg ? bullish ? color.new(color.green,90) : color.new(color.red,90) : na )


// === BACKTEST RANGE === //
use_date_range = input(true)
FromYear = input.int(defval=2012, title='From Year', minval=1950)
FromMonth = input.int(defval=1, title='From Month', minval=1)
FromDay = input.int(defval=1, title='From Day', minval=1)
ToYear = input.int(defval=9999, title='To Year', minval=1950)
ToMonth = input.int(defval=1, title='To Month', minval=1)
ToDay = input.int(defval=1, title='To Day', minval=1)
in_date_range = use_date_range ? time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59) : true

//****************************************************************************//

//////////////////////////////////////////////
//    define strategy entry / exit          //
//////////////////////////////////////////////

//****************************************************************************//
// LONG CONDITIONS

Select_Long_Condition_1 = close > buyLine // Buy when Have Signal
Open_Long_Condition = Select_Long_Condition_1 and strategy.opentrades == 0

//****************************************************************************//
// STOP LOSS Price

float longSL = na
longSL := Open_Long_Condition ? ta.lowest(low, SLDAY)[1] : longSL[1]  


//****************************************************************************//
// Cal StopLoss

Long_Entry_Price = close
Diff_OPEN_to_SL = math.abs(Long_Entry_Price - longSL)

// Exit CONDITIONS

Exit_Long_Condition = close < show // Sell when Have Signal

//****************************************************************************//
// POSITION SIZE CAP

strategy.initial_capital = 50000

float portSize = Compound ? strategy.netprofit + strategy.initial_capital : strategy.initial_capital
float LossAmoutUnit = portSize * Risk_Per_Trade //50
float PercentSL = ( Diff_OPEN_to_SL / Long_Entry_Price ) * 100
float PositionSize = LossAmoutUnit / Diff_OPEN_to_SL


//****************************************************************************//
// ENTRY/EXIT

if Buysig
    if Open_Long_Condition and in_date_range 
        strategy.entry('LONG', strategy.long, qty=PositionSize)


if Exit_Long_Condition and in_date_range
    strategy.close('LONG')
if close < longSL and UseSl
    strategy.close('LONG')

//****************************************************************************//
// PLOT STOP LOSS

longPlotSL = strategy.opentrades > 0 and strategy.position_size > 0 ? longSL : na
// label.new(bar_index, high, text=str.tostring(longPlotSL),color=color.white, textcolor=color.black)
plot(longPlotSL, title="", linewidth=2, style=plot.style_linebr, color=color.new(color.red, 0))



//****************************************************************************//