Strategi ini adalah sistem perdagangan yang tumpang tindih indikator multi-tingkat berdasarkan Indeks Kekuatan Relatif (RSI). Beroperasi dalam jendela perdagangan tertentu, ia mengidentifikasi peluang perdagangan melalui sinyal overbought dan oversold RSI, dikombinasikan dengan mekanisme penyesuaian posisi dinamis yang menggunakan pendekatan masuk berskala selama pergerakan pasar yang merugikan. Strategi menerapkan pengambilan keuntungan berdasarkan target harga masuk rata-rata.
Strategi ini beroperasi berdasarkan komponen inti berikut: 1. Perhitungan RSI menggunakan 14 periode standar dengan harga penutupan sebagai data sumber Jendela perdagangan dikontrol antara 2-4 jam, dapat disesuaikan berdasarkan karakteristik pasar 3. Sinyal masuk berdasarkan RSI di bawah 30 (terlalu banyak dijual) dan di atas 70 (terlalu banyak dibeli) 4. Pembangunan posisi termasuk posisi awal dan tingkat penyesuaian dinamis 5. Scaling mekanisme diaktifkan ketika harga bergerak merugikan oleh 1 poin 6. mengambil keuntungan ditetapkan pada 1,5 poin dari harga masuk rata-rata
Strategi ini membentuk sistem perdagangan yang relatif lengkap melalui kombinasi indikator RSI dan mekanisme entri berskala. Keuntungannya utama terletak pada mekanisme penyaringan sinyal multi-level dan pendekatan manajemen posisi yang fleksibel, sementara perhatian perlu diberikan pada risiko pasar tren dan masalah optimasi parameter. Kinerja keseluruhan strategi dapat ditingkatkan lebih lanjut melalui peningkatan seperti menambahkan filter tren dan mengoptimalkan mekanisme stop loss.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("TonyM RSI", overlay=true) // Input Settings rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window") endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window") // RSI Calculation change = ta.change(rsiSourceInput) up = ta.rma(math.max(change, 0), rsiLengthInput) down = ta.rma(-math.min(change, 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Time Filter inTradingWindow = (hour >= startHour and hour < endHour) // Strategy Settings buyLevel = 30 sellLevel = 70 scaleDistance = 1.0 // Distance in points to add to the position takeProfitPoints = 1.5 // Profit target from average price initialQty = 1 // Initial trade size scalingQty = 1 // Additional trade size for scaling // Trade Logic if inTradingWindow // Entry Logic if rsi <= buyLevel and strategy.position_size == 0 strategy.entry("Buy", strategy.long, qty=initialQty) if rsi >= sellLevel and strategy.position_size == 0 strategy.entry("Sell", strategy.short, qty=initialQty) // Scaling Logic if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance strategy.entry("Scale Buy", strategy.long, qty=scalingQty) if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance strategy.entry("Scale Sell", strategy.short, qty=scalingQty) // Exit Logic (based on average price) if strategy.position_size > 0 strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints) if strategy.position_size < 0 strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints) // Plot RSI plot(rsi, "RSI", color=color.blue, linewidth=1) rsiUpperBand = hline(70, "RSI Upper Band", color=color.red) rsiLowerBand = hline(30, "RSI Lower Band", color=color.green) fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))