Esta estrategia se basa en las señales de desviación ocultas de la EMA y el indicador RSI para abrir posiciones múltiples, y se utiliza como una señal de apertura para determinar el inicio de la tendencia alcista al identificar los puntos característicos de la formación de desviación oculta. Al mismo tiempo, la combinación del cruce de oro de la EMA y el precio de cierre de la línea K por encima de la EMA asegura una tendencia alcista. Esta estrategia es adecuada para seguir la tendencia de la línea media y abrir varias posiciones en la fase de repunte después del final de la operación.
Estrategia EMA mediana: se utiliza el EMA mediana de 50 ciclos y el EMA mediana de 250 ciclos para cruzar la tendencia del oro, y el precio se considera una señal multi-cabeza cuando se cruza el EMA de 50.
Estrategia de desviación oculta del RSI: el indicador RSI aparece en puntos bajos más bajos, mientras que el precio aparece en puntos bajos más altos.
Estrategia de cierre de línea K: abre más posiciones cuando el precio de cierre de línea K está por encima de 50 EMA.
La combinación de las tres estrategias anteriores determina el momento en que la tendencia comienza a subir y se abre para hacer más posiciones.
Se puede abrir una posición en la fase inicial de la tendencia utilizando el EMA para determinar la dirección de la tendencia, junto con las señales de inversión del indicador RSI.
El mecanismo de doble confirmación, que utiliza una combinación de EMA, RSI y K-line para determinar el precio de cierre, puede filtrar eficazmente las falsas señales.
El seguimiento de la tendencia de la línea media y larga es adecuado para juzgar la nueva tendencia alcista después de la recomposición.
Cuando la EMA genera un tenedor muerto, se necesita un equilibrio oportuno.
El RSI oculto requiere cierta experiencia en el juicio de señales, y la configuración incorrecta de los parámetros puede perder la señal o juzgar mal.
Los parámetros de la variedad de transacción necesitan un ajuste optimizado.
Para optimizar la precisión de las tendencias, se ajustan dinámicamente los parámetros de la EMA lineal.
Ajustar los parámetros del RSI para optimizar la precisión de la determinación de la desviación oculta.
Incorporar mecanismos de stop loss para controlar el riesgo mediante métodos como el ATR stop loss o el porcentaje de stop loss.
Desarrollar estrategias de trading a vuelo que permitan abrir posiciones a vuelo en una tendencia a la baja.
La estrategia de seguimiento de tendencias es más conservadora. Se obtienen mejores resultados mediante la optimización de la configuración de parámetros y la incorporación de medios de detención. La estrategia de seguimiento de tendencias es más precisa y tiene mayores probabilidades de ganar, en comparación con la estrategia de media móvil simple.
/*backtest start: 2024-01-25 00:00:00 end: 2024-02-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2016) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // Bar's time happened on/after start date? afterStartDate = time >= start and time<=finish?true:false //EMA'S emasrc = close len1 = input(50, minval=1, title="EMA1") ema1 = ema(emasrc, len1) col1 = color.white len2 = input(250, minval=1, title="EMA2") ema2 = ema(emasrc, len2) col2 = color.yellow //Plots plot(ema1, title="EMA1", linewidth=1, color=col1) plot(ema2, title="EMA2", linewidth=1, color=col2) //Stoch periodK = input(4, title="K", minval=1) periodD = input(4, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) //Hidden Divergence Indikator len = input(title="RSI Period", minval=1, defval=14) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=1) lbL = input(title="Pivot Lookback Left", defval=19) rangeUpper = input(title="Max of Lookback Range", defval=20) rangeLower = input(title="Min of Lookback Range", defval=4) hiddenBullColor = color.new(color.green, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = rsi(src, len) plFound = na(pivotlow(osc, lbL, lbR)) ? false : true phFound = na(pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1) hiddenBullCond = priceHL and oscLL and plFound //buy Conditions buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10] emacondition = ema1 > ema2 upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3] crossup = k[0] >= d[0] and k[1] <= d[1] longcondition = emacondition and upcondition and crossup and buyhiddenbull if (afterStartDate) strategy.entry("Long", strategy.long, when = longcondition) //TakeProfit, StopLoss lowest low profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6) loLen = input(title="Lowest Low Lookback", type=input.integer, defval=38, minval=2) stop_level = lowest(low, loLen)[1] bought = strategy.position_size[1] < strategy.position_size barsbought = barssince(bought) if strategy.position_size>0 profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor) strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)