Trendbasierte Keltner-Channel-Strategie


Erstellungsdatum: 2023-11-03 16:59:39 zuletzt geändert: 2023-11-03 16:59:39
Kopie: 0 Klicks: 791
1
konzentrieren Sie sich auf
1617
Anhänger

Trendbasierte Keltner-Channel-Strategie

Überblick

Die Strategie basiert auf drei Hauptindikatoren: Trendindikatoren, Keltner-Kanal und DM-Indikatoren.

Der Trendindikator besteht aus den SMA und EMA. Wenn die EMA die SMA durchläuft, wird der Trend bestätigt. Die Keltner-Kanal wird verwendet, um die Öffnungs- und Schließungspreise von Candle zu bestimmen. Der DM-Indikator wird verwendet, um die Obergrenze zu bestimmen.

Sie können mehr tun, wenn Sie die folgenden Voraussetzungen erfüllen:

  1. Die EMA überschreitet die SMA und bestätigt den Trend nach oben
  2. Candle-Eröffnungspreise in der Oberseite und die Schlusspreise im Inneren des Kanals
  3. DM ist größer als die eingestellte Referenzlinie

Die Strategie besteht aus zwei Stop-Posts und einem Stop-Loss. Es kann in Erwägung gezogen werden, die Tracking-Stops zu verwenden, um mehr Profit zu erzielen.

Strategieprinzip

Trends beurteilen

Die Richtung des Trends wird anhand der EMA und der Gold- und Fork-Deadlines des SMA beurteilt. Das EMA-Parameter ist 46, das SMA-Parameter ist 46. Wenn das EMA über den SMA geht, ist es ein Aufwärtstrend.

Die Keltner Passage

Der Keltner-Kanal besteht aus drei Linien: Mittellinie, Oberbahn und Unterbahn. Die Mittellinie ist die SMA für den Schlusskurs mit einer Länge von 81. Die tatsächliche Amplitude der angegebenen Multiplikatoren der Oberbahn und Unterbahn befindet sich jeweils über und unter der Mittellinie.

Keltner-Kanäle werden hauptsächlich verwendet, um zu bestimmen, ob Preise innerhalb der Kanäle sind und ob sie die Kanäle überschreiten.

DM-Indikatoren

Der DM-Indikator besteht aus drei Linien: ADX, + DI und - DI. + DI misst die Aufwärtsstärke, - DI misst die Abwärtsstärke. ADX steht für einen durchschnittlichen Trendindikator, der die Stärke des Trends widerspiegelt.

