Dagangan jangka pendek dengan supertrend dan strategi CCI


Tarikh penciptaan: 2024-02-26 10:39:49 Akhirnya diubah suai: 2024-02-26 10:39:49
Salin: 0 Bilangan klik: 927
1
fokus pada
1617
Pengikut

Dagangan jangka pendek dengan supertrend dan strategi CCI

Gambaran keseluruhan

Strategi ini berdasarkan kepada dua set parameter yang berbeza, iaitu indikator hypertrend dan indikator CCI, yang bertujuan untuk menangkap turun naik harga garis pendek dan melakukan perdagangan frekuensi tinggi. Indikator hypertrend menilai arah trend harga dengan mengira ATR secara dinamik; manakala indikator CCI digunakan untuk menentukan sama ada pasaran terlalu banyak membeli atau terlalu banyak menjual. Strategi ini menggabungkan kedua-duanya untuk membentuk isyarat perdagangan.

Prinsip Strategi

  • Menggunakan ATR 14 kitaran untuk mengira tren cepat, faktor tetapan adalah 3; menggunakan ATR 14 kitaran untuk mengira tren perlahan, faktor tetapan adalah 6. Tren cepat lebih sensitif dan dapat menangkap perubahan jangka pendek; tren perlahan menilai arah trend utama.

  • Apabila laju melampaui trend melintasi harga, dan perlahan melampaui trend masih di atas harga, menilai sebagai mungkin isyarat pembalikan, lakukan lebih banyak; apabila laju melampaui trend melintasi harga, dan perlahan melampaui trend masih di bawah harga, menilai sebagai mungkin isyarat pembalikan, buat kosong.

  • Pada masa yang sama, menggunakan CCI untuk menilai keadaan pasaran overbuy oversell. CCI lebih tinggi daripada 100 ketika pasaran adalah overbuy, di bawah 100 ketika pasaran adalah oversold.

  • Dalam kes overbought dan oversold, indikator hypertrend lebih cenderung untuk memberi isyarat pembalikan, yang merupakan logik utama strategi tersebut.

Analisis kelebihan

  • Gabungan antara penilaian overtrend dan titik balik trend dan penilaian overbought dan oversold oleh CCI, dapat menyaring penembusan palsu dan meningkatkan kualiti isyarat.

  • Pergerakan yang cepat dan beransur-ansur melangkaui trend membentuk isyarat dagangan, mewujudkan frekuensi keluar masuk yang tinggi.

  • Parameter CCI dan parameter super trend boleh disesuaikan secara fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

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

Risiko dan Penyelesaian

  • Super trend sendiri mempunyai kelewatan masa, dan mungkin terlepas peluang pertama untuk berbalik. Anda boleh mencuba memendekkan kitaran ATR.

  • CCI mempunyai risiko penyesuaian semula, turun naik yang terlalu besar juga boleh menyebabkan perdagangan berulang. Anda boleh mencuba parameter CCI yang lebih besar atau menyesuaikan sempadan.

  • Perdagangan frekuensi tinggi mudah meningkatkan frekuensi perdagangan dan beban bayaran. Ia disyorkan untuk menyesuaikan masa pegangan dan mengurangkan frekuensi pembukaan kedudukan rendah.

Optimum idea

  • Kombinasi parameter boleh dioptimumkan secara berulang, mencari parameter optimum berdasarkan parameter seperti pengunduran maksimum atau nisbah untung rugi.

  • Kaedah pembelajaran mesin seperti hutan rawak boleh digabungkan untuk memilih ciri untuk parameter, untuk mencapai pengoptimuman parameter secara automatik.

  • Anda boleh cuba untuk mengawal risiko dengan menghadkan jumlah maksimum yang boleh dibuka dalam tempoh tertentu.

ringkaskan

Strategi ini memanfaatkan penunjuk hypertrend untuk menentukan titik perubahan trend jangka pendek, ditambah dengan isyarat penapis penunjuk CCI. Apabila parameter ditetapkan dengan munasabah, perdagangan garis pendek yang cekap dapat dicapai. Tetapi juga perlu waspada terhadap pelbagai jenis risiko yang dibawa oleh perdagangan yang terlalu kerap, dengan penyesuaian parameter dan pengoptimuman algoritma yang terus meningkat, dapat memperoleh prestasi strategi yang lebih baik.

Kod 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")