Inti dari strategi ini adalah kombinasi dari saluran Vegas dan indikator SuperTrend. Saluran Vegas menggunakan rata-rata bergerak sederhana (SMA) dan standar deviasi (STDEV) untuk menentukan kisaran fluktuasi atas dan bawah harga. Lebar saluran mencerminkan tingkat volatilitas pasar. Indikator SuperTrend, di sisi lain, adalah indikator pelacakan tren yang menentukan arah tren dengan membandingkan harga saat ini dengan nilai indikator.
Strategi ini secara dinamis menyesuaikan pengganda indikator SuperTrend untuk beradaptasi dengan perubahan lebar Saluran Vegas. Ketika Saluran Vegas lebih luas (yaitu, volatilitas pasar lebih tinggi), pengganda indikator SuperTrend meningkat sesuai, membuatnya lebih sensitif terhadap perubahan tren; sebaliknya, ketika Saluran Vegas lebih sempit (yaitu, volatilitas pasar lebih rendah), pengganda menurun, membuat indikator lebih stabil. Penyesuaian dinamis ini memungkinkan indikator SuperTrend beradaptasi dengan irama pasar yang berbeda.
Sinyal perdagangan dihasilkan berdasarkan perbandingan harga penutupan saat ini dengan nilai indikator SuperTrend. Ketika harga melintasi garis indikator SuperTrend dari bawah, sinyal panjang dihasilkan; sebaliknya, ketika harga melintasi garis indikator dari atas, sinyal pendek dihasilkan. Metode penilaian sinyal yang sederhana dan intuitif ini membuat strategi mudah dipahami dan diterapkan.
Adaptasi dinamis terhadap volatilitas pasar: Dengan menyesuaikan secara dinamis parameter indikator SuperTrend melalui Saluran Vegas, strategi dapat beradaptasi dengan kondisi volatilitas pasar yang berbeda, menangkap tren secara tepat waktu di pasar tren dan tetap stabil di pasar osilasi.
Sinyal perdagangan yang jelas dan intuitif: Strategi menghasilkan sinyal beli dan jual yang jelas berdasarkan posisi relatif harga terhadap indikator SuperTrend, yang sederhana dan mudah dipahami, memfasilitasi pengambilan keputusan yang cepat oleh pedagang.
Pilihan arah perdagangan yang fleksibel: Strategi ini menawarkan tiga pilihan untuk perdagangan panjang, pendek, dan bidirectional, memenuhi kebutuhan dan pandangan pasar dari pedagang yang berbeda.
Bantuan visual yang sangat baik: Strategi ini mengidentifikasi tren bullish dan bearish pada grafik dengan warna hijau dan merah, dan menandai titik beli dan jual dengan panah, yang intuitif dan jelas, memudahkan memahami denyut jantung pasar.
Lag pengenalan tren: Seperti semua strategi pelacakan tren, strategi ini dapat mengalami lag sinyal pada tahap awal pembalikan tren, yang mengakibatkan titik masuk optimal yang terlewatkan atau risiko tambahan.
Sensitivitas terhadap pengaturan parameter: Kinerja strategi ini tergantung pada pilihan parameter, seperti periode ATR dan panjang Saluran Vegas, dan parameter yang berbeda dapat menghasilkan hasil yang berbeda.
Perdagangan sering: Strategi ini relatif sensitif terhadap perubahan tren dan dapat menghasilkan sinyal perdagangan sering di pasar yang berosilasi, meningkatkan biaya perdagangan dan risiko penarikan.
Memperkenalkan lebih banyak indikator: Pertimbangkan untuk memperkenalkan indikator teknis lainnya seperti RSI dan MACD untuk memverifikasi sinyal tren dari beberapa dimensi dan meningkatkan keandalan sinyal.
Mengoptimalkan aturan masuk dan keluar: Berdasarkan sinyal masuk saat ini, lebih banyak kondisi penyaringan dapat diperkenalkan, seperti mengharuskan beberapa lilin berturut-turut ditutup dalam arah tren, untuk mengurangi sinyal palsu; pada saat yang sama, trailing stop atau volatility stop dapat diatur untuk mengoptimalkan exit.
Penyesuaian posisi dinamis: Berdasarkan indikator seperti kekuatan tren pasar dan volatilitas, penyesuaian ukuran posisi setiap perdagangan secara dinamis, meningkatkan posisi ketika tren kuat dan mengurangi posisi ketika tren melemah, untuk mengontrol risiko dengan lebih baik dan mengoptimalkan pengembalian.
/*backtest start: 2023-04-22 00:00:00 end: 2024-04-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © PresentTrading // The "Vegas SuperTrend Strategy" uses Vegas Channel and SuperTrend indicators on trading charts, allowing for adjustable settings like ATR length and channel size. // It modifies the SuperTrend's sensitivity to market volatility, generating buy (green) or sell (red) signals upon trend shifts. // Entry and exit points are visually marked, with the strategy automating trades based on these trend changes to adapt to different market conditions. //@version=5 strategy("Vegas SuperTrend Enhanced - strategy [presentTrading]", shorttitle="Vegas SuperTrend Enhanced - strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, commission_value=0.1, commission_type=strategy.commission.percent, slippage=1, currency=currency.USD, default_qty_value=10000, initial_capital=10000) // Input settings allow the user to customize the strategy's parameters. tradeDirectionChoice = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"]) // Option to select the trading direction atrPeriod = input(10, "ATR Period for SuperTrend") // Length of the ATR for volatility measurement vegasWindow = input(100, "Vegas Window Length") // Length of the moving average for the Vegas Channel superTrendMultiplier = input(5, "SuperTrend Multiplier Base") // Base multiplier for the SuperTrend calculation volatilityAdjustment = input.float(5, "Volatility Adjustment Factor") // Factor to adjust the SuperTrend sensitivity to the Vegas Channel width // Calculate the Vegas Channel using a simple moving average and standard deviation. vegasMovingAverage = ta.sma(close, vegasWindow) vegasChannelStdDev = ta.stdev(close, vegasWindow) vegasChannelUpper = vegasMovingAverage + vegasChannelStdDev vegasChannelLower = vegasMovingAverage - vegasChannelStdDev // Adjust the SuperTrend multiplier based on the width of the Vegas Channel. channelVolatilityWidth = vegasChannelUpper - vegasChannelLower adjustedMultiplier = superTrendMultiplier + volatilityAdjustment * (channelVolatilityWidth / vegasMovingAverage) // Calculate the SuperTrend indicator values. averageTrueRange = ta.atr(atrPeriod) superTrendUpper = hlc3 - (adjustedMultiplier * averageTrueRange) superTrendLower = hlc3 + (adjustedMultiplier * averageTrueRange) var float superTrendPrevUpper = na var float superTrendPrevLower = na var int marketTrend = 1 // Update SuperTrend values and determine the current trend direction. superTrendPrevUpper := nz(superTrendPrevUpper[1], superTrendUpper) superTrendPrevLower := nz(superTrendPrevLower[1], superTrendLower) marketTrend := close > superTrendPrevLower ? 1 : close < superTrendPrevUpper ? -1 : nz(marketTrend[1], 1) superTrendUpper := marketTrend == 1 ? math.max(superTrendUpper, superTrendPrevUpper) : superTrendUpper superTrendLower := marketTrend == -1 ? math.min(superTrendLower, superTrendPrevLower) : superTrendLower superTrendPrevUpper := superTrendUpper superTrendPrevLower := superTrendLower // Enhanced Visualization // Plot the SuperTrend and Vegas Channel for visual analysis. plot(marketTrend == 1 ? superTrendUpper : na, "SuperTrend Upper", color=color.green, linewidth=2) plot(marketTrend == -1 ? superTrendLower : na, "SuperTrend Lower", color=color.red, linewidth=2) plot(vegasChannelUpper, "Vegas Upper", color=color.purple, linewidth=1) plot(vegasChannelLower, "Vegas Lower", color=color.purple, linewidth=1) // Apply a color to the price bars based on the current market trend. barcolor(marketTrend == 1 ? color.green : marketTrend == -1 ? color.red : na) // Detect trend direction changes and plot entry/exit signals. trendShiftToBullish = marketTrend == 1 and marketTrend[1] == -1 trendShiftToBearish = marketTrend == -1 and marketTrend[1] == 1 plotshape(series=trendShiftToBullish, title="Enter Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=trendShiftToBearish, title="Enter Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") // Define conditions for entering long or short positions, and execute trades based on these conditions. enterLongCondition = marketTrend == 1 enterShortCondition = marketTrend == -1 // Check trade direction choice before executing trade entries. if enterLongCondition and (tradeDirectionChoice == "Long" or tradeDirectionChoice == "Both") strategy.entry("Long Position", strategy.long) if enterShortCondition and (tradeDirectionChoice == "Short" or tradeDirectionChoice == "Both") strategy.entry("Short Position", strategy.short) // Close all positions when the market trend changes. if marketTrend != marketTrend[1] strategy.close_all()