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