Esta estrategia integra una doble media móvil e indicador RSI para construir una estrategia de negociación cruzada entre posiciones largas y cortas.
Esta estrategia adopta dos conjuntos de promedios móviles, que consisten en promedios móviles rápidos (EMA 59 y EMA 82) y promedios móviles lentos (EMA 96 y EMA 95).
Específicamente, cuando la EMA rápida se rompe por encima de la EMA lenta, se genera una señal larga. Si el RSI está por debajo de 30 (área de sobreventa) en este momento, vaya largo. Cuando la EMA rápida se rompe por debajo de la EMA lenta, se produce una señal corta. Si el RSI supera 70 (área de sobreventa) en este punto, vaya corto.
La ventaja de utilizar una media móvil dual es reconocer mejor los cambios en las tendencias a medio y largo plazo.
Esta estrategia integra el seguimiento de tendencias de medias móviles duales y el comercio de reversión media del indicador RSI. Las EMA duales rastrean las direcciones de tendencia a medio y largo plazo, mientras que el RSI confirma la validez de las señales de negociación y la parada de pérdida. Esta es una estrategia de cruce simple y práctica entre largo y corto. Se puede adaptar a diferentes entornos de mercado a través de la puesta a punto y optimización de parámetros.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD) //A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket. // hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both // Performance n=input(title="period",defval=500) n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) n1=wma(diff,sqn) n2=wma(diff1,sqn) c=n1>n2?green:red ma=plot(n1,color=c) // RSi and Moving averages length = input( 14 ) overSold = input( 70) overBought = input( 30) point = 0.0001 dev= 2 fastLength = input(59) fastLengthL = input(82) slowLength = input(96) slowLengthL = input(95) price = close mafast = ema(price, fastLength) mafastL= ema(price, fastLengthL) maslow = ema(price, slowLength) maslowL = ema(price, slowLengthL) vrsi = rsi(price, length) cShort = (crossunder(vrsi, overBought)) condDown = n2 >= n1 condUp = condDown != true closeLong = (crossover(vrsi, overSold)) closeShort = cShort // Strategy Logic longCondition = n1> n2 shortCondition = longCondition != true col =condUp ? lime : condDown ? red : yellow plot(n1,color=col,linewidth=3) if (not na(vrsi)) if shortCondition if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry strategy.entry("SYS-SHORT", strategy.short, comment="short") strategy.close("SYS-SHORT", when=closeShort) //output logic if (not na(vrsi)) if longCondition // swing condition if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry strategy.entry("SYS-LONG", strategy.long, comment="long") strategy.close("SYS-LONG", when=closeLong) //output logic // Stop Loss sl = input(75) Stop = sl * 10 Q = 100 strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop) strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)