Best Supertrend CCI Multi-Timeframe Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-18 15:09:33
Tags:

img

Übersicht

Diese Strategie integriert den Supertrend-Indikator und den Commodity Channel Index (CCI), um eine mehrjährige Trendverfolgung und Handelssignalgenerierung zu realisieren.

Strategie Logik

CCI-Indikator für kurzfristige Entwicklung

Der CCI-Indikator kann überkaufte und überverkaufte Szenarien identifizieren. Ein Aufwärts-Crossover der Nulllinie ist ein bullisches Signal, während ein Abwärtssignal ein bärisches Signal ist. Diese Strategie nutzt diese Funktion, um die kurzfristige Trendrichtung zu bestimmen.

cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)  
ML = input(0, "CCI Mid Line pivot")

Der oben genannte Code definiert die CCI-Periode und die mittlere Position.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn  

Dieser Code überprüft, ob cci über/unter die 0-Linie geht, um das obere/untere Band des Supertrends zu aktualisieren.

Supertrend für den mittelfristigen bis langfristigen Trend

Der Supertrend-Indikator kombiniert ATR mit dem Preis, um mittelfristige bis langfristige Trends zu bestimmen.

Der Supertrend wird berechnet:

Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd)) 

Hierbei sind Faktor und Pd einstellbare Parameter.

Die Trendvariable bestimmt die aktuelle Supertrend-Richtung:

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)  

Integration von CCI und Supertrend

Durch die Integration von CCI und Supertrend realisiert diese Strategie eine Trendbeurteilung für mehrere Zeitrahmen.

Wenn die Richtungen übereinstimmen, werden zuverlässigere Handelssignale erzeugt.

isLong = st_trend == 1 
isShort = st_trend == -1

Eintritte, wenn kurz- und mittelfristige Linie, Ausstiege, wenn Richtungen nicht übereinstimmen.

Vorteile

Urteil über mehrere Zeitrahmen

Integration von kurz- und mittelfristigen Indikatoren für zuverlässigere Signale.

Anpassbare Parameter

Der Supertrend-Faktor und die CCI-Periode können an die Marktbedingungen angepasst werden.

Einfach und klar

Einfache Logik und leicht verständlich, ideal für Anfänger.

Weite Anwendbarkeit

Anwendbar für Aktien, Devisen, Krypto durch Parameter-Tuning.

Risiken und Lösungen

Preis-Wipsaw

Bei starken Kursschwankungen können viele falsche Signale auftreten.

Schwere Bewegungen zurücklassen

Der Supertrend ist etwas zurückgeblieben.

Kein Stop-Loss

Zusätzliche Stop-Loss auf Basis von ATR zur Risikokontrolle.

Optimierungsrichtlinien

Marktzusammenhängen

Anpassung der Parameter für verschiedene Märkte.

Kombination der Impulse

Kombination mit MACD, KDJ usw., um starke Momentumbewegungen zu erfassen.

Maschinelles Lernen

Verwenden Sie KI und Ensemble-Methoden zur Optimierung von Parametern und Regeln.

Schlussfolgerung

Diese Strategie kombiniert erfolgreich Supertrend und CCI für die Multi-Timeframe-Trendverfolgung. Einfache Logik, gutes Belohnungspotenzial und Anpassbarkeit. Kann durch Parameter-Tuning, Stop-Loss und maschinelles Lernen weiter verbessert werden, um ein solides Handelssystem zu werden.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author=Daveatt

StrategyName = "Best Supertrend CCI Strategy"
ShortStrategyName = "Best Supertrend CCI Strategy"

strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true )

//////////////////////////
//* COLOR CONSTANTS *//
//////////////////////////

AQUA = #00FFFFFF
BLUE = #0000FFFF
RED  = #FF0000FF
LIME = #00FF00FF
GRAY = #808080FF
DARKRED   = #8B0000FF
DARKGREEN = #006400FF
GOLD = #FFD700
WHITE = color.white

// Plots
GREEN_LIGHT     = color.new(color.green, 40)
RED_LIGHT       = color.new(color.red, 40) 
BLUE_LIGHT      = color.new(color.aqua, 40)
PURPLE_LIGHT    = color.new(color.purple, 40) 

source = input(close)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// CCI /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
//UL = input(80, "Upper level")
//LL = input(20, "Lower Level")
ML = input(0, "CCI Mid Line pivot")

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// SUPERTREND /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float)
Pd=input(3, title="[ST] PD", minval=1,maxval = 100)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////// SUPERTREND DETECTION //////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

f_supertrend(Factor, Pd) =>

    Up=hl2-(Factor*atr(Pd))
    Dn=hl2+(Factor*atr(Pd))
    
    TrendUp = 0.0
    TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
    TrendDown = 0.0
    TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
    Trend = 0.0
    Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
    Tsl = Trend==1? TrendUp: TrendDown

    [Trend, Tsl]

[st_trend, st_tsl] = f_supertrend(Factor, Pd)

// Plot the ST
linecolor = close >= st_tsl ? color.green : color.red
plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0)

isLong  = st_trend == 1
isShort = st_trend == -1

longClose   = isLong[1] and isShort
shortClose  = isShort[1] and isLong

strategy.entry("Long", 1, when=isLong)
strategy.close("Long", when=longClose )

strategy.entry("Short", 0,  when=isShort)
strategy.close("Short", when=shortClose )


Mehr