Strategi ini adalah sistem trend-mengikuti yang menggabungkan isyarat oversold RSI, purata bergerak jangka panjang, dan pengesahan jumlah. Ia bertujuan untuk menangkap kedudukan panjang semasa keadaan oversold dalam trend menaik yang ditubuhkan, disahkan oleh pengembangan jumlah. Strategi ini menggunakan RSI 10 tempoh, SMA dua 250 dan 500 tempoh, dan purata bergerak jumlah 20 tempoh sebagai penunjuk teras.
Logik terasnya adalah berdasarkan tiga syarat utama yang bekerja selaras:
Posisi panjang dimulakan apabila ketiga-tiga syarat dipenuhi secara serentak. Isyarat keluar dicetuskan oleh salib kematian (MA yang lebih pendek melintasi MA yang lebih panjang). Di samping itu, stop-loss 5% dilaksanakan untuk pengurusan risiko.
Ini adalah strategi trend yang dirancang dengan baik dengan logik yang ketat, menyeimbangkan pulangan dan risiko dengan berkesan melalui pelbagai penunjuk teknikal. Kekuatannya utama terletak pada sistem pengesahan isyarat dan pengurusan risiko yang komprehensif, walaupun ia menghadapi cabaran dalam penapisan berlebihan dan latensi. Melalui arah pengoptimuman yang dicadangkan, strategi menunjukkan potensi untuk meningkatkan prestasi dalam aplikasi praktikal.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/ // © wielkieef //@version=5 strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) // Rsi rsi_lenght = input.int(10, title='RSI lenght', minval=0) rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght) rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght) rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down) rsi_overs = rsi_value <= 30 rsi_overb = rsi_value >= 70 // Volume vol_sma_length = input.int(20, title='Volume lenght ', minval=1) Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5 //SMA1 lengthSMA1 = input(250, title="Lenght SMA 1") SMA1 = ta.sma(close, lengthSMA1) //plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250") //SMA2 lengthSMA2 = input(500, title="Lenght SMA 2") SMA2 = ta.sma(close, lengthSMA2) //plot(SMA2, color=#9803f5, linewidth=1, title="SMA500") //Entry Logic Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt ) if Long_cond strategy.entry('Long', strategy.long) //Close Logic Long_close = ta.crossunder(SMA1,SMA2) if Long_close strategy.close("Long") //Bar colors Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray barcolor(color=Bar_color) // Rsi value Plotshapes plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0)) plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0)) plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0)) //Stop-Loss// this code is from author RafaelZioni, modified by wielkieef pera(pcnt) => strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5) los = pera(stoploss) strategy.exit('SL', loss=los) // by wielkieef