
Strategi ini adalah sistem perdagangan automatik berdasarkan petunjuk SuperTrend yang menggabungkan RSI (indikasi kekuatan relatif), jumlah perdagangan dan ATR (rentang sebenar rata-rata) untuk membuat keputusan perdagangan. Ia mewujudkan sistem perdagangan yang lengkap dengan mengenal pasti arah trend pasaran, sambil menggunakan pelbagai syarat penapisan untuk memastikan kualiti perdagangan.
Logik utama strategi ini adalah berdasarkan beberapa komponen utama:
Penghakiman TrendMenggunakan indikator SuperTrend sebagai asas, membina garis orbit naik turun. Apabila harga menembusi trek naik, menganggap pasaran berada dalam trend menaik; Apabila ia menembusi trek turun, ia berada dalam trend menurun.
Pengesahan jumlah transaksiKaedah ini memerlukan jumlah dagangan semasa mestilah lebih tinggi daripada perkalian tertentu dari purata jumlah dagangan 20 kitaran (yang boleh disesuaikan dengan parameter VolumeMultiplier). Ini memastikan perdagangan hanya dilakukan jika terdapat kecairan yang mencukupi.
Kekuatan badan yang disahkan: Mengira saiz entiti pijet semasa ((nilai mutlak perbezaan antara harga penutupan dan harga pembukaan) dan membandingkannya dengan nilai ATR. Pergerakan harga dianggap cukup kuat hanya apabila pijet mencapai peratusan tertentu ATR ((pengendalian parameter PctOfATR badan).
Penapis RSI: Gunakan RSI untuk mengelakkan perdagangan di kawasan yang terlalu beli atau terlalu jual. Isyarat beli memerlukan RSI di bawah tahap beli berlebihan (default 70), isyarat jual memerlukan RSI di atas tahap jual berlebihan (default 30).
Penangguhan automatik: Stop loss untuk setiap perdagangan ditetapkan sebagai jarak ATR, dan stop loss ditetapkan sebagai kelipatan stop loss (dikendalikan oleh parameter RiskRewardRatio), mewujudkan pengurusan risiko dinamik berdasarkan turun naik pasaran sebenar.
Strategi ini membentuk syarat untuk membeli dan menjual melalui penilaian komprehensif dari lima aspek di atas:
Analisis pelaksanaan kod strategi ini dapat meringkaskan kelebihan penting berikut:
Mekanisme pengesahan pelbagai dimensiDengan pengesahan berganda mengenai SuperTrend, RSI, jumlah dagangan dan kekuatan badan, isyarat palsu dikurangkan dengan ketara dan ketepatan dagangan ditingkatkan. Mekanisme pengesahan berganda ini dapat mengelakkan banyak dagangan yang tidak perlu, terutamanya dalam pasaran yang sangat bergolak.
Pengurusan risiko penyesuaianTetapan berhenti dan hentian dinamik berdasarkan ATR membolehkan strategi menyesuaikan parameter risiko secara automatik mengikut turun naik pada peringkat pasaran yang berbeza, mengelakkan masalah ketidakcocokan yang disebabkan oleh hentian tetap.
Pengurusan kewangan bersepaduStrategi ini mempunyai fungsi pengurusan wang yang terbina dalam, dengan parameter capitalPerTrade yang dapat menyesuaikan jumlah wang untuk setiap perdagangan mengikut saiz akaun dan keutamaan risiko, mewujudkan integrasi kawalan risiko dengan strategi perdagangan.
Automasi perdagangan yang tinggi: Automasi dari isyarat masuk, peruntukan dana hingga stop loss, mengurangkan tekanan mental dan kebarangkalian kesilapan operasi manual.
Sistem amaran yang sempurna: Strategi menyediakan amaran terperinci dalam format JSON yang mengandungi maklumat penting seperti arah perdagangan, jumlah dana, stop loss dan harga berhenti untuk memudahkan integrasi dengan sistem luaran atau memaklumkan pengguna.
Walaupun strategi ini direka untuk mempertimbangkan pelbagai faktor, terdapat risiko yang berpotensi seperti:
Kepekaan ParameterPrestasi strategi sangat bergantung pada parameter yang ditetapkan, seperti kitaran ATR, nilai paras RSI, penggandaan jumlah dagangan, dan sebagainya. Parameter yang tidak sesuai boleh menyebabkan perdagangan berlebihan atau kehilangan peluang penting. Penyelesaian adalah dengan mencari kombinasi parameter yang optimum dalam keadaan pasaran yang berbeza dengan mengulang.
Kelemahan pada titik peralihanSuperTrend sebagai penunjuk trend, biasanya mempunyai keterlambatan pada titik perubahan trend, yang boleh menyebabkan kemasukan terlambat atau kerugian besar. Masalah ini dapat dikurangkan dengan memendekkan kitaran ATR atau menyesuaikan kelipatan ATR.
Risiko pasaran ekstremDalam kes kesesakan atau kejatuhan pasaran, hentian yang ditetapkan mungkin tidak dapat dilaksanakan dengan berkesan, menyebabkan kerugian melebihi jangkaan. Disarankan untuk menggunakan langkah-langkah kawalan angin lain, seperti kawalan kedudukan keseluruhan atau menetapkan had kerugian maksimum.
Masalah kecekapan kewanganCara peruntukan dana tetap boleh menyebabkan penggunaan dana yang tidak cekap. Anda boleh mempertimbangkan untuk melakukan penyesuaian kedudukan dinamik berdasarkan kadar turun naik atau nilai bersih akaun.
Sekatan kerangka masa tunggalStrategi semasa hanya berdasarkan isyarat pada satu bingkai masa, kekurangan pengesahan bingkai masa berbilang, dan mungkin menghasilkan isyarat yang salah dalam keadaan pasaran tertentu.
Strategi ini dapat dioptimumkan untuk menangani risiko dan kekangan yang dinyatakan di atas:
Integrasi analisis pelbagai kerangka masaMemperkenalkan pengesahan trend pada bingkai masa yang lebih tinggi, berdagang hanya dalam arah trend utama, dapat meningkatkan kestabilan strategi secara signifikan. Ini dapat dicapai melalui fungsi keselamatan TradingView untuk mengakses data sepanjang bingkai masa.
Parameter dinamik menyesuaikan diriIa boleh menyesuaikan ATR secara automatik mengikut kadar turun naik pasaran, parameter seperti nilai RSI, dan lain-lain, untuk menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza. Sebagai contoh, meningkatkan ATR dalam pasaran yang bergelombang tinggi, mengurangkan pecah palsu.
Algoritma Pengurusan Wang yang Dioptimumkan: memperkenalkan pengurusan dana dinamik berdasarkan formula Kelly atau model risiko peratusan tetap, secara automatik menyesuaikan peruntukan dana untuk setiap urus niaga berdasarkan kemenangan dan keuntungan sejarah, meningkatkan kestabilan pendapatan jangka panjang.
Menambah pengenalan status pasaranMenambah logik penghakiman keadaan pasaran ((kecenderungan, penyusunan, turun naik, turun naik rendah), menggunakan peraturan atau parameter perdagangan yang berbeza dalam keadaan pasaran yang berbeza, meningkatkan daya serasi.
Mengintegrasikan model pembelajaran mesinPembelajaran mesin boleh digunakan untuk meramalkan masa masuk yang optimum atau kombinasi parameter, terutamanya apabila menentukan parameter utama seperti ATR, dan penurunan jumlah transaksi. Pembelajaran mesin dapat memberikan kemampuan penyesuaian yang lebih tepat.
Strategi pengendalian risiko dinamik SuperTrend-ATR-RSI adalah sistem perdagangan kuantitatif yang menggabungkan pengesanan trend dengan pengurusan risiko dinamik. Ia mengenal pasti trend pasaran melalui petunjuk SuperTrend, dan menggabungkan mekanisme penapisan pelbagai seperti RSI, jumlah perdagangan dan kekuatan ketumpatan, yang meningkatkan kualiti isyarat perdagangan.
Strategi ini sesuai untuk keadaan pasaran yang lebih turun naik dan jelas trend, terutamanya pada tahap pembentukan trend jangka menengah dan panjang. Walau bagaimanapun, pengguna harus memperhatikan pengoptimuman parameter dan pencocokan keadaan pasaran dalam aplikasi praktikal, dan mempertimbangkan arah pengoptimuman yang dikemukakan di sini, seperti analisis jangka masa berganda, penyesuaian parameter dinamik dan kaedah pengurusan dana lanjutan, untuk meningkatkan lagi strategi yang kuat dan bersesuaian.
Dengan parameter yang munasabah dan pengesahan balasan yang mencukupi, strategi ini berpotensi menjadi alat perdagangan automatik yang boleh dipercayai, menyediakan pelaksanaan perdagangan yang sistematik dan penyelesaian kawalan risiko kepada pelabur.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/
//@version=5
strategy("Supertrend Hombrok Bot", overlay=true, default_qty_type=strategy.cash, default_qty_value=1000)
// INPUTS
atrPeriod = input.int(10, title="ATR Period")
atrMult = input.float(3.0, title="ATR Multiplier")
rsiPeriod = input.int(14, title="RSI Period")
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
volumeMultiplier = input.float(1.2, title="Volume Multiplier")
bodyPctOfATR = input.float(0.3, title="Candle Body % of ATR (min strength)")
riskRewardRatio = input.float(2.0, title="R:R (Take Profit / Stop Loss)")
capitalPerTrade = input.float(10, title="Capital por operação ($)")
// ATR e Supertrend
atr = ta.atr(atrPeriod)
upperBand = hl2 - (atrMult * atr)
lowerBand = hl2 + (atrMult * atr)
prevUpper = nz(upperBand[1], upperBand)
prevLower = nz(lowerBand[1], lowerBand)
trendUp = close[1] > prevUpper ? math.max(upperBand, prevUpper) : upperBand
trendDown = close[1] < prevLower ? math.min(lowerBand, prevLower) : lowerBand
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > trendDown ? 1 : trend == 1 and close < trendUp ? -1 : trend
isUpTrend = trend == 1
isDownTrend = trend == -1
// Filtros
volAverage = ta.sma(volume, 20)
volOk = volume > volAverage * volumeMultiplier
bodySize = math.abs(close - open)
bodyOk = bodySize > (atr * bodyPctOfATR)
rsi = ta.rsi(close, rsiPeriod)
rsiBuyOk = rsi < rsiOverbought
rsiSellOk = rsi > rsiOversold
// Condições
buyCond = isUpTrend and volOk and bodyOk and rsiBuyOk
sellCond = isDownTrend and volOk and bodyOk and rsiSellOk
// TP e SL
longSL = close - atr
longTP = close + (atr * riskRewardRatio)
shortSL = close + atr
shortTP = close - (atr * riskRewardRatio)
// Estratégia de entrada e saída
if buyCond
strategy.entry("Compra", strategy.long, qty=capitalPerTrade / close)
strategy.exit("TP/SL Compra", from_entry="Compra", stop=longSL, limit=longTP)
if sellCond
strategy.entry("Venda", strategy.short, qty=capitalPerTrade / close)
strategy.exit("TP/SL Venda", from_entry="Venda", stop=shortSL, limit=shortTP)
// ALERTAS + LABELS
alertLong = '{"side":"buy", "capital":' + str.tostring(capitalPerTrade) + ', "sl":' + str.tostring(longSL) + ', "tp":' + str.tostring(longTP) + '}'
alertShort = '{"side":"sell", "capital":' + str.tostring(capitalPerTrade) + ', "sl":' + str.tostring(shortSL) + ', "tp":' + str.tostring(shortTP) + '}'
if buyCond
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)
alert(alertLong, alert.freq_once_per_bar_close)
if sellCond
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)
alert(alertShort, alert.freq_once_per_bar_close)
// VISUAL
plotshape(buyCond, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellCond, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
plot(trend == 1 ? trendUp : na, title="Trend Up", color=color.green, linewidth=1)
plot(trend == -1 ? trendDown : na, title="Trend Down", color=color.red, linewidth=1)