Strategi
Inti strategi ini adalah gabungan Saluran Vegas dan penunjuk SuperTrend. Saluran Vegas menggunakan purata bergerak mudah (SMA) dan penyimpangan standard (STDEV) untuk menentukan julat turun naik atas dan bawah harga. Lebar saluran mencerminkan tahap turun naik pasaran.
Strategi ini secara dinamik menyesuaikan pengganda penunjuk SuperTrend untuk menyesuaikan diri dengan perubahan lebar Saluran Vegas. Apabila Saluran Vegas lebih luas (iaitu, turun naik pasaran lebih tinggi), pengganda penunjuk SuperTrend meningkat dengan sewajarnya, menjadikannya lebih sensitif terhadap perubahan trend; sebaliknya, apabila Saluran Vegas lebih sempit (iaitu, turun naik pasaran lebih rendah), pengganda menurun, menjadikan penunjuk lebih stabil. Penyesuaian dinamik ini membolehkan penunjuk SuperTrend menyesuaikan diri dengan irama pasaran yang berbeza.
Isyarat perdagangan dihasilkan berdasarkan perbandingan harga penutupan semasa dengan nilai penunjuk SuperTrend. Apabila harga melintasi garis penunjuk SuperTrend dari bawah, isyarat panjang dihasilkan; sebaliknya, apabila harga melintasi garis penunjuk dari atas, isyarat pendek dihasilkan. Kaedah penilaian isyarat yang mudah dan intuitif ini menjadikan strategi mudah difahami dan digunakan.
Penyesuaian dinamik terhadap turun naik pasaran: Dengan menyesuaikan parameter penunjuk SuperTrend secara dinamik melalui Saluran Vegas, strategi dapat menyesuaikan diri dengan keadaan turun naik pasaran yang berbeza, menangkap trend dengan tepat pada masa di pasaran yang sedang berkembang dan kekal stabil di pasaran yang berayun.
Isyarat perdagangan yang jelas dan intuitif: Strategi menghasilkan isyarat beli dan jual yang jelas berdasarkan kedudukan harga relatif kepada penunjuk SuperTrend, yang mudah dan mudah difahami, memudahkan pengambilan keputusan yang cepat oleh peniaga.
Pilihan arah perdagangan yang fleksibel: Strategi ini menawarkan tiga pilihan untuk perdagangan panjang, pendek, dan dua arah, memenuhi keperluan dan pandangan pasaran pedagang yang berbeza.
Bantuan visual yang sangat baik: Strategi ini mengenal pasti trend menaik dan menurun pada carta dengan warna hijau dan merah, dan menandakan titik beli dan jual dengan anak panah, yang intuitif dan jelas, memudahkan memahami denyutan pasaran.
Kelewatan pengiktirafan trend: Seperti semua strategi pengesanan trend, strategi ini mungkin mengalami kelewatan isyarat pada peringkat awal pembalikan trend, yang mengakibatkan titik kemasukan optimum atau risiko tambahan.
Sensitiviti kepada tetapan parameter: Prestasi strategi bergantung kepada tahap tertentu pada pilihan parameter, seperti tempoh ATR dan panjang Saluran Vegas, dan parameter yang berbeza mungkin menghasilkan hasil yang berbeza.
Perdagangan kerap: Strategi ini agak sensitif terhadap perubahan trend dan boleh menghasilkan isyarat perdagangan yang kerap di pasaran berayun, meningkatkan kos perdagangan dan risiko penarikan.
Memperkenalkan lebih banyak penunjuk: Pertimbangkan untuk memperkenalkan penunjuk teknikal lain seperti RSI dan MACD untuk mengesahkan isyarat trend dari pelbagai dimensi dan meningkatkan kebolehpercayaan isyarat.
Mengoptimumkan peraturan kemasukan dan keluar: Berdasarkan isyarat kemasukan semasa, lebih banyak keadaan penapisan boleh diperkenalkan, seperti memerlukan beberapa lilin berturut-turut untuk menutup ke arah trend, untuk mengurangkan isyarat palsu; pada masa yang sama, berhenti atau berhenti turun naik boleh ditetapkan untuk mengoptimumkan keluar.
Penyesuaian kedudukan dinamik: Berdasarkan penunjuk seperti kekuatan trend pasaran dan turun naik, menyesuaikan saiz kedudukan setiap perdagangan secara dinamik, meningkatkan kedudukan apabila trend kuat dan mengurangkan kedudukan apabila trend melemah, untuk mengawal risiko dengan lebih baik dan mengoptimumkan pulangan.
/*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()