Strategi Perdagangan Multi Timeframe CCI Supertrend Terbaik

Penulis:ChaoZhang, Tanggal: 2024-01-18 15:09:33
Tag:

img

Gambaran umum

Strategi ini mengintegrasikan indikator Supertrend dan Indeks Saluran Komoditas (CCI) untuk mewujudkan pelacakan tren dan generasi sinyal perdagangan multi timeframe. Ide utamanya adalah menggunakan indikator CCI untuk menilai arah tren jangka pendek sambil menggabungkan indikator Supertrend untuk menentukan arah tren jangka menengah hingga panjang. Sinyal perdagangan dihasilkan ketika tren jangka pendek dan jangka menengah hingga panjang sejajar.

Logika Strategi

Indikator CCI untuk Tren Jangka Pendek

Indikator CCI dapat mengidentifikasi skenario overbought dan oversold. Sebuah crossover ke atas dari garis 0 adalah sinyal bullish sementara yang ke bawah adalah sinyal bearish. Strategi ini memanfaatkan fitur ini untuk menentukan arah tren jangka pendek.

cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)  
ML = input(0, "CCI Mid Line pivot")

Kode di atas mendefinisikan periode CCI dan posisi garis tengah.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn  

Kode ini memeriksa apakah cci melintasi di atas/di bawah garis 0 untuk memperbarui band atas/bawah Supertrend.

Supertrend untuk Trend Jangka Menengah dan Panjang

Indikator Supertrend menggabungkan ATR dengan harga untuk menentukan tren jangka menengah hingga panjang. Penetrasi ke atas band atas menandakan tren naik sementara yang ke bawah menandakan tren turun.

Supertrend dihitung sebagai:

Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd)) 

Di mana faktor dan Pd adalah parameter yang dapat disesuaikan.

Variabel Trend menentukan arah Supertrend saat ini:

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)  

Mengintegrasikan CCI dan Supertrend

Dengan mengintegrasikan CCI dan Supertrend, strategi ini mewujudkan penilaian tren multi-frame waktu. CCI menangkap perubahan jangka pendek sementara Supertrend berfokus pada pergerakan yang lebih besar.

Ketika arah setuju, sinyal perdagangan yang lebih dapat diandalkan dihasilkan.

isLong = st_trend == 1 
isShort = st_trend == -1

Masuk ketika jangka pendek dan jangka menengah sejajar, keluar ketika arah tidak setuju.

Keuntungan

Penghakiman Multi Timeframe

Mengintegrasikan indikator jangka pendek dan jangka menengah untuk sinyal yang lebih andal.

Parameter yang dapat disesuaikan

Faktor Supertrend dan Periode CCI dapat disesuaikan dengan kondisi pasar.

Sederhana dan Jelas

Logika sederhana dan mudah dipahami, bagus untuk pemula.

Penerapan yang luas

Terapkan untuk saham, forex, crypto dengan pengaturan parameter.

Risiko dan Solusi

Harga Whipsaw

Banyak sinyal palsu dapat terjadi ketika harga berfluktuasi dengan keras.

Menunda Gerakan Kuat

Kombinasi indikator momentum untuk melacak tren yang mempercepat.

Tidak ada Stop Loss

Tambahkan stop loss berdasarkan ATR untuk pengendalian risiko.

Arahan Optimasi

Korélasi Pasar

Sesuaikan parameter untuk pasar yang berbeda.

Kombinasi Momentum

Gabungkan dengan MACD, KDJ dll untuk menangkap pergerakan momentum yang kuat.

Pembelajaran Mesin

Menggunakan metode AI dan ensemble untuk mengoptimalkan parameter dan aturan.

Kesimpulan

Strategi ini berhasil menggabungkan Supertrend dan CCI untuk pelacakan tren multi timeframe. Logika sederhana, potensi imbalan yang baik dan kustomisasi. Dapat ditingkatkan lebih lanjut melalui pengaturan parameter, stop loss, dan pembelajaran mesin untuk menjadi sistem perdagangan yang solid.


/*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 )


Lebih banyak