サニー・スーパートレンド戦略は,ATRとスーパートレンド指標に基づいたトレンドフォロー戦略である.トレンド逆転を正確に予測し,タイミング指標として完璧に機能する.この戦略は忍耐力を高め,トレーダーが適切なタイミングで市場に参入して退場するのを助けることができる.
この戦略は,現在のトレンド方向を決定するためにスーパートレンドインジケーターを使用する.スーパートレンドインジケーターが方向を変更すると,トレンド逆転が起こる可能性があると考えられる.さらに,戦略は,補助判断のためにキャンドルスタイクボディの方向も使用する.潜在的な逆転信号が現れ,キャンドルスタイクボディの方向が前のものと一致すると,無効な信号はフィルタリングされる.
具体的には,この戦略は,次の論理に従って取引信号を生成します.
スーパートレンドインジケーターは過多な信号を生成し,フィルタリングする必要があります. 解決策: この戦略は,有効な信号をフィルターアウトするために補助判断のためのキャンドルスタイクボディ方向を使用
スーパートレンドパラメータは過度に最適化されやすい
解決法: デフォルトパラメータを使用して手動の調整や過度に最適化を避ける
超高速トレンド逆転を処理できない 解決法: 市場変動の速さに対応するために,ATR 期間パラメータを適切に調整する
サニー・スーパートレンド戦略は,スーパートレンド指標に基づく効率的なトレンド逆転戦略である.それは補助判断のためのキャンドルスタイクボディの方向性を組み合わせ,無効な信号を効果的にフィルタリングし,信号品質を改善することができる.この戦略は操作が簡単で,高度に適応性があり,複数の製品とタイムフレームで広く使用できる.パラメータを合理的に最適化し,ストップ損失メカニズムを増やすことで,戦略のパフォーマンスはさらに向上することができる.
/*backtest start: 2023-11-12 00:00:00 end: 2023-12-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Sunny Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) shor= close > open and close[1] > open[1] and close[2] > open[2] lon = open > close and open[1] > close[1] and open[2] > close[2] tt= ta.change(direction) < 0 ss= ta.change(direction) > 0 long= tt longexit = lon or ss short= ss shortexit = shor or tt longPosMem = false longexitPosMem = false shortPosMem = false shortexitPosMem = false longPosMem := long ? true : short ? false : longPosMem[1] longexitPosMem := longexit ? true : shortexit ? false : longexitPosMem[1] shortPosMem := short ? true : long ? false : shortPosMem[1] shortexitPosMem := shortexit ? true : longexit ? false : shortexitPosMem[1] longy = long and not(longPosMem[1]) longexity = longexit and not(longexitPosMem[1]) shorty = short and not(shortPosMem[1]) shortexity = shortexit and not(shortexitPosMem[1]) //Use this to customize the look of the arrows to suit your needs. plotshape(longy, location=location.abovebar, color=color.green, style=shape.arrowup, text="Buy") plotshape(longexity, location=location.top, color=color.green, style=shape.xcross, text="Buy exit") plotshape(shorty, location=location.belowbar, color=color.red, style=shape.arrowdown, text="Sell") plotshape(shortexity, location=location.bottom, color=color.red, style=shape.xcross, text="Sell exit") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) // STEP 1: // Make input options that configure backtest date range startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2021, minval=1800, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=2, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2021, minval=1800, maxval=2100) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // STEP 3: // Submit entry orders, but only when bar is inside date range if (inDateRange and longy) strategy.entry("enter long",strategy.long,when= longy) strategy.close("long",when=longexity) if (inDateRange and shorty) strategy.entry("enter short",strategy.short,when = shorty) strategy.close("short", when=shortexity)