Strategi ini menggabungkan beberapa indikator seperti EMA, MACD, VWAP, dan RSI untuk menangkap peluang perdagangan probabilitas tinggi. Strategi ini menggunakan EMA untuk menentukan arah tren, MACD untuk momentum, VWAP untuk volume, dan RSI untuk kondisi overbought dan oversold.
Strategi ini menggabungkan beberapa indikator untuk menilai kondisi pasar dan menghasilkan sinyal perdagangan sambil menggunakan trailing stop loss untuk melindungi keuntungan. Parameter strategi dapat disesuaikan sesuai dengan preferensi pengguna, meningkatkan fleksibilitas strategi. Namun, strategi dapat berkinerja buruk di pasar yang bergolak dan menghadapi penarikan yang lebih besar selama pembalikan tren, sehingga perlu dioptimalkan dan ditingkatkan untuk berbagai pasar dan instrumen. Optimasi masa depan dapat mempertimbangkan menambahkan lebih banyak kondisi penyaringan, metode stop loss dinamis, optimasi parameter, dan ukuran posisi untuk meningkatkan stabilitas dan profitabilitas strategi.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Intraday Strategy", overlay=true) // Input parameters emaLength = input.int(50, title="EMA Length") macdShort = input.int(12, title="MACD Short Period") macdLong = input.int(26, title="MACD Long Period") macdSignal = input.int(9, title="MACD Signal Period") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level") rsiOversold = input.int(30, title="RSI Oversold Level") risk = input.float(1, title="Risk Percentage", minval=0.1, step=0.1) trailOffset = input.float(0.5, title="Trailing Stop Offset", minval=0.1, step=0.1) // Calculating indicators ema = ta.ema(close, emaLength) [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) rsi = ta.rsi(close, rsiLength) vwap = ta.vwap(close) // Entry conditions longCondition = ta.crossover(macdLine, signalLine) and close > ema and rsi < rsiOverbought and close > vwap shortCondition = ta.crossunder(macdLine, signalLine) and close < ema and rsi > rsiOversold and close < vwap // Exit conditions longExitCondition = ta.crossunder(macdLine, signalLine) or close < ema shortExitCondition = ta.crossover(macdLine, signalLine) or close > ema // Position sizing based on risk percentage capital = strategy.equity positionSize = (capital * (risk / 100)) / close // Executing trades if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (shortCondition) strategy.entry("Short", strategy.short, qty=1) if (longExitCondition) strategy.close("Long") if (shortExitCondition) strategy.close("Short") // Trailing stop loss if (strategy.position_size > 0) strategy.exit("Trailing Stop Long", from_entry="Long", trail_price=close, trail_offset=trailOffset) if (strategy.position_size < 0) strategy.exit("Trailing Stop Short", from_entry="Short", trail_price=close, trail_offset=trailOffset) // Plotting indicators plot(ema, title="EMA", color=color.blue) hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi, title="RSI", color=color.purple) plot(vwap, title="VWAP", color=color.orange)