Die ADX-Parameter sind 10, die DI-Parameter sind 19. Wenn die +DI-Linie die eingestellte Referenzlinie ((Standard 27) trägt, bedeutet dies, dass der Anstieg stark ist und für mehr Arbeit geeignet ist.

Analyse der Stärken

Die Strategie kombiniert Trends, Kanäle und Indikatoren der Stärken und Schwächen, um die Entwicklung der Preise und die Richtung der Mehrfachraum zu bestimmen. Es hat folgende Vorteile:

  1. Trends werden relativ genau beurteilt, um Rückschläge zu vermeiden.

  2. Die Keltner-Gänge sind deutlich sichtbar und bilden Unterstützungs- und Druckstellen.

  3. Die DM-Anzeige misst die Kraft der Luftbewegung und stellt sicher, dass die Luftbewegung in der richtigen Richtung ist.

  4. Die strategischen Bedingungen sind streng, um falsche Durchbrüche durch Hoch- und Rückschläge zu filtern.

  5. Ein Stop-Loss-Punkt ist eine gute Möglichkeit, um Gewinne zu erzielen.

Risikoanalyse

Die Strategie birgt auch Risiken:

  1. Es ist möglich, dass sich der Trend umdreht und die EMA den SMA unterbricht. Es ist zu beachten, dass der Ausstieg rechtzeitig erfolgt.

  2. In starken Verhältnissen kann der Kanal versagen und kann nicht als strenger Stützdruckpunkt betrachtet werden.

  3. Der DM-Indikator kann ein falsches Signal geben, das in Verbindung mit der Preisentwicklung beurteilt werden sollte.

  4. Ein falscher Durchbruch kann den Einstieg auslösen, aber schnell wieder zurückfallen, wobei ein vernünftiger Stopp eingestellt werden sollte.

  5. Die Stop-Loss-Punkte müssen kontinuierlich optimiert werden, um sich an die Veränderungen des Marktes anzupassen.

Optimierungsrichtung

Die Optimierung kann in folgenden Bereichen weiter vorangetrieben werden:

  1. Anpassung der Parameter und Prüfung der Wirksamkeit verschiedener Trends.

  2. Optimierung der Kanalparameter, um sie näher an den realen Schwankungsbereich zu bringen.

  3. Verschiedene Kombinationen von DM-Parametern werden getestet, um die optimale Parameter zu wählen.

  4. Setzen Sie verschiedene Einstiegsbedingungen, z. B. Filter für die Kombination von Transaktionsvolumen.

  5. Optimierung von Stop-Loss-Strategien, z. B. mit Stop-Loss-Tracking, um mehr Profit zu erzielen.

  6. Die beste Parameterkombination wird für die verschiedenen Sorten getestet.

Zusammenfassen

Die Strategie nutzt eine Reihe von Indikatoren, um die Richtung der Trends zu bestimmen, die Drucklage und die Luftkraft zu unterstützen, um Trends effektiv zu erfassen und Risiken zu kontrollieren. Allerdings müssen die Risiken berücksichtigt und die Parameter optimiert werden, um sich an Marktveränderungen anzupassen.

Strategiequellcode
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Original Idea by: Wunderbit Trading

//@version=4
strategy("Keltner Channel ETH/USDT 1H", overlay=true, initial_capital=1000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100,  commission_type=strategy.commission.percent,commission_value=0.07)


/// TREND
ribbon_period = input(46, "Period", step=1)

leadLine1 = ema(close, ribbon_period)
leadLine2 = sma(close, ribbon_period)

// p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
// p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
// fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)

//Upward Trend
UT=leadLine2 < leadLine1
DT=leadLine2>leadLine1

///////////////////////////////////////INDICATORS

// KELTNER //
source       = close
useTrueRange = input(true)
length       = input(81, step=1, minval=1)
mult         = input(2.5, step=0.1)

// Calculate Keltner Channel
ma      = sma(source, length)
range   = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="Middle", color=color.orange)
p1=plot(upper, title="Upper", color=color.orange)
p2=plot(lower, title="Lower", color=color.orange)
fill(p1,p2)


// DMI INDICATOR //
adxlen = 10 // input(10, title="ADX Smoothing")
dilen = input(19, title="DI Length")
keyLevel = 23// input(23, title="key level for ADX")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

benchmark=input(title="DMI Benchmark", defval=27, minval=1,step=1)

// plot(sig, color=color.red, title="ADX")
// plot(up, style=plot.style_histogram, color=color.green, title="+DI")
// plot(down, style=plot.style_histogram, color=color.red, title="-DI")
// plot(keyLevel, color=color.white, title="Key Level")

///////////////////////////////////////////////////////////


////////////////////////////////////////////////////Component Code Start

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(9999, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
///// Component Code Stop //////////////////////////////////////////

//////////////// STRATEGY EXECUTION //////////////////////////

//LONG SET UP
// Take Profit / Stop Loss
long_tp1_inp = input(4.5, title='Long Take Profit 1 %', step=0.1)/100
long_tp1_qty = input(15, title="Long Take Profit 1 Qty", step=1)

long_tp2_inp = input(20, title='Long Take Profit 2%', step=0.1)/100
long_tp2_qty = input(100, title="Long Take Profit 2 Qty", step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)

long_sl_inp = input(4, title='Long Stop Loss %', step=0.1)/100
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)


// STRATEGY CONDITION
// LONG
entry_long = ((open > lower and open < upper) and close > upper) and up > down and up > benchmark //  and volume[0] > volume[1]
entry_price_long=valuewhen(entry_long,close,0)
SL_long = entry_price_long * (1 - long_sl_inp)
exit_long = (close < lower) or low < SL_long


// STRATEGY EXECUTION
if testPeriod()

    // LONG
    if UT
        strategy.entry(id="Long", long=true, when=entry_long, comment = "INSERT ENTER LONG COMMAND")
    strategy.exit("TP1","Long", qty_percent=long_tp1_qty, limit=long_take_level_1) // PLACE TAKE PROFIT IN WBT BOT SETTINGS 
    strategy.exit("TP2","Long", qty_percent=long_tp2_qty, limit=long_take_level_2) // PLACE TAKE PROFIT IN WBT BOT SETTINGS
    strategy.close(id="Long", when=exit_long, comment= "INSERT EXIT LONG COMMAND")


//PLOT FIXED SLTP LINE
// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
plot(strategy.position_size > 0 ? long_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")