
This strategy is a comprehensive trend-following trading system that combines multiple technical indicators to identify market trends and momentum while incorporating a dynamic risk management mechanism. The strategy confirms trading signals through the coordination of moving average crossovers, Relative Strength Index (RSI), and Moving Average Convergence Divergence (MACD), while using the Average True Range (ATR) to dynamically adjust stop-loss positions for adaptive risk management.
The core logic is built on cross-validation of multiple technical indicators. First, it identifies potential trend turning points through the crossover of fast exponential moving average (EMA20) and slow exponential moving average (EMA50). Second, it uses the RSI indicator to confirm whether prices are in overbought or oversold zones, avoiding counter-trend trading in extreme areas. Third, it incorporates MACD as a momentum confirmation tool, validating trend momentum through histogram polarity. Finally, it integrates an ATR-based dynamic stop-loss system that automatically adjusts stop distances based on market volatility. The strategy also includes an optional volume filter to confirm adequate market participation.
This is a well-designed trend-following strategy that enhances trading signal reliability through the synergy of multiple technical indicators and features a professional risk management system. The strategy offers strong scalability, suitable for both intraday trading and longer-term trend capture. Through the suggested optimization directions, there is room for further improvement. Before live implementation, it is recommended to thoroughly validate parameter settings in a backtesting environment and make targeted adjustments based on specific market characteristics.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © blockchaindomain719
//@version=6
strategy("The Money Printer v2", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
// === INPUTS ===
ema1_length = input(20, "Fast EMA")
ema2_length = input(50, "Slow EMA")
rsi_length = input(14, "RSI Length")
rsi_overbought = input(70, "RSI Overbought")
rsi_oversold = input(30, "RSI Oversold")
macd_fast = input(12, "MACD Fast")
macd_slow = input(26, "MACD Slow")
macd_signal = input(9, "MACD Signal")
atr_length = input(14, "ATR Length")
atr_mult = input(2.5, "ATR Multiplier for Stop-Loss")
trailing_mult = input(3.5, "Trailing Stop Multiplier")
use_volume = input(true, "Use Volume Filter?")
volume_mult = input(2.0, "Min Volume Multiplier")
capital_risk = input(2.0, "Risk Per Trade (%)") / 100
// === CALCULATE INDICATORS ===
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
rsi = ta.rsi(close, rsi_length)
macd_line = ta.ema(close, macd_fast) - ta.ema(close, macd_slow)
macd_signal_line = ta.ema(macd_line, macd_signal)
macd_hist = macd_line - macd_signal_line
atr = ta.atr(atr_length)
volume_filter = not na(volume) and volume > ta.sma(volume, 20) * volume_mult
// === ENTRY CONDITIONS ===
longEntry = ta.crossover(ema1, ema2) and rsi > rsi_oversold and macd_hist > 0 and (not use_volume or volume_filter)
shortEntry = ta.crossunder(ema1, ema2) and rsi < rsi_overbought and macd_hist < 0 and (not use_volume or volume_filter)
// === DYNAMIC RISK MANAGEMENT ===
capital = strategy.equity
risk_amount = capital * capital_risk
trade_size = risk_amount / math.max(atr * atr_mult, 1)
// Stop-Loss & Trailing Stop Calculation
longSL = close - (atr * atr_mult)
shortSL = close + (atr * atr_mult)
longTS = close - (atr * trailing_mult)
shortTS = close + (atr * trailing_mult)
// === EXECUTE TRADES ===
if longEntry
strategy.entry("Long", strategy.long, qty=trade_size)
strategy.exit("Trailing Stop", from_entry="Long", stop=longTS)
if shortEntry
strategy.entry("Short", strategy.short, qty=trade_size)
strategy.exit("Trailing Stop", from_entry="Short", stop=shortTS)
// === ALERTS ===
alertcondition(longEntry, title="BUY Signal", message="💎 Money Printer Bot: Buy Now!")
alertcondition(shortEntry, title="SELL Signal", message="🔥 Money Printer Bot: Sell Now!")
// === PLOTTING INDICATORS ===
plot(ema1, title="Fast EMA", color=color.blue, linewidth=2)
plot(ema2, title="Slow EMA", color=color.orange, linewidth=2)
// RSI Indicator
hline(rsi_overbought, "RSI Overbought", color=color.red)
hline(rsi_oversold, "RSI Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)
// MACD Histogram
plot(macd_hist, title="MACD Histogram", color=color.green, style=plot.style_columns)
// ATR Visualization
plot(atr, title="ATR", color=color.gray)
// Buy & Sell Markers
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL")