Kurzfristiges Trading mit Supertrend- und CCI-Strategien


Erstellungsdatum: 2024-02-26 10:39:49 zuletzt geändert: 2024-02-26 10:39:49
Kopie: 0 Klicks: 927
1
konzentrieren Sie sich auf
1617
Anhänger

Kurzfristiges Trading mit Supertrend- und CCI-Strategien

Überblick

Die Strategie basiert auf zwei verschiedenen Parameter-Sets, dem Hypertrend-Indikator und dem CCI-Indikator, mit dem Ziel, kurze Kursschwankungen zu erfassen und hochfrequente Geschäfte zu tätigen. Der Hypertrend-Indikator beurteilt die Trendrichtung der Preise durch die dynamische Berechnung des ATR, während der CCI-Indikator verwendet wird, um zu beurteilen, ob der Markt überkauft oder überverkauft ist. Die Strategie kombiniert die beiden, um ein Handelssignal zu erzeugen.

Strategieprinzip

  • Mit 14 ATR-Zyklen wird ein schneller Übertrend berechnet, mit einem Setting-Faktor von 3; mit 14 ATR-Zyklen wird ein langsamer Übertrend berechnet, mit einem Setting-Faktor von 6. Schneller Übertrend ist empfindlicher und kann kurzfristige Veränderungen erfassen. Langsamer Übertrend beurteilt die Haupttrendrichtung.

  • Wenn der schnelle Übertrend den Preis durchbricht und der langsame Übertrend noch über dem Preis ist, wird als mögliches Umkehrsignal beurteilt, mehr getan; wenn der schnelle Übertrend den Preis durchbricht und der langsame Übertrend noch unter dem Preis ist, wird als mögliches Umkehrsignal beurteilt, leer gemacht.

  • Der CCI wird auch verwendet, um zu beurteilen, ob ein Markt überkauft oder überverkauft ist. Wenn der CCI über 100 liegt, ist der Markt überkauft, wenn er unter 100 liegt, ist der Markt überverkauft.

  • In Fällen von Überkauf und Überverkauf ist es wahrscheinlicher, dass ein Übertrend-Indikator eine Umkehrung signalisiert, was die Kernlogik der Strategie ist.

Analyse der Stärken

  • Die Kombination von Übertrend-Beschlüsse über Trendwendepunkte und CCI-Beschlüsse über Überkauf-Überverkauf-Situationen kann die falsche Durchbruchfilterung wirksam filtern und die Signalqualität verbessern.

  • Schnelle Übertrend-Kreuzungen bilden ein Handelssignal, das eine hohe Aus- und Eintrittsfrequenz ermöglicht.

  • Die Parameter für den CCI und den Hypertrend können flexibel an unterschiedliche Marktbedingungen angepasst werden.

  • Die Strategie ist klar und verständlich, die Parameter sind leicht zu ändern.

Risiken und Lösungen

  • Der Hypertrend selbst ist zeitlich verzögert und kann die erste Chance auf Umkehr verpassen. Es kann versucht werden, den ATR-Zyklus zu verkürzen.

  • Es besteht die Gefahr, dass der CCI rückgängig gemacht wird, und zu große Schwankungen können zu Mehrfachgeschäften führen. Es kann versucht werden, die Parameter des CCI zu erhöhen oder die Grenzen anzupassen.

  • Hochfrequente Geschäfte können die Häufigkeit der Geschäfte und die Gebühren erhöhen. Es wird empfohlen, die Haltedauer anzupassen und die Häufigkeit der Auslösung von Leerpositionen zu senken.

Optimierung

  • Die Parameterkombinationen können basierend auf Kennzahlen wie maximaler Rückzug oder Gewinn- und Verlust-Ratio durchforstet werden, um die optimalen Parameter zu finden.

  • Die automatische Optimierung der Parameter kann mit Methoden des maschinellen Lernens wie der Merkmalewahl für die Parameter im Zufallswald kombiniert werden.

  • Es kann erforscht werden, wie man die maximale Anzahl von Positionen innerhalb eines bestimmten Zeitraums begrenzen kann, um das Risiko zu kontrollieren.

Zusammenfassen

Die Strategie nutzt die Übertrend-Indikatoren, um kurzfristige Trendwendepunkte zu ermitteln, und unterstützt die Filtersignale des CCI-Indikators. Wenn die Parameter vernünftig eingestellt sind, können wir effiziente Short-Line-Handelsvorgänge realisieren. Aber wir müssen auch auf die Risiken achten, die durch zu häufige Transaktionen entstehen. Durch die Anpassung der Parameter und die Optimierung der Algorithmen können wir die Strategie verbessern.

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