Strategi ini adalah sistem dagangan yang bertindih penunjuk pelbagai peringkat berdasarkan Indeks Kekuatan Relatif (RSI). Beroperasi dalam tetingkap dagangan tertentu, ia mengenal pasti peluang dagangan melalui isyarat overbought dan oversold RSI, digabungkan dengan mekanisme penyesuaian kedudukan dinamik yang menggunakan pendekatan kemasukan berskala semasa pergerakan pasaran yang tidak menguntungkan. Strategi ini melaksanakan pengambilan keuntungan berdasarkan sasaran harga kemasukan purata.
Strategi ini beroperasi berdasarkan komponen teras berikut: 1. Pengiraan RSI menggunakan 14 tempoh standard dengan harga penutupan sebagai data sumber 2. tingkap perdagangan dikawal antara 2-4 jam, boleh diselaraskan berdasarkan ciri pasaran 3. Isyarat kemasukan berdasarkan RSI di bawah 30 (terlalu dijual) dan di atas 70 (terlalu dibeli) tahap Pembinaan kedudukan termasuk kedudukan awal dan tahap pelarasan dinamik 5. Scaling mekanisme mencetuskan apabila harga bergerak negatif oleh 1 mata 6. mengambil keuntungan ditetapkan pada 1.5 mata daripada harga kemasukan purata
Strategi ini membentuk sistem perdagangan yang agak lengkap melalui gabungan penunjuk RSI dan mekanisme kemasukan berskala. Kelebihan utamanya terletak pada mekanisme penapisan isyarat pelbagai peringkat dan pendekatan pengurusan kedudukan yang fleksibel, sementara perhatian perlu diberikan kepada risiko pasaran trend dan isu pengoptimuman parameter.
/*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))