Estrategia de cruce de la EMA de BreakHigh

El autor:¿ Qué pasa?, Fecha: 2024-03-29 14:39:27
Las etiquetas:

img

Resumen general

La estrategia de cruce de EMA es una estrategia de trading basada en el cruce de breakout de precios y el cruce de promedio móvil exponencial (EMA). La estrategia utiliza el precio más alto dentro de un período especificado como señal de compra y la EMA como señal de venta. Cuando el precio de cierre se rompe por encima del precio más alto dentro del período especificado, la estrategia genera una señal de compra. Cuando el precio de cierre cae por debajo de la EMA, la estrategia genera una señal de venta. La estrategia también establece un precio de stop-loss para controlar el riesgo. Además, la estrategia proporciona múltiples parámetros para que los usuarios se adapten para adaptarse a diferentes estilos de negociación y condiciones del mercado.

Principio de la estrategia

El principio básico de la estrategia de cruce de la EMA es capturar las tendencias del mercado utilizando el cruce de precios y la cruce de la EMA. Cuando el precio se rompe por encima del precio más alto dentro de un 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, la EMA sirve como un indicador de seguimiento de tendencia. Cuando el precio cae por debajo de la 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 implementar la negociación:

  1. Calcular el precio más alto dentro del período especificado como el precio de compra de ruptura.
  2. Calcular la EMA como la señal de venta.
  3. Cuando el precio de cierre se rompe por encima del precio de compra de ruptura, si no hay posición actual, la estrategia genera una señal de compra.
  4. Cuando el precio de cierre cae por debajo de la EMA, si hay una posición actual, la estrategia genera una señal de venta.
  5. El valor de las pérdidas se calculará en función de los valores de las pérdidas.
  6. Si el precio cae por debajo del precio de stop-loss, la estrategia cierra inmediatamente la posición.

A través de los pasos anteriores, la estrategia puede beneficiarse de la tendencia al alza en el mercado al tiempo que utiliza el stop-loss para controlar el riesgo a la baja.

Ventajas estratégicas

La estrategia de cruce de la EMA BreakHigh tiene las siguientes ventajas:

  1. Seguimiento de tendencias: La estrategia utiliza la ruptura de precios y el cruce de la EMA para capturar las tendencias del mercado y puede beneficiarse de las tendencias alcistas.
  2. Control de riesgos: La estrategia utiliza un precio de stop-loss para controlar el riesgo a la baja, lo que puede reducir efectivamente el aprovechamiento máximo de la estrategia.
  3. Flexibilidad de parámetros: La estrategia proporciona a los usuarios múltiples parámetros para personalizar, como el período, la relación de riesgo, si se debe utilizar el stop-loss, etc., que se pueden ajustar de acuerdo con diferentes estilos de negociación y condiciones del mercado.
  4. Simple y eficaz: La lógica de la estrategia es simple y clara, fácil de entender e implementar, y puede lograr buenos rendimientos en mercados de tendencia.

Riesgos estratégicos

Aunque la estrategia de cruce de la EMA BreakHigh tiene ciertas ventajas, también presenta los siguientes riesgos:

  1. Riesgo de volatilidad del mercado: en casos de alta volatilidad del mercado, la estrategia puede generar más señales falsas, lo que conduce a frecuentes pérdidas comerciales y de capital.
  2. Riesgo de reversión de tendencia: cuando la tendencia del mercado se invierte, la estrategia puede retrasar la venta, lo que resulta en un retroceso de las ganancias o convierte las ganancias en pérdidas.
  3. Parámetros que establecen el riesgo: el rendimiento de la estrategia depende del establecimiento de parámetros, como el período, la relación de riesgo, etc. Si los parámetros se establecen incorrectamente, puede dar lugar a un mal rendimiento de la estrategia.

Para mitigar estos riesgos, pueden considerarse las siguientes medidas:

  1. Ajuste adecuado de los parámetros: De acuerdo con las diferentes condiciones del mercado e instrumentos de negociación, ajuste adecuadamente los parámetros de la estrategia, como aumentar el período, reducir la relación de riesgo, etc., para reducir las señales falsas y las operaciones frecuentes.
  2. Combinar con otros indicadores: Combinar con otros indicadores técnicos, como RSI, MACD, etc., para confirmar la validez de las tendencias y señales y mejorar la fiabilidad de la estrategia.
  3. Establecer un stop-loss razonable: Establecer un precio de stop-loss razonable, que puede controlar el riesgo a la baja y no detener la pérdida demasiado pronto, lo que resulta en oportunidades de ganancia perdidas.

Direcciones para la optimización de la estrategia

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

  1. Ajuste dinámico de parámetros: según la volatilidad del mercado y la fuerza de la tendencia, ajustar dinámicamente los parámetros de la estrategia, como aumentar el período en que la volatilidad es alta, aumentar la relación de riesgo cuando la tendencia es fuerte, etc., para adaptarse a las diferentes condiciones del mercado.
  2. Introducir un mecanismo de negociación larga-corta: basándose en la negociación larga original, introducir un mecanismo de negociación corta para beneficiarse también de las tendencias bajistas, mejorando la adaptabilidad y la rentabilidad de la estrategia.
  3. Optimizar el stop-loss y el take-profit: Optimizar la configuración del stop-loss y el take-profit, como el uso del trailing stop-loss, el take-profit parcial, etc., para controlar mejor los riesgos y bloquear las ganancias.
  4. Combinar con el análisis fundamental: Combinar el análisis fundamental con el análisis técnico, como ajustar la posición y los parámetros de la estrategia antes y después de eventos importantes como los informes de ganancias corporativas y las publicaciones de datos económicos, para hacer frente a posibles cambios en el mercado.

A través de las medidas de optimización anteriores, se puede mejorar la estabilidad, la adaptabilidad y la rentabilidad de la Estrategia de Crossover BreakHigh EMA, lo que le permite lograr un buen rendimiento en más entornos de mercado.

Resumen de las actividades

La estrategia de cruce de la EMA BreakHigh es una estrategia simple y efectiva de seguimiento de tendencias que captura las tendencias del mercado mediante el uso de la ruptura de precios y el cruce de la EMA mientras 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 es fácil de entender e implementar. Aunque la estrategia tiene ciertos riesgos, como el riesgo de volatilidad del mercado, el riesgo de inversión de tendencia y el riesgo de configuración de parámetros, estos riesgos se pueden mitigar a través de medidas apropiadas de control de riesgos, como ajustar parámetros, combinar con otros indicadores y establecer un stop-loss razonable. Además, la estrategia tiene espacio de optimización adicional, como el ajuste dinámico de parámetros, la introducción de un mecanismo de pérdida corta larga, la optimización del stop-loss y take-profit, y la combinación con el análisis fundamental, etc., para mejorar el rendimiento y la adaptabilidad 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))



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



Más.