Moonlight Tracker Doppeldreieck-Ausbruchsstrategie


Erstellungsdatum: 2023-11-21 13:49:10 zuletzt geändert: 2023-11-21 13:49:10
Kopie: 0 Klicks: 688
1
konzentrieren Sie sich auf
1617
Anhänger

Moonlight Tracker Doppeldreieck-Ausbruchsstrategie

Überblick

Diese Strategie ermöglicht eine hohe Gewinnrate bei der Verfolgung von Durchbrüchen durch die Konstruktion von Doppel-Dreieck-Kanälen in Verbindung mit Supertrend-Indikatoren, die die Richtung des Preisbruchs bestimmen. Die Strategie kombiniert gleichzeitig die EMA-Betrachtung der allgemeinen Markttrends und vermeidet die Nichterfüllung von Geschäften bei Erschütterungen.

Strategieprinzip

  1. Die Konstruktion eines Supertrend-Indikators mit drei verschiedenen Parametern, um die kurz-, mittelfristige und langfristige Trendrichtung der Preise zu bestimmen.

  2. Der Doppel-Dreieck-Kanal dient als List-Entry- und Exit-Signal, um zu bestimmen, ob der Preis den Auf- oder Abwärtskanal durchbrochen hat.

  3. In Kombination mit den 233-Zyklen EMAs, um die Richtung des Gesamttrends zu bestimmen, müssen die Preise mehr tun, um den Aufwärtstrand zu durchbrechen, wenn der EMA-Mehrkopfmarkt den Aufwärtstrand durchbricht, und nur dann, wenn der Leerkopfmarkt den Abwärtstrand durchbricht.

  4. Beurteilen Sie Stop- und Stop-Loss-Signale in Kombination mit drei Supertrend-Indikatoren. Wenn mehr als zwei Indikatoren sich verändern, wird die Position gestoppt oder gestoppt.

Strategische Vorteile

  1. Der Doppel-Dreieck-Kanal kombiniert mit mehreren Zeitzyklen kann Trendbrechungen präzise erfassen.

  2. Mehrstufige Auswahlbedingungen verhindern ungültige Geschäfte und erhöhen die Gewinnquote.

  3. Dynamische Tracking-Stop-Loss, reduziert das Risiko von Rücknahmen.

  4. Einfache Parameter-Einstellungen und einfache Handhabung.

Strategische Risiken und Optimierungen

  1. In einem stark konjunkturbewegten Markt kann es vorkommen, dass häufig Positionen eröffnet und dann gestoppt werden. Die ATR-Zyklusparameter können entsprechend angepasst werden, um die Häufigkeit der Positionen zu verringern.

  2. Eine zu kurze EMA-Zyklus lässt keine Trends erkennen, eine zu lange EMA-Zyklus ist nicht empfindlich. Es wird empfohlen, die optimale EMA-Parameter zu ermitteln.

  3. Die Stop-Loss-Ebene kann nicht dynamisch mit der Veränderung der Marktamplitude verfolgen und muss durch eine manuelle Intervention angepasst werden. In späteren Phasen kann eine dynamische Anpassung der Stop-Loss-Distanz in Verbindung mit der ATR in Betracht gezogen werden.

Zusammenfassen

Die Moonlight Tracker Doppel-Dreieck-Breakout-Strategie ermöglicht die präzise Erfassung von starken Breakouts durch die Kombination von Supertrend-Indikatoren und Doppel-Dreieck-Kanälen. Gleichzeitig kann ein mehrstufiger Filtermechanismus unwirksame Signale filtern und hat eine hohe Erfolgsquote. Die einfache Parameter-Einstellung macht es auch einfach zu bedienen. Die Tracking-Effekte und die Risikokontrolle der Strategie können durch die Optimierung der Booster-Parameter und der Stop-Loss-Design weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-17 04:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// author=theasgard and moonshot-indicator (ms)
// year 2021
//
// This is a well knowen strategy by using 3 different Supertrends and a trend-defining EMA,
// feel free to play around with the settings, a backtest on 8h ETHUSDT pair brought some good results using 
// the 233EMA and investing 75% of a 10k start capital
//
// the idea is to have at least 2 supertrnds going green above the trend-EMA to go long and exit by turning 
// 2 supertrends red (idea: 1 supertrend in red could initialize a take profit)
// shorts work vice versa
// The EMA shows in green for uptrends and in red for downtrends, if it is blue no Signal will be taken because 
// the 3 supertrends are not all above or below the trendline(EMA)

strategy("ms hypertrender", overlay=true)

// set up 3 supertrendlines and colour the direction up/down
atrPeriod1 = input(10, "ATR Length 1")
factor1 = input.float(1.0, "ATR Factor 1", step = 0.01)
[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)
upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend 1", color = color.green, style=plot.style_linebr)
downTrend1 = plot(direction1 < 0? na : supertrend1, "Down Trend 1", color = color.red, style=plot.style_linebr)

