
Strategi Triple SuperTrend dan Stoch RSI adalah strategi perdagangan kuantitatif yang menggabungkan trend-following dan overbought overbought indikator dalam beberapa frame waktu. Strategi ini menggunakan tiga parameter yang berbeda untuk menentukan tren pasar dan menggabungkan sinyal overbought dan oversold dari indikator Stoch RSI untuk mengirim sinyal perdagangan. Dalam operasi tertentu, strategi ini melakukan operasi plus/nol jika dua indikator SuperTrend yang lebih cepat mengirimkan sinyal beli/jual pada saat yang sama, dan jika indikator Stoch RSI juga mengkonfirmasi sinyal tersebut.
Logika inti dari strategi Triple SuperTrend dan Stoch RSI adalah untuk memfilter sinyal perdagangan dari indikator SuperTrend dan Stoch RSI yang dikombinasikan dengan pengaturan parameter yang berbeda untuk meningkatkan kualitas sinyal dan mengurangi tingkat sinyal yang salah.
Pertama, strategi ini menggunakan tiga set indikator SuperTrend dengan parameter yang berbeda untuk menentukan tren utama pasar. Tiga set indikator SuperTrend ini memiliki parameter yang berbeda, dengan kerangka waktu yang berbeda dari cepat ke lambat, untuk menangkap perubahan tren pada tingkat yang berbeda.
Kedua, strategi memperkenalkan indikator Stoch RSI untuk menentukan apakah sinyal tersebut terlalu overbought atau oversold. Indikator Stoch RSI menggabungkan keunggulan indikator acak RSI dan indikator acak Stochastic untuk secara efektif menentukan apakah pasar berada dalam keadaan overbought atau oversold. Jika sinyal SuperTrend tercepat dan tercepat bertepatan dengan sinyal indikator Stoch RSI, kita dapat mengirim sinyal beli / jual akhir.
Dengan kombinasi multi-indikator dan multi-frame waktu, strategi Triple SuperTrend dan Stoch RSI dapat secara efektif menyaring kebisingan pasar, meningkatkan keandalan sinyal, dan mengurangi terjadinya perdagangan yang salah.
Keuntungan terbesar dari strategi Triple SuperTrend dan Stoch RSI adalah kombinasi efektif dari beberapa indikator dan beberapa kerangka waktu, yang memberi kita manfaat sebagai berikut:
Mengurangi sinyal perdagangan yang salah. Kombinasi tiga indikator SuperTrend dan indikator Stoch RSI dapat secara signifikan mengurangi sinyal kebisingan dan sinyal yang salah yang ada pada satu indikator.
Tingkatkan rasio sinyal untung. Meskipun frekuensi sinyal menurun, rasio sinyal untung akan meningkat secara signifikan.
Cocok untuk pasar tren. Waveframe multi-waktu membantu menangkap tren lini tengah dan panjang, cocok untuk lingkungan pasar dengan tren yang lebih jelas.
Mudah untuk mendapatkan hasil yang lebih baik melalui optimasi parameter. Triple indicator memberikan ruang kemungkinan yang lebih besar untuk optimasi parameter.
Parameter dapat disesuaikan sesuai dengan gaya pribadi. Anda dapat secara bebas menyesuaikan parameter agar strategi lebih sesuai dengan gaya perdagangan Anda.
Strategi Triple SuperTrend dan Stoch RSI juga memiliki beberapa risiko, terutama terfokus pada beberapa aspek berikut:
Rendahnya frekuensi sinyal. Mekanisme penyaringan multi-lapisan menyebabkan penurunan frekuensi transaksi yang signifikan.
Kemungkinan untuk melewatkan beberapa sinyal. Konservatifitas strategi dapat menyebabkan kemungkinan untuk melewatkan beberapa peluang potensial.
Semakin banyak indikator dan parameter, semakin sulit untuk mengoptimalkan strategi.
Ada beberapa strategi yang dapat digunakan untuk memantau dan memantau tren.
Untuk risiko di atas, kita dapat mengoptimalkan dengan menyesuaikan parameter indikator, memperkenalkan lebih banyak indikator penilaian tambahan, dan sebagainya, sehingga strategi dapat memperoleh kualitas keuntungan yang lebih tinggi sambil mengendalikan risiko.
Strategi Triple SuperTrend dan Stoch RSI masih memiliki ruang untuk pengoptimalan lebih lanjut, terutama dari beberapa aspek berikut:
Menyesuaikan kombinasi parameter indikator untuk menemukan pencocokan parameter optimal. Anda dapat memperkenalkan lebih banyak tes parameter indikator untuk menemukan parameter optimal.
Menambahkan strategi stop loss dan kontrol risiko transaksi tunggal. Hal ini dapat meningkatkan stabilitas strategi secara signifikan.
Masukkan lebih banyak indikator penilaian untuk verifikasi sinyal. Misalnya, masukkan indikator volume transaksi untuk menilai dari berbagai sudut pandang.
Menambahkan fitur adaptasi. Ini memungkinkan strategi untuk mengoptimalkan dan menyesuaikan parameter secara otomatis, untuk menyesuaikan dengan perubahan pasar.
Prediksi menggunakan algoritma AI untuk memprediksi keakuratan sinyal indikator.
Dengan terus-menerus dioptimalkan, strategi Triple SuperTrend dan Stoch RSI dapat tumbuh menjadi strategi perdagangan kuantitatif yang stabil dan efisien, yang memberi kita Alpha yang signifikan.
Strategi Triple SuperTrend dan Stoch RSI berhasil menggabungkan analisis multi-frame timeframe dengan penilaian overbought dan oversold, membentuk strategi perdagangan yang mengikuti tren yang unik. Pada saat yang sama, ia mempertahankan keuntungan ganda dari mengikuti tren dan memfilter indikator, meningkatkan rasio sinyal yang menguntungkan sambil mengurangi sinyal noise. Meskipun risiko strategi dan ruang untuk pengoptimalan masih ada, kemampuannya untuk menghasilkan keuntungan dan stabilitasnya dapat ditingkatkan lebih lanjut dengan penyesuaian parameter dan pengoptimalan strategi. Secara keseluruhan, strategi Triple SuperTrend dan Stoch RSI memberikan pilihan strategi berkualitas tinggi untuk praktik perdagangan kuantitatif.
/*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))