La estrategia de seguimiento de tendencias de la EMA triple es una estrategia muy adecuada para seguir las tendencias del mercado. Utiliza tres EMA de diferentes períodos como señales de negociación para establecer posiciones largas o cortas cuando hay suficiente confirmación de tendencia.
La ventaja de esta estrategia es que puede reducir las señales falsas y garantizar una fuerza de tendencia suficiente antes de ingresar a una posición.
La lógica específica es que cuando el precio cruza por encima de los tres EMA al mismo tiempo, vaya largo; cuando el precio cruza por debajo de los tres EMA al mismo tiempo, vaya corto.
Este diseño puede reducir las señales falsas y garantizar que la tendencia sea lo suficientemente clara antes de entrar.
La estrategia utiliza un sistema de stop loss adaptativo basado en ATR y drawdown máximo. Calcula la volatilidad de precios en tiempo real y establece líneas de stop loss en consecuencia.
Durante una tendencia alcista, la línea de stop loss se moverá hacia arriba con nuevos máximos, con un buen efecto de persecución. Cuando el precio vuelve a caer al punto más bajo de la zona de amortiguamiento, la línea de stop loss se activará para cerrar posiciones. Esto puede controlar el riesgo de stop loss según las condiciones del mercado.
La estrategia utiliza un método de toma de ganancias de porcentaje fijo. Después de abrir una posición, una línea de toma de ganancias se establecerá en un cierto porcentaje por encima del precio de entrada. Cuando el precio sube a la línea de toma de ganancias, la posición se cerrará para tomar ganancias.
El beneficio de este porcentaje fijo de ganancia es que permite predefinir un nivel de ganancia objetivo que satisfará la salida una vez alcanzada. También evita el riesgo de que los precios vuelvan a caer. El porcentaje de ganancia puede ajustarse según sea necesario.
Puede evitar la apertura ciega de posiciones en mercados volátiles mediante la combinación con indicadores de juicio de tendencia; también puede utilizar métodos de movimiento de la tasa de ganancias o ganancias para hacer que los métodos de ganancias sean más flexibles.
La estrategia también puede optimizarse en los siguientes aspectos:
Utilice más indicadores para determinar el momento de entrada, como MACD, KD, etc., para evitar quedar atrapado en mercados volátiles.
Trate de mover tomar el beneficio, o la relación de beneficios tomar los métodos de beneficio, para hacer que los métodos de tomar el beneficio más flexible.
Añadir un mecanismo de seguimiento descendente al método de stop loss, lo que permite rastrear los puntos más bajos de nuevo cuando el precio cae de nuevo, controlando así el riesgo.
Ajustar los parámetros de los períodos de EMA basados en las características de los diferentes productos, optimizando el juicio de la tendencia.
Añadir módulo de tamaño de posición, puede ajustar por el tamaño de la operación en función de la relación de uso de los fondos.
La estrategia de seguimiento de tendencias triple EMA es una estrategia muy práctica de seguimiento de tendencias. Tiene fuertes capacidades de juicio de tendencias, al tiempo que también tiene mecanismos de toma de ganancias y stop loss adaptativos que pueden administrar automáticamente los pedidos. Desde la perspectiva de optimización, los sistemas de toma de ganancias y stop loss se pueden mejorar aún más para ajustarse en función de las condiciones del mercado en tiempo real. Pero en general, esta estrategia es una opción de riesgo fácil de implementar y controlable.
/*backtest start: 2023-01-01 00:00:00 end: 2023-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" ema_1 = ema(close, input(7)) ema_2 = ema(close, input(12)) ema_3 = ema(close, input(21)) Take_profit= ((input (4))/100) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3) closeLong = close > longTakeProfit or crossunder(close, vStop) //Entry strategy.entry(id="long", long = true, when = go_long and window()) //Exit strategy.close("long", when = closeLong and window()) plot(vStop,"Vstop", color.black, linewidth=2) plot(ema_1,"EMA Short", color.green, linewidth=1) plot(ema_2,"EMA Mid", color.purple, linewidth=1) plot(ema_3,"EMA Long", color.red, linewidth=1)