Strategi Triple SuperTrend dan Stoch RSI adalah strategi perdagangan kuantitatif yang menggabungkan beberapa trend timeframe berikut indikator SuperTrend dan sinyal overbought/oversold dari indikator Stoch RSI. Strategi ini menggunakan tiga indikator SuperTrend dengan pengaturan parameter yang berbeda untuk menentukan tren pasar dan menggabungkan sinyal Stoch RSI untuk menyaring sinyal perdagangan. Secara khusus, ketika dua indikator SuperTrend yang lebih cepat memberikan sinyal beli/jual bersamaan, jika indikator Stoch RSI mengkonfirmasi, posisi panjang/pendek yang sesuai akan diambil.
Logika inti dari strategi Triple SuperTrend dan Stoch RSI adalah menggabungkan indikator SuperTrend dengan parameter yang berbeda dan indikator Stoch RSI untuk penyaringan sinyal perdagangan untuk meningkatkan kualitas sinyal dan mengurangi sinyal palsu.
Pertama, strategi mengadopsi tiga indikator SuperTrend dengan pengaturan parameter yang bervariasi untuk menentukan tren pasar utama. Tiga indikator SuperTrend memiliki parameter mulai dari jangka waktu cepat hingga lambat, untuk menangkap perubahan tren pada tingkat yang berbeda. Ketika indikator SuperTrend tercepat dan kedua tercepat memberikan sinyal beli / jual bersamaan, kami membuat penilaian awal bahwa sinyal tersebut memiliki beberapa keandalan.
Kedua, indikator Stoch RSI diperkenalkan untuk menentukan apakah pasar terlalu banyak dibeli atau terlalu banyak dijual ketika sinyal terjadi. Indikator Stoch RSI menggabungkan kekuatan indikator RSI dan Stochastic, memungkinkan penilaian yang efektif tentang kondisi pasar yang terlalu banyak dibeli / terlalu banyak dijual. Ketika sinyal SuperTrend tercepat dan tercepat kedua sejajar dengan sinyal Stoch RSI, sinyal beli / jual akhir dapat dipicu.
Melalui kombinasi beberapa indikator dan kerangka waktu, Triple SuperTrend dan strategi Stoch RSI dapat secara efektif menyaring kebisingan pasar, meningkatkan keandalan sinyal, dan mengurangi perdagangan yang salah.
Keuntungan terbesar dari strategi Triple SuperTrend dan Stoch RSI terletak pada kombinasi efektif dari beberapa indikator dan kerangka waktu, yang membawa manfaat berikut:
Kombinasi tiga indikator SuperTrend dan Stoch RSI dapat sangat mengurangi kebisingan dan sinyal palsu yang datang dengan indikator individu.
Meningkatkan rasio sinyal yang menguntungkan. Meskipun penurunan frekuensi sinyal, rasio sinyal yang menguntungkan melihat peningkatan yang signifikan.
Cocok untuk pasar tren. Filter multi-frame waktu memudahkan menangkap tren jangka menengah hingga panjang, cocok dengan lingkungan pasar tren dengan baik.
Pengoptimalan mudah untuk kinerja yang lebih baik. indikator triple memungkinkan kemungkinan yang lebih luas untuk optimasi parameter.
Parameter yang dapat disesuaikan sesuai dengan gaya perdagangan pribadi. Parameter dapat diatur secara bebas agar lebih sesuai dengan gaya perdagangan seseorang.
Ada juga beberapa risiko yang terkait dengan strategi Triple SuperTrend dan Stoch RSI:
Mengurangi frekuensi sinyal. Mekanisme filter multilayer secara signifikan mengurangi frekuensi perdagangan strategi.
Kecenderungan untuk melewatkan beberapa sinyal potensial. sifat konservatif membuat strategi cenderung kehilangan beberapa peluang menguntungkan.
Meningkatnya ketergantungan parameter. lebih banyak indikator berarti kesulitan yang lebih besar dalam optimasi.
Kemampuan mengikuti tren yang terbatas Kombinasi beberapa kerangka waktu juga membatasi fleksibilitas mengikuti tren dari strategi.
Untuk mengatasi risiko-risiko ini, langkah-langkah optimalisasi seperti menyesuaikan parameter indikator dan memperkenalkan indikator tambahan dapat diadopsi untuk meningkatkan pengendalian risiko sekaligus meningkatkan kualitas profitabilitas.
Masih ada ruang untuk optimasi lebih lanjut dari Triple SuperTrend dan strategi Stoch RSI:
Sesuaikan parameter indikator untuk kombinasi terbaik. Lebih banyak set parameter dapat diuji untuk menemukan yang optimal.
Memperkenalkan stop loss/take profit untuk pengendalian risiko yang lebih baik.
Masukkan lebih banyak indikator untuk validasi sinyal, misalnya indikator volume.
Membangun kemampuan adaptif untuk mengoptimalkan parameter secara otomatis sesuai dengan perubahan dinamika pasar.
Menggabungkan algoritma pembelajaran mesin untuk prediksi kinerja, menilai akurasi sinyal.
Dengan optimasi terus menerus, strategi Triple SuperTrend dan Stoch RSI dapat berkembang menjadi sistem perdagangan yang stabil dan efisien, memberikan alfa yang cukup.
Strategi Triple SuperTrend dan Stoch RSI berhasil menggabungkan analisis multi-frame timeframe dan penilaian overbought/oversold menjadi strategi trading trend berikut yang unik. Strategi ini mempertahankan dua keuntungan trend berikut dan penyaringan indikator, meningkatkan sinyal menguntungkan sambil mengurangi sinyal palsu. Meskipun risiko dan ruang optimasi masih ada, profitabilitas dan stabilitasnya dapat ditingkatkan lebih lanjut melalui penyesuaian parameter dan optimasi strategi. Secara keseluruhan, strategi Triple SuperTrend dan Stoch RSI memberikan pilihan strategi trading kuantitatif berkualitas tinggi.
/*backtest start: 2022-11-29 00:00:00 end: 2023-04-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © M3RZI //@version=4 strategy("3x Supertrend and Stoch RSI", overlay = true, max_bars_back = 1000) //INPUTS STATRLENGTH1 = input(10, title = "Fast Supertrend ATR Length", type = input.integer, group = "SUPERTREND SETTINGS") STATRMULT1 = input(1, title = "Fast Supertrend ATR Multiplier", type = input.float, group = "SUPERTREND SETTINGS") STATRLENGTH2 = input(11, title = "Medium Supertrend ATR Length", type = input.integer, group = "SUPERTREND SETTINGS") STATRMULT2 = input(2, title = "Medium Supertrend ATR Multiplier", type = input.float, group = "SUPERTREND SETTINGS") STATRLENGTH3 = input(12, title = "Slow Supertrend ATR Length", type = input.integer, group = "SUPERTREND SETTINGS") STATRMULT3 = input(3, title = "Slow Supertrend ATR Multiplier", type = input.float, group = "SUPERTREND SETTINGS") stochK = input(3, title = "K (Stochastic Fast)", type = input.integer, group = "STOCHASTIC RSI SETTINGS") stochD = input(3, title = "D (Signal Line)", type = input.integer, group = "STOCHASTIC RSI SETTINGS") rsiLength = input(14, title = "RSI Length", type = input.integer, group = "STOCHASTIC RSI SETTINGS") stochLength = input(14, title = "Stochastic Length", type = input.integer, group = "STOCHASTIC RSI SETTINGS") rsiSource = input(close, title = "RSI Source", type = input.source, group = "STOCHASTIC RSI SETTINGS") stochRestrictions = input(false, title = "Restrict crosses to overbought/oversold territory", type = input.bool, group = "STOCHASTIC RSI SETTINGS") overboughtLine = input(80, title = "Stochastic RSI Upper Band", type = input.integer, group = "STOCHASTIC RSI SETTINGS") oversoldLine = input(20, title = "Stochastic RSI Lower Band", type = input.integer, group = "STOCHASTIC RSI SETTINGS") EMALength = input(200, title = "EMA Length", type = input.integer, group = "EMA SETTINGS") SLStrategy = input("ATR Based", title = "Stop Loss Strategy", options = ["ATR Based"],type = input.string, group = "POSITION EXIT SETTINGS") SLATRLength = input(14, title = "Stop Loss ATR Length", type = input.integer, group = "POSITION EXIT SETTINGS") SLATRMult = input(2.7, title = "Stop Loss ATR Multiplier", type = input.float, group = "POSITION EXIT SETTINGS") TPStrategy = input("ATR Based", title = "Take Profit Strategy", options = ["ATR Based"],type = input.string, group = "POSITION EXIT SETTINGS") TPATRLength = input(14, title = "Take Profit ATR Length", type = input.integer, group = "POSITION EXIT SETTINGS") TPATRMult = input(1.6, title = "Take Profit ATR Multiplier", type = input.float, group = "POSITION EXIT SETTINGS") //SUPERTRENDS [superTrend1,dir1] = supertrend(STATRMULT1,STATRLENGTH1) [superTrend2,dir2] = supertrend(STATRMULT2,STATRLENGTH2) [superTrend3,dir3] = supertrend(STATRMULT3,STATRLENGTH3) directionST1 = dir1 == 1 and dir1[1] == 1 ? false : dir1 == -1 and dir1[1] == -1 ? true : na directionST2 = dir2 == 1 and dir2[1] == 1 ? false : dir2 == -1 and dir2[1] == -1 ? true : na directionST3 = dir3 == 1 and dir3[1] == 1 ? false : dir3 == -1 and dir3[1] == -1 ? true : na //STOCH RSI rsi = rsi(rsiSource, rsiLength) k = sma(stoch(rsi, rsi, rsi, stochLength), stochK) d = sma(k, stochD) //EMA ema = ema(close,EMALength) //CONDITIONS LONG AND SHORT var long = false var longCondition = false var short = false var shortCondition = false var drawing = false var TP = 0.0 var SL = 0.0 var middle = 0.0 var initial = 0 stopSize = atr(SLATRLength) * SLATRMult profitSize = atr(TPATRLength) * TPATRMult longStop = close - stopSize longProfit = close + profitSize current = close shortStop = close + stopSize shortProfit = close - profitSize barInitial = bar_index if stochRestrictions longCondition := close > ema and ((directionST1 == true and directionST2 == true) or (directionST2 == true and directionST3 == true)) and crossover(k,d) and k < oversoldLine and not long and not drawing shortCondition := close < ema and ((directionST1 == false and directionST2 == false) or (directionST2 == false and directionST3 == false)) and crossunder(k,d) and k > overboughtLine and not short and not drawing else longCondition := close > ema and ((directionST1 == true and directionST2 == true) or (directionST2 == true and directionST3 == true)) and crossover(k,d) and not long and not drawing shortCondition := close < ema and ((directionST1 == false and directionST2 == false) or (directionST2 == false and directionST3 == false)) and crossunder(k,d) and not short and not drawing if longCondition long := true short := false drawing := true TP := longProfit middle := current SL := longStop initial := barInitial strategy.entry("Long", strategy.long, 10) strategy.exit("Long exit","Long", limit = TP, stop = SL) alert("Long signal Supertrend \n Profit:"+tostring(TP)+"\Curret price:"+tostring(close)+"\Stop:"+tostring(SL),alert.freq_once_per_bar_close) //label.new(bar_index,low,text = "Long\nTP:"+tostring(TP)+"\nSL:"+tostring(SL)+"\nAbierto:"+tostring(current), yloc = yloc.belowbar, textcolor = color.white, color = color.green, size = size.small, style = label.style_label_up) if shortCondition short := true long := false drawing := true TP := shortProfit middle := current SL := shortStop initial := barInitial strategy.entry("Short", strategy.short, 10) strategy.exit("Short exit","Short",limit = TP , stop = SL) alert("Short signal Supertrend \n Profit:"+tostring(TP)+"\Curret price:"+tostring(close)+"\Stop:"+tostring(SL),alert.freq_once_per_bar_close) //label.new(bar_index,high,text = "Short\nTP:"+tostring(TP)+"\nSL:"+tostring(SL)+"\nAbierto:"+tostring(current), yloc = yloc.abovebar, textcolor = color.white, color = color.red, size = size.small, style = label.style_label_down) if long and (high[1] >= TP or low[1] <= SL) drawing := false long := false if high[1] >= TP label.new(bar_index[int((bar_index - initial)/2)],TP, text = "Win (Long)", textcolor = color.white, color = color.green, size = size.small, style = label.style_label_down) else label.new(bar_index[int((bar_index - initial)/2)],SL, text = "Lose (Long)", textcolor = color.white, color = color.red, size = size.small, style = label.style_label_up) if short and (low[1] <= TP or high[1] >= SL) drawing := false short := false if low[1] <= TP label.new(bar_index[int((bar_index - initial)/2)],TP, text = "Win (short)", textcolor = color.white, color = color.green, size = size.small, style = label.style_label_up) else label.new(bar_index[int((bar_index - initial)/2)],SL, text = "Lose (short)", textcolor = color.white, color = color.red, size = size.small, style = label.style_label_down) //STRATEGY //strategy.entry("buy", strategy.long, 10, when = longCondition) //strategy.exit("bracket", "buy", 10, limit = TP, stop = SL) //strategy.entry("short", strategy.long, 10, when = shortCondition) //strategy.exit("bracket", "short", 10, limit = TP, stop = SL) //DRAWING plotshape(longCondition, title = "Long Signal", location=location.belowbar, style=shape.labelup, color=color.green, textcolor=color.white, size=size.small, text="Long") plotshape(shortCondition, title = "Short Signal", location=location.abovebar, style=shape.labeldown, color=color.red, textcolor=color.white, size=size.small, text="Short") profitLine = plot(drawing and drawing[1] ? TP : na, title = "Take profit", color = color.green, style = plot.style_linebr) currentLine =plot(drawing and drawing[1] ? middle : na, title = "Middle Line", color = color.white, style = plot.style_linebr) lossLine = plot(drawing and drawing[1] ? SL : na, title = "Stop Loss", color = color.red, style = plot.style_linebr) fill(currentLine,profitLine, title = "Profit Background" ,color = color.new(color.green,75)) fill(currentLine,lossLine, title = "Loss Background" ,color = color.new(color.red,75)) plot(superTrend1, title = "Fast Supertrend", color = dir1 == 1 and dir1[1] == 1 ? color.red : dir1 == -1 and dir1[1] == -1 ? color.green : na) plot(superTrend2, title = "Medium Supertrend", color = dir2 == 1 and dir2[1] == 1 ? color.red : dir2 == -1 and dir2[1] == -1 ? color.green : na) plot(superTrend3, title = "Slow Supertrend", color = dir3 == 1 and dir3[1] == 1 ? color.red : dir3 == -1 and dir3[1] == -1 ? color.green : na) plot(ema, title = "EMA",color = color.yellow) //plot(k, color = color.blue) //plot(d, color = color.orange) //h1 = hline(80) //h2 = hline(20) //fill(h1,h2, color = color.new(color.purple,60))