
Strategi Triple SuperTrend dan Stoch RSI adalah strategi perdagangan kuantitatif yang menggabungkan trend mengikuti dan overbought indikator overbought dalam pelbagai jangka masa. Strategi ini menggunakan tiga parameter yang berbeza untuk menentukan trend pasaran, dan menggabungkan isyarat overbought dan oversold indikator Stoch RSI untuk menghantar isyarat perdagangan. Dalam operasi tertentu, strategi ini menghasilkan isyarat beli / jual apabila dua indikator SuperTrend yang lebih cepat menghantar isyarat beli / jual pada masa yang sama, dan jika indikator Stoch RSI juga mengesahkan isyarat itu, ia akan melakukan operasi beli / kosong yang sesuai.
Logik teras strategi SuperTrend dan Stoch RSI bertiga adalah penapisan isyarat perdagangan di antara penunjuk SuperTrend dan penunjuk Stoch RSI dengan set parameter yang berbeza untuk meningkatkan kualiti isyarat dan mengurangkan kadar isyarat yang salah.
Pertama, strategi ini menggunakan tiga set penunjuk SuperTrend dengan parameter yang berbeza untuk menentukan trend utama di pasaran. Tiga set penunjuk SuperTrend ini mempunyai parameter yang berbeza, dengan bingkai masa yang berbeza dari cepat ke lambat, untuk menangkap perubahan trend pada tahap yang berbeza. Apabila penunjuk SuperTrend yang paling cepat dan kedua yang paling cepat mengeluarkan isyarat beli / jual pada masa yang sama, kita membuat penilaian awal bahawa isyarat itu mempunyai kebolehpercayaan tertentu.
Kedua, strategi memperkenalkan indikator Stoch RSI untuk menentukan sama ada isyarat itu terlalu terlampau atau terlalu banyak. Sinyal Stoch RSI menggabungkan kelebihan indikator RSI acak dan indikator Stochastic acak untuk menentukan sama ada pasaran berada dalam keadaan terlampau atau terlalu banyak. Jika isyarat SuperTrend terpantas dan kedua terpantas selaras dengan isyarat Stoch RSI, kita dapat menghantar isyarat beli / jual akhir.
Dengan menggabungkan pelbagai indikator dan pelbagai bingkai masa, strategi SuperTrend dan Stoch RSI bertiga dapat menyaring bunyi pasaran dengan berkesan, meningkatkan kebolehpercayaan isyarat, dan mengurangkan kesalahan perdagangan.
Kelebihan utama strategi Triple SuperTrend dan Stoch RSI adalah gabungan berkesan pelbagai indikator dan pelbagai jangka masa, yang memberi kami faedah berikut:
Mengurangkan isyarat perdagangan yang salah. Gabungan tiga petunjuk SuperTrend dengan petunjuk RSI Stoch dapat mengurangkan isyarat bunyi dan isyarat yang salah yang terdapat dalam satu petunjuk.
Meningkatkan nisbah isyarat keuntungan. Walaupun frekuensi isyarat menurun, nisbah isyarat keuntungan akan meningkat dengan ketara.
Sesuai untuk pasaran trendy. Gelombang bingkai masa yang panjang membantu menangkap trend garis tengah dan panjang. Sesuai untuk persekitaran pasaran yang lebih jelas trend.
Mudah untuk mencapai kesan yang lebih baik melalui pengoptimuman parameter. Triple indicator memberikan ruang kemungkinan yang lebih besar untuk pengoptimuman parameter.
Parameter boleh disesuaikan mengikut gaya peribadi. Anda boleh menyesuaikan parameter secara bebas untuk membuat strategi lebih sesuai dengan gaya perdagangan anda sendiri.
Strategi Triple SuperTrend dan Stoch RSI juga mempunyai beberapa risiko, terutamanya tertumpu pada beberapa aspek berikut:
Frekuensi isyarat berkurangan. Mekanisme penapisan bertingkat menyebabkan frekuensi perdagangan strategi berkurangan dengan ketara.
Mudah untuk terlepas beberapa isyarat. Strategi yang konservatif akan memudahkan untuk terlepas beberapa peluang yang berpotensi.
Tambah parameter bergantung kepada pelbagai petunjuk. Semakin banyak petunjuk dan parameter, semakin sukar untuk mengoptimumkan strategi.
Keupayaan untuk mengikuti adalah terhad. Perpaduan pelbagai kerangka masa juga mengehadkan fleksibiliti strategi untuk mengikuti trend.
Untuk risiko di atas, kita boleh mengoptimumkan dengan menyesuaikan parameter penunjuk, memperkenalkan lebih banyak penunjuk penilaian tambahan, dan sebagainya, supaya strategi dapat memperoleh kualiti keuntungan yang lebih tinggi sambil mengawal risiko.
Strategi Triple SuperTrend dan Stoch RSI masih mempunyai ruang untuk pengoptimuman lebih lanjut, terutamanya dari beberapa aspek:
Menyesuaikan set parameter penunjuk untuk mencari set parameter yang paling sesuai. Anda boleh memperkenalkan lebih banyak set parameter penunjuk untuk menguji dan mencari set parameter yang paling sesuai.
Menambah strategi henti rugi dan mengawal risiko perdagangan tunggal. Ini dapat meningkatkan kestabilan strategi dengan ketara.
Memperkenalkan lebih banyak petunjuk penghakiman untuk mengesahkan isyarat. Sebagai contoh, pengenalan petunjuk jumlah transaksi untuk menilai pelbagai sudut.
Menambah fungsi penyesuaian diri. Ia membolehkan strategi untuk mengoptimumkan dan menyesuaikan parameter secara automatik untuk menyesuaikan diri dengan perubahan pasaran.
Menggabungkan algoritma pembelajaran mesin untuk membuat ramalan. Menggunakan algoritma AI untuk meramalkan ketepatan isyarat penunjuk.
Dengan pengoptimuman berterusan, strategi SuperTrend dan Stoch RSI tiga boleh berkembang menjadi strategi perdagangan kuantitatif yang stabil dan cekap, yang membawa kita Alpha yang ketara.
Strategi Triple SuperTrend dan Stoch RSI berjaya menggabungkan analisis pelbagai kerangka masa dengan penilaian overbought dan oversold, membentuk strategi perdagangan jenis trend yang unik. Ia mengekalkan kelebihan ganda untuk mengikuti trend dan menyaring indikator, meningkatkan peratusan isyarat keuntungan sambil mengurangkan isyarat bunyi. Walaupun risiko strategi dan ruang untuk pengoptimuman masih ada, kemampuannya untuk mendapatkan keuntungan dan kestabilan dapat ditingkatkan lagi dengan penyesuaian parameter dan pengoptimuman strategi.
/*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))