Strategi ini dinamakan
Sinyal kemasukan strategi ini terutamanya ditentukan oleh penunjuk RSI dan persilangan MA. Parameter RSI ditetapkan kepada 2 tempoh untuk menangkap dengan cepat situasi overbought dan oversold untuk peluang pembalikan. MA pantas dan MA perlahan ditetapkan kepada 50 dan 200 tempoh masing-masing untuk mengenal pasti arah trend. Khususnya, logik kemasukan adalah:
Masuk panjang: MA pantas melintasi di atas MA perlahan, harga di atas MA perlahan, dan RSI di bawah tahap oversold (default 10%); Pendaftaran pendek: MA pantas melintasi di bawah MA perlahan, harga di bawah MA perlahan, dan RSI di atas tahap overbought (default 90%).
Di samping itu, terdapat penapis turun naik pilihan dalam strategi. Ia mengira perbezaan antara cerun MAs cepat dan perlahan. Posisi hanya akan dibuka apabila perbezaan melebihi ambang. Tujuannya adalah untuk mengelakkan membuka kedudukan apabila tidak ada arah yang jelas semasa turun naik pasaran.
Di sisi keluar, strategi ini menggunakan peratusan kerugian berhenti. Berdasarkan peratusan input, ia mengira harga kerugian berhenti digabungkan dengan saiz tanda, untuk menyesuaikan kerugian berhenti secara dinamik.
Kelebihan utama strategi ini ialah:
Terdapat juga beberapa risiko dalam strategi ini:
Arah pengoptimuman untuk risiko adalah:
Arah pengoptimuman untuk strategi ini adalah:
Secara amnya, ini adalah trend yang agak stabil mengikuti strategi. Dengan menggabungkan penunjuk RSI dan MA berganda, ia memastikan kestabilan tertentu sambil menangkap peluang pembalikan trend yang lebih jelas. Penapis turun naik mengelakkan beberapa risiko, dan kerugian peratusan juga mengawal kerugian perdagangan tunggal dengan berkesan. Strategi ini boleh digunakan sebagai strategi generik pelbagai simbol, dan juga boleh dioptimumkan pada parameter dan model untuk simbol tertentu untuk mencapai hasil yang lebih baik.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // Scalping strategy // © Lukescream and Ninorigo // (original version by Lukescream - lastest versions by Ninorigo) - v1.3 // //@version=4 strategy(title="Scalping using RSI 2 indicator", shorttitle="RSI 2 Strategy", overlay=true, pyramiding=0, process_orders_on_close=false) var bool ConditionEntryL = false var bool ConditionEntryS = false //*********** // Costants //*********** def_start_date = timestamp("01 Jan 2021 07:30 +0000") def_end_date = timestamp("01 Dec 2024 07:30 +0000") def_rsi_length = 2 def_overbought_value = 90 def_oversold_value = 10 def_slow_ma_length = 200 def_fast_ma_length = 50 def_ma_choice = "EMA" def_tick = 0.5 def_filter = true def_trailing_stop = 1 //*********** // Change the optional parameters //*********** start_time = input(title="Start date", defval=def_start_date, type=input.time) end_time = input(title="End date", defval=def_end_date, type=input.time) // RSI src = input(title="Source", defval=close, type=input.source) rsi_length = input(title="RSI Length", defval=def_rsi_length, minval=1, type=input.integer) overbought_threshold = input(title="Overbought threshold", defval=def_overbought_value, type=input.float) oversold_threshold = input(title="Oversold threshold", defval=def_oversold_value, type=input.float) // Moving average slow_ma_length = input(title="Slow MA length", defval=def_slow_ma_length, type=input.integer) fast_ma_length = input(title="Fast MA length", defval=def_fast_ma_length, type=input.integer) ma_choice = input(title="MA choice", defval="EMA", options=["SMA", "EMA"]) // Input ticker tick = input(title="Ticker size", defval=def_tick, type=input.float) filter = input(title="Trend Filter", defval=def_filter, type=input.bool) // Trailing stop (%) ts_rate = input(title="Trailing Stop %", defval=def_trailing_stop, type=input.float) //*********** // RSI //*********** // Calculate RSI up = rma(max(change(src), 0), rsi_length) down = rma(-min(change(src), 0), rsi_length) rsi = (down == 0 ? 100 : (up == 0 ? 0 : 100-100/(1+up/down))) //*********** // Moving averages //*********** slow_ma = (ma_choice == "SMA" ? sma(close, slow_ma_length) : ema(close, slow_ma_length)) fast_ma = (ma_choice == "SMA" ? sma(close, fast_ma_length) : ema(close, fast_ma_length)) // Show the moving averages plot(slow_ma, color=color.white, title="Slow MA") plot(fast_ma, color=color.yellow, title="Fast MA") //*********** // Strategy //*********** if true // Determine the entry conditions (only market entry and market exit conditions) // Long position ConditionEntryL := (filter == true ? (fast_ma > slow_ma and close > slow_ma and rsi < oversold_threshold) : (fast_ma > slow_ma and rsi < oversold_threshold)) // Short position ConditionEntryS := (filter == true ? (fast_ma < slow_ma and close < slow_ma and rsi > overbought_threshold) : (fast_ma < slow_ma and rsi > overbought_threshold)) // Calculate the trailing stop ts_calc = close * (1/tick) * ts_rate * 0.01 // Submit the entry orders and the exit orders // Long position if ConditionEntryL strategy.entry("RSI Long", strategy.long) // Exit from a long position strategy.exit("Exit Long", "RSI Long", trail_points=0, trail_offset=ts_calc) // Short position if ConditionEntryS strategy.entry("RSI Short", strategy.short) // Exit from a short position strategy.exit("Exit Short", "RSI Short", trail_points=0, trail_offset=ts_calc) // Highlights long conditions bgcolor (ConditionEntryL ? color.navy : na, transp=60, offset=1, editable=true, title="Long position band") // Highlights short conditions bgcolor (ConditionEntryS ? color.olive : na, transp=60, offset=1, editable=true, title="Short position band")