This strategy constructs trading signals based on moving averages, Hull moving averages and the Relative Strength Index (RSI). It belongs to a typical opportunity tracking strategy that can automatically identify market opportunities and switch between long and short positions. It is suitable for medium and short term trading.
This strategy uses the combination of EMA, Hull and RSI across timeframes to capture medium and short term trading opportunities. Entry signals must meet criteria in trend, momentum and overbought/oversold dimensions simultaneously in order to filter out false signals. The strategy can be further enhanced through parameter optimization and introducing more auxiliary indicators to improve stability and trading performance.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bitduke //@version=4 strategy(shorttitle="EHR", title="Simple EMA_Hull_RSI", overlay=false, calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=1000, currency=currency.USD, initial_capital=1000, commission_type=strategy.commission.percent, commission_value=0.075) // EMA len = input(minval=1, title="EMA Length", defval=50) src = input(close, title="EMA Source") final_ema = ema(src, len) plot(final_ema, color=color.red, title="EMA") overbought = input(60, title="overbought value") oversold = input(45, title="oversold value") overbought_signal = rsi(close, 14) > overbought oversold_signal = rsi(close, 14) < oversold barcolor(overbought_signal ? color.black : na) barcolor(oversold_signal ? color.blue : na) // Hull MA n = input(title="Hull Length", defval=7) 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?color.green:color.red ma=plot(n1,color=c) // Strategy Logic longCondition = overbought_signal and crossover(n1,final_ema) shortCondition = oversold_signal and crossover(final_ema,n1) strategy.entry("EHR_Long", strategy.long, when=longCondition) strategy.entry("EHR_Short", strategy.short, when=shortCondition)