Diese Strategie basiert auf zwei Super Trend-Indikatoren mit unterschiedlichen Parameter-Einstellungen und dem CCI-Indikator, mit dem Ziel, kurzfristige Kursschwankungen für den Hochfrequenzhandel zu erfassen. Der Super Trend-Indikator beurteilt die Trendrichtung dynamisch durch Berechnung des ATR, während der CCI-Indikator verwendet wird, um festzustellen, ob der Markt überkauft oder überverkauft ist. Die Strategie kombiniert beide, um Handelssignale zu bilden.
Verwenden Sie 14 Perioden ATR zur Berechnung des schnellen Supertrends mit einem Faktor von 3; Verwenden Sie 14 Perioden ATR zur Berechnung des langsamen Supertrends mit einem Faktor von 6. Der schnelle Supertrend ist empfindlicher und kann kurzfristige Veränderungen erfassen; der langsame Supertrend bestimmt die Haupttrendrichtung.
Wenn der schnelle Supertrend unter den Preis überschreitet und der langsame Supertrend immer noch über dem Preis liegt, wird er als mögliches Umkehrsignal für den Long-Gang beurteilt; wenn der schnelle Supertrend über den Preis überschreitet und der langsame Supertrend immer noch unter dem Preis liegt, wird er als mögliches Umkehrsignal für den Short-Gang beurteilt.
Gleichzeitig wird der CCI verwendet, um zu beurteilen, ob der Markt überkauft oder überverkauft ist. Ein CCI über 100 zeigt einen überkauften Markt an, während unter -100 ein überverkaufter Markt bedeutet.
Die Wahrscheinlichkeit, dass der Super Trend-Indikator ein Umkehrsignal ausgibt, ist höher, wenn der Markt überkauft oder überverkauft ist.
Die Kombination von Super Trend zur Bestimmung von Trendumkehrpunkten und CCI zur Beurteilung von Überkauf-/Überverkaufsbedingungen kann falsche Ausbrüche effektiv filtern und die Signalqualität verbessern.
Schnelle und langsame Super Trend Crossovers bilden Handelssignale, um einen Hochfrequenz-Eingang und -Ausgang zu erreichen.
Die CCI-Parameter und die Super Trend-Parameter können flexibel an die unterschiedlichen Marktbedingungen angepasst werden.
Die Strategieidee ist klar und leicht verständlich, und die Anpassung der Parameter ist ebenfalls relativ einfach.
Der Super Trend selbst hat einen Verzögerungseffekt, möglicherweise verpasst die erste Umkehrmöglichkeit.
CCI hat Rückrufrisiken, und übermäßige Schwankungen können auch zu wiederholtem Handel führen.
Der Hochfrequenzhandel erhöht die Transaktionsfrequenz und die Handelskosten, es wird empfohlen, die Haltezeit anzupassen und die Öffnungs-/Schließfrequenz zu reduzieren.
Die Parameterkombination kann auf der Grundlage des maximalen Drawdowns oder der Gewinn-Verlust-Ratio durchlaufen und optimiert werden, um den optimalen Parameter zu finden.
Maschinelle Lernmethoden wie Random Forest können für die Funktionswahl an Parametern verwendet werden, um eine automatische Parameteroptimierung zu erreichen.
Erforschen Sie die Einschränkung der maximalen Anzahl der eröffneten Positionen innerhalb eines bestimmten Zyklus, um Risiken zu kontrollieren.
Die Strategie nutzt den Super Trend-Indikator voll aus, um kurzfristige Trendumkehrpunkte zu bestimmen, ergänzt durch den CCI-Indikator, um Signale auszufiltern. Wenn die Parameter-Einstellungen angemessen sind, kann sie einen effizienten kurzfristigen Handel erreichen.
/*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")