atrPeriod2 = input(11, "ATR Length 2")
factor2 = input.float(2.0, "ATR Factor 2", step = 0.01)
[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend 2", color = color.green, style=plot.style_linebr)
downTrend2 = plot(direction2 < 0? na : supertrend2, "Down Trend 2", color = color.red, style=plot.style_linebr)

atrPeriod3 = input(12, "ATR Length 3")
factor3 = input.float(3.0, "ATR Factor 3", step = 0.01)
[supertrend3, direction3] = ta.supertrend(factor3, atrPeriod3)
upTrend3 = plot(direction3 < 0 ? supertrend3 : na, "Up Trend 1", color = color.green, style=plot.style_linebr)
downTrend3 = plot(direction3 < 0? na : supertrend3, "Down Trend 1", color = color.red, style=plot.style_linebr)

//set up the trend dividing EMA and color uptrend nutreal downtrend
len = input.int(233, minval=1, title="Trend-EMA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

//general Bull or Bear Trend? Visualized by ema
ematrend = ta.ema(src, len)
generaluptrend = supertrend1 > ematrend and supertrend2 > ematrend and supertrend3 > ematrend
generaldowntrend = supertrend1 < ematrend and supertrend2 < ematrend and supertrend3 < ematrend
emacolor = if generaluptrend
    color.green
else if generaldowntrend
    color.red
else
    color.blue
plot(ematrend, title="EMA", color=emacolor, offset=offset)

// Bullish? min 2 supertrends green
bullish = (direction1 < 0 and direction2 < 0) or (direction1 < 0 and direction3 < 0) or (direction2 < 0 and direction3 < 0) and generaluptrend
extremebullish = direction1 < 0 and direction2 < 0 and direction3 < 0 and generaluptrend //all 3 green

// Bearish? min 2 supertrends red
bearish = (direction1 > 0 and direction2 > 0) or (direction1 > 0 and direction3 > 0) or (direction2 > 0 and direction3 > 0) and generaldowntrend
extremebearish = direction1 > 0 and direction2 > 0 and direction3 > 0 and generaldowntrend //all 3 red

// Open Long
//plotchar(((bullish and not bullish[1]) or (extremebullish and not extremebullish[1])) and (emacolor==color.green)? close : na, title = 'Start Long', char='▲', color = #80eb34, location = location.belowbar, size = size.small)

// TP 10% Long
TP10long = ((generaluptrend and bullish[1]) or (generaluptrend and extremebullish[1])) and (direction1 > 0 or direction2 > 0 or direction3 > 0)
//plotchar(TP10long and not TP10long[1]? close : na, title = 'TP on Long', char='┼', color = #ffd000, location = location.abovebar, size = size.tiny)

// Exit Long
//plotchar(extremebearish and not extremebearish[1] or bearish and not bearish[1]? close : na, title = 'Close all Longs', char='Ꭓ', color = #ff0037, location = location.abovebar, size = size.tiny)

// Open Short
//plotchar(((bearish and not bearish[1]) or (extremebearish and not extremebearish[1])) and (emacolor==color.red)? close : na, title = 'Start Short', char='▼', color = #0547e3, location = location.abovebar, size = size.small)

// TP 10% Short
TP10short = ((generaldowntrend and bearish[1]) or (generaldowntrend and extremebearish[1])) and (direction1 < 0 or direction2 < 0 or direction3 < 0)
//plotchar(TP10short and not TP10short[1]? close : na, title = 'TP on Short', char='┼', color = #ffd000, location = location.belowbar, size = size.tiny)

// Exit Short
//plotchar(extremebullish and not extremebullish[1] or bullish and not bullish[1]? close : na, title = 'Close all Shorts', char='Ꭓ', color = #ff0037, location = location.belowbar, size = size.tiny)

// Set stop loss level with input options (optional)
longLossPerc = input.float(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=1) * 0.01

shortLossPerc = input.float(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=1) * 0.01
     
// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)

openlong = (((bullish and not bullish[1]) or (extremebullish and not extremebullish[1])) and (emacolor==color.green))
openshort = (((bearish and not bearish[1]) or (extremebearish and not extremebearish[1])) and (emacolor==color.red))
exitlong = (extremebearish and not extremebearish[1] or bearish and not bearish[1]) or TP10long
exitshort = (extremebullish and not extremebullish[1] or bullish and not bullish[1]) or TP10short
strategy.entry("buy", strategy.long, when=openlong)
strategy.entry("sell", strategy.short, when=openshort)

strategy.close("buy", when=exitlong)
strategy.close("sell", when=exitshort)

// Submit exit orders based on calculated stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="Long Stop", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="Short Stop", stop=shortStopPrice)