Estrategia de trading dinámico con stop-profit y stop-loss EMA RSI MACD

EMA RSI MACD
Fecha de creación: 2024-06-14 15:38:17 Última modificación: 2024-06-14 15:38:17
Copiar: 4 Número de Visitas: 767
1
Seguir
1617
Seguidores

Estrategia de trading dinámico con stop-profit y stop-loss EMA RSI MACD

Descripción general

La estrategia de negociación combina los tres indicadores técnicos de las medias móviles de índice (EMA), el índice de fuerza relativa (RSI) y la dispersión de las medias móviles de convergencia (MACD) para generar una señal de compra y venta cuando el precio cumple ciertas condiciones mediante el análisis de sus relaciones cruzadas y numéricas. Al mismo tiempo, la estrategia también establece paros y pérdidas dinámicas para administrar el riesgo de negociación.

Principio de estrategia

  1. Calcula el promedio de precios de cierre altos y bajos (HLCC4) como datos básicos de la estrategia.
  2. Indicadores EMA y RSI basados en HLCC4 calculados en tres períodos diferentes.
  3. Calcula el valor de la columna de MACD.
  4. Para juzgar el cruce entre EMA1 y EMA2:
    • Cuando el EMA1 lleva el EMA2, genera una señal de alerta.
    • Cuando EMA1 desciende por EMA2, se genera una señal bajista.
  5. Para determinar si se cumplen las condiciones de compra o venta, se toman en cuenta los valores de los indicadores EMA, RSI y MACD:
    • Condiciones de compra: EMA1 con EMA2, HLC4 por encima de EMA3, RSI por encima de la desvalorización, precio de cierre por encima del precio de apertura, MACD columna es positiva.
    • Condiciones de venta: EMA1 por debajo de EMA2, HLCC4 por debajo de EMA3, RSI por debajo de la depreciación, precio de cierre por debajo del precio de apertura, MACD columnar negativo.
  6. En caso de señales contrarias al mantener una posición, primero se elimina la posición original y luego se abre una nueva posición.
  7. Al comprar o vender, el precio de parada y el precio de pérdida se establecen en función de la cantidad de puntos establecidos (pips).

Ventajas estratégicas

  1. La combinación de varios indicadores técnicos para un juicio integral, mejora la fiabilidad de la señal.
  2. La introducción de un mecanismo de detención de pérdidas dinámicas puede controlar el riesgo de manera efectiva.
  3. En caso de señales contrarias, las posiciones originales se aplanarán, evitando el problema de la repetición de las posiciones.
  4. Los parámetros son ajustables, adaptables y se pueden optimizar para diferentes entornos de mercado.

Riesgo estratégico

  1. En situaciones de crisis, el cruce frecuente puede conducir a un exceso de transacciones y aumentar los costos de las comisiones.
  2. Los puntos fijos de stop-loss pueden no adaptarse a las fluctuaciones del mercado, lo que lleva a un stop-loss prematuro o a un stop-loss tardío.
  3. La estrategia depende de los datos históricos y puede tardar en reaccionar ante eventos inesperados o situaciones inusuales.

Dirección de optimización de la estrategia

  1. Se puede considerar la introducción de más indicadores técnicos o de sentimiento del mercado, como las bandas de Brin, ATR, etc., para mejorar la precisión de la señal.
  2. Se puede utilizar un método más dinámico para el stop loss, como el seguimiento del stop loss o el ajuste de la distancia de stop loss en función de la fluctuación.
  3. Se puede combinar con análisis básico, como eventos de noticias importantes, publicaciones de datos económicos, etc., para filtrar las señales de negociación y evitar el comercio en períodos especiales.
  4. Para la configuración de los parámetros, se puede utilizar el aprendizaje automático o algoritmos de optimización para buscar la combinación óptima de parámetros.

Resumir

La estrategia combina varios indicadores técnicos, como EMA, RSI y MACD, para formar un sistema de negociación completo. En situaciones de tendencia, la estrategia puede capturar la tendencia de manera efectiva y controlar el riesgo mediante un stop loss dinámico. Sin embargo, en situaciones de volatilidad, el comercio frecuente puede afectar los beneficios.

Código Fuente de la Estrategia
/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[BUY/SELL]EMA RSI MACD with TP and SL", overlay=true)

// Input parameters
ema1Length = input.int(9, title="EMA 1 Length")
ema2Length = input.int(21, title="EMA 2 Length")
ema3Length = input.int(34, title="EMA 3 Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.int(50, title="RSI Threshold")
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
tpPips = input.int(10, title="Take Profit (pips)")
slPips = input.int(10, title="Stop Loss (pips)")

// HLCC4 calculation
hlcc4_custom = (high + low + close + close) / 4

// Calculate EMA and RSI based on HLCC4
ema1 = ta.ema(hlcc4_custom, ema1Length)
ema2 = ta.ema(hlcc4_custom, ema2Length)
ema3 = ta.ema(hlcc4_custom, ema3Length)
rsi = ta.rsi(hlcc4_custom, rsiLength)

// Calculate MACD Histogram
[a, b, histogram] = ta.macd(hlcc4_custom, macdFastLength, macdSlowLength, macdSignalSmoothing)

// EMA1 and EMA2 crossover conditions
emaCrossUp = ta.crossover(ema1, ema2)
emaCrossDown = ta.crossunder(ema1, ema2)

// BUY signal conditions
buySignal = emaCrossUp and hlcc4_custom > ema3 and rsi > rsiThreshold and close > open and histogram > 0

// SELL signal conditions
sellSignal = emaCrossDown and hlcc4_custom < ema3 and rsi < rsiThreshold and close < open and histogram < 0

var float entryPrice = na
var float tpPrice = na
var float slPrice = na

// Check if there is an open position and a contrary signal appears, then close all old orders first
if strategy.opentrades > 0
    if sellSignal and strategy.position_size > 0
        strategy.close("Buy", comment="Close Buy Order")
    if buySignal and strategy.position_size < 0
        strategy.close("Sell", comment="Close Sell Order")

// Place a BUY order when there is a BUY signal and set TP and SL based on pips
if buySignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice + tpPips * syminfo.mintick
    slPrice := entryPrice - slPips * syminfo.mintick
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tpPrice, stop=slPrice)

// Place a SELL order when there is a SELL signal and set TP and SL based on pips
if sellSignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice - tpPips * syminfo.mintick
    slPrice := entryPrice + slPips * syminfo.mintick
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tpPrice, stop=slPrice)

// Plot the crossover points of EMA1 and EMA2
plotshape(series=emaCrossUp, location=location.belowbar, color=color.aqua, style=shape.triangleup, title="EMA Cross Up", size=size.small)
plotshape(series=emaCrossDown, location=location.abovebar, color=color.red, style=shape.triangledown, title="EMA Cross Down", size=size.small)

// Plot the EMA lines on the chart
plot(ema1, title="EMA 1", color=color.aqua)
plot(ema2, title="EMA 2", color=color.red)
plot(ema3, title="EMA 3", color=color.yellow, linewidth=2)