Esta estrategia abre posiciones largas basadas en las señales de divergencia alcista ocultas del cruce EMA y RSI para identificar el comienzo de una tendencia al alza. La combinación de líneas EMA, indicador RSI y precios de cierre de la línea K proporciona una doble confirmación para garantizar un impulso al alza. Esta estrategia es adecuada para seguir tendencias a medio y largo plazo y abrir posiciones largas después de las consolidaciones de precios.
Estrategia de la EMA: el uso de la cruz de oro de la EMA de 50 períodos y la EMA de 250 períodos para determinar la dirección de la tendencia.
Estrategia de divergencia oculta del RSI: el RSI forma mínimos más bajos mientras que el precio forma mínimos más altos, lo que indica una inversión de tendencia al principio.
Estrategia de cierre de la línea K: ir largo cuando el precio de cierre está por encima de la línea EMA 50.
La combinación de las tres estrategias anteriores identifica el inicio de una tendencia al alza y abre posiciones largas en consecuencia.
El uso de líneas EMA para determinar la dirección de la tendencia junto con las señales de reversión del RSI permite una entrada temprana al comienzo de las tendencias.
La doble confirmación de las líneas EMA, el indicador RSI y los precios de cierre de la línea K filtran efectivamente las señales falsas.
El seguimiento de las tendencias a medio y largo plazo hace que sea adecuado identificar nuevas tendencias alcistas después de las consolidaciones.
Cierre de posiciones cuando las líneas de la EMA tengan una cruz de muerte.
La identificación de divergencias ocultas del RSI requiere experiencia, la ajuste incorrecto de parámetros podría conducir a señales faltantes o falsas.
Los parámetros deben optimizarse para diferentes instrumentos de negociación.
Ajuste dinámico de los parámetros de la EMA para una mejor precisión en la determinación de tendencias.
Ajusta los parámetros del RSI para una mejor precisión de la señal de divergencia oculta.
Añadir mecanismos de stop loss como ATR o paradas porcentuales para controlar los riesgos.
Desarrollar estrategias para posiciones cortas para negociar tendencias a la baja.
Esta estrategia combina líneas EMA para la determinación de tendencias y señales RSI para aumentar la precisión. Identifica nuevas tendencias alcistas después de las consolidaciones. Con el ajuste adecuado de parámetros y la gestión de riesgos, podría lograr buenos resultados. En comparación con las estrategias de promedios móviles simples, tiene una mayor precisión en la captura de tendencias con mejores tasas de ganancia. En general, es una estrategia práctica de tendencia.
/*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)