Sumber daya yang dimuat... Pemuatan...

Supertrend dan Strategi Scalping CCI

Penulis:ChaoZhang, Tanggal: 2024-02-26 10:39:49
Tag:

img

Gambaran umum

Strategi ini didasarkan pada dua indikator Super Trend dengan pengaturan parameter yang berbeda dan indikator CCI, yang bertujuan untuk menangkap fluktuasi harga jangka pendek untuk perdagangan frekuensi tinggi. Indikator Super Trend menilai arah tren secara dinamis dengan menghitung ATR, sementara indikator CCI digunakan untuk menentukan apakah pasar terlalu banyak dibeli atau terlalu banyak dijual. Strategi ini menggabungkan keduanya untuk membentuk sinyal perdagangan.

Logika Strategi

  • Gunakan 14 periode ATR untuk menghitung Super Trend yang cepat, dengan faktor yang ditetapkan menjadi 3; gunakan 14 periode ATR untuk menghitung Super Trend yang lambat, dengan faktor yang ditetapkan menjadi 6. Super Trend yang cepat lebih sensitif dan dapat menangkap perubahan jangka pendek; Super Trend yang lambat menentukan arah tren utama.

  • Ketika Super Trend cepat melintasi di bawah harga, dan Super Trend lambat masih di atas harga, itu dinilai sebagai sinyal pembalikan yang mungkin untuk pergi panjang; ketika Super Trend cepat melintasi di atas harga, dan Super Trend lambat masih di bawah harga, itu dinilai sebagai sinyal pembalikan yang mungkin untuk pergi pendek.

  • Pada saat yang sama, gunakan CCI untuk menilai apakah pasar terlalu banyak dibeli atau terlalu banyak dijual. CCI di atas 100 menunjukkan pasar yang terlalu banyak dibeli, sedangkan di bawah -100 berarti pasar yang terlalu banyak dijual. Sinyal CCI dikombinasikan untuk menyaring keluar kegagalan palsu.

  • Probabilitas indikator Super Trend mengeluarkan sinyal pembalikan lebih tinggi ketika pasar terlalu banyak dibeli atau terlalu banyak dijual.

Analisis Keuntungan

  • Kombinasi Super Trend untuk menentukan titik pembalikan tren dan CCI untuk menilai kondisi overbought/oversold dapat secara efektif menyaring breakout palsu dan meningkatkan kualitas sinyal.

  • Super Trend crossover yang cepat dan lambat membentuk sinyal perdagangan untuk mencapai entri dan keluar frekuensi tinggi.

  • Parameter CCI dan parameter Super Trend dapat disesuaikan secara fleksibel untuk beradaptasi dengan kondisi pasar yang berbeda.

  • Gagasan strategi jelas dan mudah dimengerti, dan penyesuaian parameter juga relatif sederhana.

Risiko dan Solusi

  • Super Trend sendiri memiliki efek lag, mungkin kehilangan kesempatan pembalikan pertama.

  • CCI memiliki risiko callback, dan fluktuasi yang berlebihan juga dapat menyebabkan perdagangan berulang.

  • Perdagangan frekuensi tinggi cenderung meningkatkan frekuensi transaksi dan biaya perdagangan.

Arahan Optimasi

  • Kombinasi parameter dapat dilalui dan dioptimalkan berdasarkan penarikan maksimum atau rasio keuntungan / kerugian untuk menemukan parameter optimal.

  • Metode pembelajaran mesin seperti Random Forest dapat digunakan untuk pemilihan fitur pada parameter untuk mencapai optimasi parameter otomatis.

  • Jelajahi membatasi jumlah maksimum posisi pembukaan dalam siklus tertentu untuk mengendalikan risiko.

Kesimpulan

Strategi ini memanfaatkan indikator Super Trend untuk menentukan titik pembalikan tren jangka pendek, ditambah dengan indikator CCI untuk menyaring sinyal. Ketika pengaturan parameter wajar, itu dapat mencapai perdagangan jangka pendek yang efisien.


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



Lebih banyak