Strategi ini berdasarkan dua penunjuk Super Trend dengan tetapan parameter yang berbeza dan penunjuk CCI, yang bertujuan untuk menangkap turun naik harga jangka pendek untuk perdagangan frekuensi tinggi. Penunjuk Super Trend menilai arah trend secara dinamik dengan mengira ATR, sementara penunjuk CCI digunakan untuk menentukan sama ada pasaran terlalu banyak dibeli atau terlalu banyak dijual. Strategi menggabungkan kedua-duanya untuk membentuk isyarat perdagangan.
Gunakan 14 tempoh ATR untuk mengira Super Trend yang cepat, dengan faktor ditetapkan menjadi 3; gunakan 14 tempoh ATR untuk mengira Super Trend yang perlahan, dengan faktor ditetapkan menjadi 6. Super Trend yang cepat lebih sensitif dan dapat menangkap perubahan jangka pendek; Super Trend yang perlahan menentukan arah trend utama.
Apabila Super Trend yang cepat melintasi di bawah harga, dan Super Trend yang perlahan masih di atas harga, ia dinilai sebagai isyarat pembalikan yang mungkin untuk pergi lama; apabila Super Trend yang cepat melintasi di atas harga, dan Super Trend yang perlahan masih di bawah harga, ia dinilai sebagai isyarat pembalikan yang mungkin untuk pergi pendek.
Pada masa yang sama, gunakan CCI untuk menilai sama ada pasaran terlalu banyak dibeli atau terlalu banyak dijual. CCI di atas 100 menunjukkan pasaran terlalu banyak dibeli, sementara di bawah -100 bermaksud pasaran terlalu banyak dijual. Isyarat CCI digabungkan untuk menapis pecah palsu.
Kemungkinan penunjuk Super Trend mengeluarkan isyarat pembalikan adalah lebih tinggi apabila pasaran terlalu banyak dibeli atau terlalu banyak dijual.
Menggabungkan Super Trend untuk menentukan titik pembalikan trend dan CCI untuk menilai keadaan overbought/oversold dapat menapis secara berkesan pecah palsu dan meningkatkan kualiti isyarat.
Penyeberangan Super Trend yang cepat dan perlahan membentuk isyarat perdagangan untuk mencapai kemasukan dan keluar frekuensi tinggi.
Parameter CCI dan parameter Super Trend boleh disesuaikan dengan fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Idea strategi adalah jelas dan mudah difahami, dan pelarasan parameter juga agak mudah.
Super Trend itu sendiri mempunyai kesan kelewatan, mungkin terlepas peluang pembalikan pertama.
CCI mempunyai risiko panggilan balik, dan turun naik yang berlebihan juga boleh menyebabkan perdagangan berulang.
Perdagangan frekuensi tinggi cenderung untuk meningkatkan kekerapan transaksi dan kos dagangan.
Gabungan parameter boleh dilalui dan dioptimumkan berdasarkan pengeluaran maksimum atau nisbah keuntungan / kerugian untuk mencari parameter yang optimum.
Kaedah pembelajaran mesin seperti Random Forest boleh digunakan untuk pemilihan ciri pada parameter untuk mencapai pengoptimuman parameter automatik.
Memeriksa mengehadkan jumlah maksimum kedudukan pembukaan dalam kitaran tertentu untuk mengawal risiko.
Strategi ini menggunakan sepenuhnya penunjuk Super Trend untuk menentukan titik pembalikan trend jangka pendek, ditambah dengan penunjuk CCI untuk menapis isyarat. Apabila tetapan parameter adalah munasabah, ia dapat mencapai perdagangan jangka pendek yang cekap. Tetapi juga perlu berhati-hati terhadap risiko yang timbul daripada perdagangan berlebihan, dan terus meningkatkan prestasi strategi melalui penyesuaian parameter dan pengoptimuman algoritma.
/*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")