Perdagangan jangka pendek dengan strategi Supertrend dan CCI


Tanggal Pembuatan: 2024-02-26 10:39:49 Akhirnya memodifikasi: 2024-02-26 10:39:49
menyalin: 0 Jumlah klik: 927
1
fokus pada
1617
Pengikut

Perdagangan jangka pendek dengan strategi Supertrend dan CCI

Ringkasan

Strategi ini didasarkan pada indikator hypertrend dan indikator CCI dengan dua set parameter yang berbeda, yang bertujuan untuk menangkap fluktuasi harga garis pendek dan melakukan perdagangan frekuensi tinggi. Indikator hypertrend menilai arah tren harga dengan menghitung ATR secara dinamis, sedangkan indikator CCI digunakan untuk menentukan apakah pasar telah membeli atau menjual terlalu banyak. Strategi ini menggabungkan keduanya untuk membentuk sinyal perdagangan.

Prinsip Strategi

  • ATR dengan 14 siklus menghitung overtrend cepat, dengan faktor pengaturan 3; ATR dengan 14 siklus menghitung overtrend lambat, dengan faktor pengaturan 6. Overtrend cepat lebih sensitif, dapat menangkap perubahan jangka pendek; Overtrend lambat menentukan arah tren utama.

  • Ketika tren cepat melewati harga di bawah, dan tren lambat melampaui masih di atas harga, dinilai sebagai sinyal pembalikan yang mungkin, lakukan lebih banyak; ketika tren cepat melewati harga di atas, dan tren lambat melampaui masih di bawah harga, dinilai sebagai sinyal pembalikan yang mungkin, lakukan kosong.

  • Selain itu, menggunakan CCI untuk menilai kondisi overbought dan oversold di pasar. CCI di atas 100 berarti pasar overbought, dan di bawah 100 berarti pasar oversold.

  • Dalam situasi overbought dan oversold, indikator overtrend lebih mungkin untuk mengirimkan sinyal reversal, yang merupakan logika inti dari strategi tersebut.

Analisis Keunggulan

  • Kombinasi penilaian overtrend dengan titik balik tren dan penilaian overbought dan oversold oleh CCI, dapat secara efektif memfilter terobosan palsu dan meningkatkan kualitas sinyal.

  • Transformasi sinyal perdagangan yang terjadi dengan cepat dan cepat, sehingga memungkinkan masuk dan keluar dengan frekuensi tinggi.

  • Parameter CCI dan parameter supertrend dapat disesuaikan secara fleksibel, sesuai dengan kondisi pasar yang berbeda.

  • Strategi yang jelas dan mudah dimengerti, dan parameter yang mudah disesuaikan.

Risiko dan Solusi

  • Supertrend sendiri ada lag, mungkin kehilangan kesempatan pertama untuk membalikkan. Anda dapat mencoba untuk mempersingkat siklus ATR.

  • CCI memiliki risiko regresi, dan jika terlalu banyak berfluktuasi dapat menyebabkan perdagangan berulang. Anda dapat menguji parameter CCI yang lebih besar atau menyesuaikan batas.

  • Perdagangan frekuensi tinggi dapat meningkatkan frekuensi transaksi dan beban biaya. Disarankan untuk menyesuaikan waktu memegang posisi dan mengurangi frekuensi membuka posisi kosong.

Optimalkan Pikiran

  • Kombinasi parameter dapat dioptimalkan berdasarkan indikator seperti maksimum penarikan balik atau rasio untung rugi untuk mencari parameter optimal.

  • Metode pembelajaran mesin dapat dikombinasikan seperti hutan acak untuk memilih karakteristik terhadap parameter, untuk mencapai optimasi otomatis dari parameter tersebut.

  • Anda dapat mengeksplorasi pembatasan jumlah maksimum posisi yang dibuka dalam periode tertentu untuk mengendalikan risiko.

Meringkaskan

Strategi ini memanfaatkan indikator supertrend untuk menentukan titik balik tren jangka pendek, ditambah dengan sinyal filter indikator CCI. Apabila parameter diatur dengan wajar, perdagangan garis pendek yang efisien dapat dicapai. Namun juga perlu waspada terhadap berbagai jenis risiko yang ditimbulkan oleh perdagangan yang terlalu sering, dengan penyesuaian parameter dan pengoptimalan algoritma yang terus meningkat, dapat memperoleh kinerja strategi yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend & CCI Strategy Scalp", overlay=true)

// SuperTrend Settings
atrLength1 = input(14, "ATR Length 1")
factor1 = input(3.0, "Factor 1" )
atrLength2 = input(14, "ATR Length 2")
factor2 = input(6.0, "Factor 2")
 // Calculate SuperTrend 1
[superTrend1, direction1] = ta.supertrend(factor1, atrLength1)

// // Calculate SuperTrend 2
[superTrend2, direction2] = ta.supertrend(factor2, atrLength2)

// superTrend1 := barstate.isfirst ? na : superTrend1
// upTrend1 =    plot(direction1 < 0 ? superTrend1 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
// downTrend1 =  plot(direction1 < 0 ? na : superTrend1, "Down Trend", color = color.red,   style = plot.style_linebr)
// bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)

// fill(bodyMiddle1, upTrend1,   color.new(color.green, 90), fillgaps = false)
// fill(bodyMiddle1, downTrend1, color.new(color.red,   90), fillgaps = false)

// superTrend2 := barstate.isfirst ? na : superTrend2
// upTrend2 =    plot(direction1 < 0 ? superTrend2 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
// downTrend2 =  plot(direction1 < 0 ? na : superTrend2, "Down Trend", color = color.red,   style = plot.style_linebr)
// bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)

// fill(bodyMiddle2, upTrend2,   color.new(color.green, 90), fillgaps = false)
// fill(bodyMiddle2, downTrend2, color.new(color.red,   90), fillgaps = false)
// CCI Settings
//cciLength = input.int(14, title="CCI Length")
cciLevel = input.int(100, title="CCI Level")

// Calculate CCI
length = input.int(20, minval=1)
src = input(hlc3, title="Source")
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
//plot(cci, "CCI", color=#2962FF)
//band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
//hline(0, "Middle Band", color=color.new(#787B86, 50))
//band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
//fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(cci, smoothingLength, typeMA)
//plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)


// Entry conditions
longCondition = superTrend1 > close and superTrend2 < close and smoothingLine < -100
shortCondition = superTrend1 < close and superTrend2 > close and smoothingLine > 100

/// Initialize variables to track trade direction
var bool isLong = na
var bool isShort = na

// Strategy entry and exit
if (longCondition)
    strategy.entry("Long", strategy.long)
    isLong := true
    isShort := false
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    isShort := true
    isLong := false

// Close Long positions
if (isLong)
    strategy.close("Long", when = superTrend1 < close or superTrend2 > close or cci > 100)

// Close Short positions
if (isShort)
    strategy.close("Short", when = superTrend1 > close or superTrend2 < close or cci < -100)



// Plotting
plot(superTrend1, color=color.blue, title="SuperTrend 1")
plot(superTrend2, color=color.red, title="SuperTrend 2")
//plot(cci, color=color.orange, title="CCI")