最良のスーパートレンドCCIマルチタイムフレーム取引戦略

作者: リン・ハーンチャオチャン開催日:2024年1月18日15時09分33秒
タグ:

img

概要

この戦略は,スーパートレンド指標とコモディティチャネルインデックス (CCI) を統合し,マルチタイムフレームトレンド追跡とトレードシグナル生成を実現する.主なアイデアは,スーパートレンド指標を組み合わせながら短期トレンド方向を判断するために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を統合することで,この戦略は複数のタイムフレームのトレンド判断を実現します.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 )


もっと