Strategi Dagangan Multi Timeframe CCI Supertrend Terbaik

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

img

Ringkasan

Strategi ini mengintegrasikan penunjuk Supertrend dan Indeks Saluran Komoditi (CCI) untuk merealisasikan pengesanan trend dan penjanaan isyarat perdagangan pelbagai jangka masa. Idea utama adalah untuk menggunakan penunjuk CCI untuk menilai arah trend jangka pendek sambil menggabungkan penunjuk Supertrend untuk menentukan arah trend jangka sederhana hingga panjang. Isyarat perdagangan dihasilkan apabila trend jangka pendek dan jangka sederhana hingga panjang sejajar.

Logika Strategi

Indikator CCI untuk Trend Jangka Pendek

Indikator CCI boleh mengenal pasti senario overbought dan oversold. Penyambungan ke atas garis 0 adalah isyarat bullish manakala yang ke bawah adalah isyarat bearish. Strategi ini menggunakan ciri ini untuk menentukan arah trend jangka pendek.

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

Kod di atas menentukan tempoh CCI dan kedudukan pertengahan baris.

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

Kod ini memeriksa jika cci melintasi di atas / di bawah garis 0 untuk mengemas kini band atas / bawah Supertrend.

Supertrend untuk Trend Jangka Menengah hingga Panjang

Indikator Supertrend menggabungkan ATR dengan harga untuk menentukan trend jangka menengah hingga panjang. Penembusan ke atas jalur atas menandakan trend menaik manakala yang ke bawah menandakan trend menurun.

Supertrend dikira sebagai:

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

Di mana faktor dan Pd adalah parameter yang boleh diselaraskan.

Peralihan Trend menentukan arah Supertrend semasa:

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

Mengintegrasikan CCI dan Supertrend

Dengan mengintegrasikan CCI dan Supertrend, strategi ini merealisasikan penilaian trend pelbagai jangka masa. CCI menangkap perubahan jangka pendek sementara Supertrend memberi tumpuan kepada pergerakan yang lebih besar.

Apabila arah bersetuju, isyarat perdagangan yang lebih boleh dipercayai dihasilkan.

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

Masuk apabila jangka pendek dan sederhana sejajar, keluar apabila arah tidak bersetuju.

Kelebihan

Penghakiman Pelbagai Jangka Masa

Mengintegrasikan penunjuk jangka pendek dan jangka menengah untuk isyarat yang lebih boleh dipercayai.

Parameter yang boleh disesuaikan

Faktor Supertrend dan Tempoh CCI boleh diselaraskan dengan keadaan pasaran.

Sederhana dan Jelas

Logik yang mudah dan mudah difahami, bagus untuk pemula.

Penggunaan yang meluas

Boleh digunakan untuk saham, forex, crypto dengan penyesuaian parameter.

Risiko dan Penyelesaian

Harga Whipsaw

Banyak isyarat palsu boleh berlaku apabila harga turun naik secara ganas.

Meninggalkan Pergerakan Kuat

Supertrend mempunyai beberapa ketinggalan. Gabungkan penunjuk momentum untuk mengesan trend yang semakin pesat.

Tiada Stop Loss

Tambah stop loss berdasarkan ATR untuk kawalan risiko.

Arahan pengoptimuman

Hubungan Pasaran

Sesuaikan parameter untuk pasaran yang berbeza.

Gabungan Momentum

Gabungkan dengan MACD, KDJ dan lain-lain untuk menangkap pergerakan momentum yang kuat.

Pembelajaran Mesin

Menggunakan AI dan kaedah ensemble untuk mengoptimumkan parameter dan peraturan.

Kesimpulan

Strategi ini berjaya menggabungkan Supertrend dan CCI untuk pengesanan trend pelbagai jangka masa. Logik mudah, potensi ganjaran yang baik dan penyesuaian. Boleh bertambah baik melalui penyesuaian parameter, stop loss, dan pembelajaran mesin untuk menjadi sistem perdagangan yang kukuh.


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