
The “MACD RSI Ichimoku Momentum Trend Following Long Strategy” is a quantitative trading strategy that integrates MACD, RSI, and Ichimoku indicators. By analyzing signals from MACD, RSI, and Ichimoku Cloud, the strategy aims to capture market trends and momentum, enabling trend tracking and timing of trades. The strategy allows flexible settings for indicator parameters and trading periods, accommodating different trading styles and markets.
The core of this strategy lies in the combined use of MACD, RSI, and Ichimoku indicators: 1. MACD, composed of the difference between a fast and slow moving average, is used to determine trend direction and momentum changes. A bullish signal is generated when the MACD line crosses above the signal line, and a bearish signal when it crosses below. 2. RSI measures the magnitude of price changes over a period, indicating overbought or oversold conditions. An RSI below 30 may indicate oversold conditions, while above 70 may suggest overbought conditions. 3. The Ichimoku Cloud, consisting of the Tenkan-sen, Kijun-sen, Senkou Span A, and Senkou Span B lines, provides multilateral information such as support, resistance, and trend strength. The strategy enters a long position when MACD is bullish, price is above the Cloud, and RSI is not overbought. It closes the position when MACD forms a bearish crossover or price breaks below the Cloud.
The “MACD RSI Ichimoku Momentum Trend Following Long Strategy” is a powerful quantitative trading strategy that comprehensively evaluates trends and momentum using MACD, RSI, and Ichimoku indicators. It demonstrates good ability to capture trends and control rhythm in directional markets. Through parameter optimization and risk control measures, this strategy can become a potent tool for seizing market opportunities and achieving robust returns.
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @ Julien_Eche
//@version=5
strategy("MACD RSI Ichimoku Strategy", overlay=true)
string t1 = ("If checked, this strategy is suitable for those who buy and sell. If unchecked, it is suitable for those who only want to take long positions—buying and closing buys.")
start_date = input(timestamp("1975-01-01T00:00:00"), title="Start Date")
end_date = input(timestamp("2099-01-01T00:00:00"), title="End Date")
// Input settings for Ichimoku Cloud lengths
length1 = input.int(9, title="Tenkan-sen Length", minval=1)
length2 = input.int(26, title="Kijun-sen Length", minval=1)
length3 = input.int(52, title="Senkou Span Length", minval=1)
// Calculate Ichimoku Cloud components based on input lengths
tenkanSen = ta.sma(high + low, length1) / 2
kijunSen = ta.sma(high + low, length2) / 2
senkouSpanA = ((tenkanSen + kijunSen) / 2)[length2]
senkouSpanB = ta.sma(high + low, length3) / 2
// Input settings for MACD parameters
macdFastLength = input(12, title="MACD Fast Length")
macdSlowLength = input(26, title="MACD Slow Length")
macdSignalLength = input(9, title="MACD Signal Length")
// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
// Input settings for RSI length
rsiLength = input(14, title="RSI Length")
// Calculate RSI
rsiValue = ta.rsi(close, rsiLength)
// Determine Buy/Sell behavior based on input
buySell = input(false, title="Buy/Sell", tooltip=t1)
// More sensitive entry conditions (Buy Only)
canEnter = ta.crossover(tenkanSen, kijunSen) or (close > senkouSpanA and close > senkouSpanB and macdLine > signalLine and rsiValue < 70)
// Enter long position (Buy) with time condition
if (canEnter)
strategy.entry("Buy", strategy.long)
// More sensitive exit conditions (Close Buy) with time condition
canExit = ta.crossunder(tenkanSen, kijunSen) or (close < senkouSpanA and close < senkouSpanB)
// Determine exit behavior based on user input
if buySell
// Sell to close long position (Short) with time condition
if (canExit )
strategy.entry("Sell", strategy.short)
else
// Sell to exit long position (Buy/Sell) with time condition
if (canExit )
strategy.close("Buy", comment="Sell for exit")