
Esta estrategia se basa en la línea de la EMA y el indicador RSI de las señales ocultas de desviación para abrir posiciones de más de la cabeza, a través de la identificación de las características de la formación de la línea de desviación de más de la cabeza oculta, a juzgar el inicio de la tendencia ascendente en la actualidad, como una señal de apertura de la posición. Al mismo tiempo, la combinación de la línea de la EMA de la línea de desviación de la línea de oro cruce y el precio de cierre de la línea K está por encima de la línea de la EMA de la media, para asegurar la tendencia hacia arriba.
Estrategia de la línea media EMA: utiliza la línea media de 50 y 250 períodos EMA para determinar la tendencia de cruce de oro, el precio se considera una señal múltiple cuando se atraviesa 50 EMA.
Estrategia de desviación oculta del RSI: la indicación del RSI presenta un mínimo bajo y una señal de desviación oculta de varios puntos de los mínimos más altos, lo que indica el comienzo de la reversión. La combinación de un número limitado de puntos de desviación puede filtrar las señales falsas.
Estrategia de cierre de la línea K: abrir más posiciones cuando el precio de cierre de la línea K supera los 50 EMA.
La combinación de las tres estrategias mencionadas anteriormente determina que la tendencia actual está comenzando a subir y abrir posiciones extras.
Utiliza la línea media de EMA para determinar la dirección de la tendencia, en combinación con la señal de reversión del indicador RSI, para abrir posiciones en la etapa inicial de la tendencia.
El mecanismo de doble confirmación, que utiliza la combinación de EMA, RSI y precios de cierre de línea K, puede filtrar eficazmente las señales falsas.
El seguimiento de la tendencia de la línea media y larga es adecuado para determinar el inicio de una nueva tendencia alcista después de la liquidación.
Cuando la línea media de la EMA produce un tenedor muerto, se requiere una liquidación oportuna.
El RSI esconde la desviación de la señal de juicio requiere cierta experiencia, la configuración incorrecta de los parámetros puede perder la señal o el error de juicio.
Los parámetros de las variedades de comercio necesitan ajustes optimizados.
Ajuste dinámico de los parámetros de la línea media de la EMA para optimizar la precisión de las tendencias.
Ajuste de los parámetros del RSI para optimizar la precisión de los desvíos ocultos.
Adherirse a un mecanismo de detención de pérdidas para controlar el riesgo mediante el uso de detención de ATR o detención porcentual.
Desarrollar estrategias de negociación a la baja que permitan abrir posiciones a la baja en una tendencia a la baja.
Esta estrategia utiliza la EMA para determinar la tendencia general, junto con el indicador RSI para aumentar la precisión del juicio, para determinar la nueva tendencia alcista después de la finalización de la liquidación. Se trata de una estrategia de seguimiento de tendencias más conservadora. Mediante la optimización de los parámetros y la adición de los medios de parada, se puede obtener un mejor efecto.
/*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)