この戦略の核心は,ベガスチャネルとスーパートレンド指標の組み合わせである.ベガスチャネルは,価格の上下変動範囲を決定するために,単純な移動平均値 (SMA) と標準偏差値 (STDEV) を使用する.チャネルの幅は市場の変動度を反映する.一方,スーパートレンド指標は,現在の価格と指標値を比較することによってトレンド方向を決定するトレンド追跡指標である.
この戦略は,ベガスチャネルの幅の変化に適応するために,スーパートレンド指標の倍数を動的に調整する.ベガスチャネルがより広いとき (すなわち,市場の変動が高く),スーパートレンド指標の倍数はそれに応じて増加し,傾向の変化により敏感になる.逆に,ベガスチャネルが狭くなるとき (すなわち,市場の変動が低いとき),倍数は減少し,指標をより安定させる.この動的な調整により,スーパートレンド指標は異なる市場のリズムに適応することができます.
トレーディング・シグナルは,現在の閉値とスーパートレンド指標値の比較に基づいて生成される.価格は下からスーパートレンド指標線を横切ると,ロング・シグナルが生成される.逆に,価格は上から指標線を横切ると,ショート・シグナルが生成される.このシンプルで直感的な信号判断方法は,戦略を理解し適用しやすくする.
市場の変動に動的な適応: Vegas Channel を通してスーパートレンド指標のパラメータを動的に調整することで,戦略は異なる市場の変動条件に適応し,トレンド市場におけるトレンドを間に合って把握し,振動する市場で安定を維持することができます.
明確で直感的な取引シグナル:この戦略は,スーパートレンド指標に対する価格の相対的な位置に基づいて,シンプルで理解しやすい,トレーダーの迅速な意思決定を容易にする明確な購入・販売シグナルを生成します.
柔軟な取引方向のオプション: 戦略は,異なるトレーダーのニーズと市場観に対応する,長,短,双方向の取引のための3つのオプションを提供しています.
優れた視覚支援: この戦略は,緑と赤の色でチャート上の上昇傾向と下落傾向を特定し,直感的で明確な矢印で購入・販売ポイントをマークし,市場の脈を把握することを容易にする.
トレンド認識遅延:すべてのトレンド追跡戦略と同様に,この戦略はトレンド逆転の初期段階において信号遅延を経験し,最適なエントリーポイントを逃したり,追加のリスクを伴う可能性があります.
パラメータ設定に対する敏感性:戦略の性能は,ATR期間やベガス運河長などのパラメータの選択に一定程度依存し,異なるパラメータによって異なる結果が得られる.
頻繁な取引:この戦略は傾向の変化に比較的敏感で,振動する市場で頻繁な取引信号を生成し,取引コストと引き上げリスクを増やす可能性があります.
より多くの指標を導入する:複数の次元からトレンド信号を検証し,信号の信頼性を向上させるため,RSIやMACDなどの他の技術指標を導入することを検討する.
入口と出口ルールを最適化:現在の入口信号に基づいて,複数の連続したキャンドルがトレンド方向に閉じることを要求するなど,より多くのフィルタリング条件を導入することができ,誤った信号を減らすことができます.同時に,出口を最適化するためにトライリングストップまたは波動ストップを設定できます.
動的ポジション調整: 市場傾向の強さや変動などの指標に基づいて,それぞれの取引のポジションサイズを動的に調整し,傾向が強いときにポジションを増やし,傾向が弱くなるときにポジションを縮小し,リスクをより良く制御し,収益を最適化します.
/*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()