Double Exponential Moving Average RSI Trading Strategy
The strategy is named "Double Exponential Moving Average RSI Trading Strategy". It uses Double EMA and Relative Strength Index (RSI) as the main trading indicators to implement automated trading.

Overview
The strategy is named "Double Exponential Moving Average RSI Trading Strategy". It uses Double EMA and Relative Strength Index (RSI) as the main trading indicators to implement automated trading.
Strategy Principle
The strategy first calculates the Double Exponential Moving Average (MA) of the price, then calculates the RSI based on MA, and further calculates the Exponential Moving Average of RSI (Smooth). It generates buy signals when RSI crosses above its moving average and sell signals when RSI crosses below its moving average. Optionally, the strategy also sets parameters for maximum number of trades per day, trade size as percentage of equity, trading time session, take profit and stop loss in points, and trailing stop in points for risk control.
Strategy Strengths
- Double EMA responds faster to price changes and filters out some noise.
- Calculating RSI based on MA makes it more stable and avoids false trades.
- The moving average of RSI helps confirming trading signals and avoiding false breakouts.
- Setting maximum number of trades per day helps controlling daily risk.
- Setting trade size as percentage of equity avoids oversized single trade loss.
- Setting trading time session avoids key time nodes and controls liquidity risk.
- Take profit and stop loss in points help limiting single trade P&L.
- Trailing stop in points helps locking in floating profits and reducing drawdowns.
Strategy Risks
- Double EMA responds slower to market events, missing short-term trading opportunities.
- RSI is prone to forming false death/golden cross signals. Needs confirming with other indicators for prudent trading.
- Fixed percentage of equity cannot adapt to varying market volatility, risks insufficient fund utilization.
- Fixed stop loss/profit targets fail to adapt to different products and market conditions, risks premature exit.
- Trailing stop tends to trigger too often in choppy markets.
Counter measures:
- Shorten MA periods to improve sensitivity.
- Add other indicators like volume to filter signals.
- Dynamically adjust trade size.
- Adapt stop loss/profit targets based on market volatility.
- Relax trailing stop loss points appropriately.
Optimization Directions
- Test different short/long period Double EMA combinations to find optimum parameters.
- Test RSI calculation period parameters to improve death/golden cross signal reliability.
- Add indicators like volume, Bollinger Bands to filter signal noise.
- Dynamically adjust trade size and stop loss/profit targets based on daily close price, volatility etc.
- Optimize trailing stop mechanisms for different products and market environments.
Summary
The strategy has clear mechanical rules and high reliability overall, suitable for medium-to-long-term trending products. When optimized, it can become a basic trend following mechanical strategy with controllable risks, worth further evaluation on live performance.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1_close | 0 | src: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4 |
| v_input_2 | 21 | ma_length |
| v_input_3 | 4 | rsi_length |
| v_input_4 | 4 | rsi_smooth |
| v_input_5 | 6 | max_order_per_day |
| v_input_6 | false | trade_size_as_equity_factor |
| v_input_7 | 10000 | trade_size |
| v_input_8 | 100000 | take_profit_in_points |
| v_input_9 | 100000 | stop_loss_in_points |
| v_input_10 | 150 | trail_in_points |
| v_input_11 | true | USE_SESSION |
| v_input_12 | 0400-1500 | Trade Session: |
Source Pine Script
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)
ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)
max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)
USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))
buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)
strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)
strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)Published by ChaoZhang on the FMZ strategy square · last modified 2024-01-30. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Double-Exponential-Moving-Average-RSI-Trading-Strategy.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- EMA and Bollinger Bands Breakout StrategyPine Script · Breakout · 1h
- Momentum Breakout Mean Reversion StrategyPine Script · Breakout · 1h
- Momentum Breakout Moving Average StrategyPine Script · Breakout · 1d
- Momentum Breakout Trading Strategy 440964Pine Script · Breakout · 5m
- Momentum Breakthrough TTM StrategyPine Script · Breakout · 1d
- Moving Average Crossover and Upper Rail Breakthrough Impulse StrategyPine Script · Breakout · 1m