この戦略は,スーパートレンド指標とコモディティチャネルインデックス (CCI) を統合し,マルチタイムフレームトレンド追跡とトレードシグナル生成を実現する.主なアイデアは,スーパートレンド指標を組み合わせながら短期トレンド方向を判断するためにCCI指標を使用することです.中長期トレンド方向を決定します. 短期および中長期トレンドが一致するときに取引シグナルが生成されます.
CCIインジケーターは,過剰購入と過剰売却のシナリオを特定することができます. 0線の上昇クロスオーバーは上昇シグナルで,下落シグナルは下落シグナルです.この戦略は,短期トレンド方向を決定するためにこの機能を使用します.
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")
このコードは,CCI期間と中間位置を定義します.
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
このコードは, cci が 0 線上/下を横切って Supertrend の上/下帯を更新するかどうかをチェックします.
スーパートレンド指標は,中期から長期間のトレンドを決定するためにATRと価格を組み合わせます.上部帯の上向きの浸透は上昇傾向を示し,下向きは下向きを示します.
スーパートレンドは以下のように計算されます.
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
ここで因数とPdは調整可能なパラメータです
トレンド変数は現在のスーパートレンドの方向性を決定します
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
CCIとSupertrendを統合することで,この戦略は複数のタイムフレームのトレンド判断を実現します.CCIは短期変動を捉え,Supertrendはより大きな動きに焦点を当てます.
方向が一致すると より信頼性の高い取引信号が生成されます
isLong = st_trend == 1
isShort = st_trend == -1
短期と中期が一致するときに入る 方向が一致しないときに出る
より信頼性の高いシグナルのために短期および中期指標を統合します.
スーパートレンドの因子とCCI期間を市場状況に合わせて調整できます.
シンプルな論理と理解しやすい 初心者にとって素晴らしい
株式,外為,暗号に適用されます パラメータ調整によって
価格が激しく変動すると多くの誤った信号が発生する.スーパートレンドの因子を低周波に増加させる.
スーパートレンドは少し遅れています 勢い指標を組み合わせて 加速するトレンドを追跡します
リスク管理のために ATR をベースにしたストップ損失を追加します.
異なる市場のためのパラメータを調整します.
MACD,KDJなどと組み合わせて 強い勢いを捉える
AIとアンサンブルメソッドを使用してパラメータとルールを最適化します
この戦略は,マルチタイムフレームトレンド追跡のためにSupertrendとCCIをうまく組み合わせています. シンプルな論理,良い報酬の可能性,カスタマイズ可能性. パラメータチューニング,ストップ損失,機械学習を通じてさらに改善し,堅牢な取引システムになります.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=Daveatt StrategyName = "Best Supertrend CCI Strategy" ShortStrategyName = "Best Supertrend CCI Strategy" strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true ) ////////////////////////// //* COLOR CONSTANTS *// ////////////////////////// AQUA = #00FFFFFF BLUE = #0000FFFF RED = #FF0000FF LIME = #00FF00FF GRAY = #808080FF DARKRED = #8B0000FF DARKGREEN = #006400FF GOLD = #FFD700 WHITE = color.white // Plots GREEN_LIGHT = color.new(color.green, 40) RED_LIGHT = color.new(color.red, 40) BLUE_LIGHT = color.new(color.aqua, 40) PURPLE_LIGHT = color.new(color.purple, 40) source = input(close) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// CCI ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// cci_period = input(28, "CCI Period") cci = cci(source, cci_period) //UL = input(80, "Upper level") //LL = input(20, "Lower Level") ML = input(0, "CCI Mid Line pivot") /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// SUPERTREND ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float) Pd=input(3, title="[ST] PD", minval=1,maxval = 100) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////// SUPERTREND DETECTION ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// f_supertrend(Factor, Pd) => Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown [Trend, Tsl] [st_trend, st_tsl] = f_supertrend(Factor, Pd) // Plot the ST linecolor = close >= st_tsl ? color.green : color.red plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0) isLong = st_trend == 1 isShort = st_trend == -1 longClose = isLong[1] and isShort shortClose = isShort[1] and isLong strategy.entry("Long", 1, when=isLong) strategy.close("Long", when=longClose ) strategy.entry("Short", 0, when=isShort) strategy.close("Short", when=shortClose )