Trendfolgende EMA-Ausbruchsstrategie


Erstellungsdatum: 2024-01-12 14:23:11 zuletzt geändert: 2024-01-12 14:23:11
Kopie: 0 Klicks: 620
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgende EMA-Ausbruchsstrategie

Überblick

Die Strategie ist eine Trend-Tracking-Breakthrough-Strategie, die auf einem Index-Moving Average (EMA) basiert. Sie beurteilt die Richtung des Trends auf Mond-, Kreis- und Sonnenzeiten und führt spezifische Ein- und Ausstiegsoperationen auf Sonnenzeiten aus.

Strategieprinzip

Trends beurteilen

  1. Auf der Mondlinie ist der Preis höher als die 8. EMA, die 8. EMA ist höher als die 21. EMA und wird als Mehrkopftrend bezeichnet;
  2. Auf der Kreislinie ist der Preis höher als die 8. EMA, die 8. EMA ist höher als die 21. EMA und wird als Mehrkopftrend bezeichnet.
  3. Auf der Tagesliste ist der Preis höher als die 8. EMA, die 8. EMA ist höher als die 21. EMA und wird als Mehrkopftrend bezeichnet.

Eintrittszeichen

  1. Auf der Tageslinie gab es einen Abwärtstrend, der den Tiefpunkt der gestrigen 8. EMA erreichte.
  2. Die Rückspielung bildet den Ring Low-Format der Lower High und Lower Low;
  3. Ein Trendwechselsignal ist ein Ende, bei dem der Kurs höher ist als der Höchstwert des Vortages.

Startsignal

Setzen Sie die Stop-Loss-Kriterien, um den Ausstieg zu erreichen.

Analyse der Stärken

  1. Die Ergebnisse der Studie wurden in drei Zeitrahmen veröffentlicht:
  2. Die Rückschlag-Tiefpunkte berühren die EMA-Supportstrukturen und erhöhen die Eintrittssicherheit.
  3. Es ist ein sehr interessantes Thema, das sich in den letzten Jahren sehr stark entwickelt hat.

Risikoanalyse

  1. Die Unvereinbarkeit der drei Zeitrahmen könnte zu falschen Signalen führen.
  2. Die Strategie wurde von der Regierung der Vereinigten Staaten von Amerika in den letzten Jahren in die Tat umgesetzt.
  3. Es gibt eine Reihe von Faktoren, die dazu beitragen könnten, dass der Markt zu einem Verlust kommt.

Optimierungsrichtung

  1. Die Entwicklung von MACD, RSI und anderen Indikatoren wird unterstützt.
  2. Optimierung der Einstellungen für EMA-Parameter;
  3. Die Stop-Loss-Werte werden in Kombination mit den Volatilitätsindikatoren angepasst.

Zusammenfassen

Die Strategie als Ganzes ist eine Trend-Tracking-Strategie, die sehr gutes Gewinnpotenzial bei der richtigen Beurteilung von Trends hat. Es muss darauf geachtet werden, dass Trends nicht falsch beurteilt werden und falsche Signale durch Überschneidung erzeugt werden. Die Optimierung der Stop-Loss-Einstellungen ist jedoch auch der Schlüssel zur weiteren Steigerung der Strategie.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © the_daily_trader

//@version=5
// ---------------------        Start of Code        ---------------------
strategy("Swing Trades Validator", overlay=true, margin_long=100, pyramiding = 0)

// Indicator Display Checks
TakeProfitPercent       = input.float(title="Profit Target %", defval=10, minval=1, step=0.05)
StopLossPercent         = input.float(title="Stop Loss %", defval=10, minval=1, step=0.05)
pullbackchoice          = input.bool(false, "Relaxed Entry Rules")

// EMAs
emaH            = ta.ema(close, 8)
emaHyest        = ta.ema(close[1], 8)
emaHyest1       = ta.ema(close[2], 8)
emaHyest2       = ta.ema(close[3], 8)
emaL            = ta.ema(close, 21)
emaLyest        = ta.ema(close[1], 21)
emaLyest1       = ta.ema(close[2], 21)
emaLyest2       = ta.ema(close[3], 21)
emaf            = ta.ema(close, 50)
emath           = ta.ema(close, 200)
emathhigh       = ta.ema(high, 200)
emathlow        = ta.ema(low, 200)
emaslowmonthly  = request.security(syminfo.tickerid, "M", emaL) // Monthly 21ema
emafastmonthly  = request.security(syminfo.tickerid, "M", emaH) // Monthly 8ema
emaslowweekly   = request.security(syminfo.tickerid, "W", emaL) // Weekly 21ema
emafastweekly   = request.security(syminfo.tickerid, "W", emaH) // Weekly 8ema
emaslowdaily    = request.security(syminfo.tickerid, "D", emaL) // Daily 21ema
emafastdaily    = request.security(syminfo.tickerid, "D", emaH) // Daily 8ema
emafdaily       = request.security(syminfo.tickerid, "D", emaf) // Daily 50ema
emathdaily      = request.security(syminfo.tickerid, "D", emath) // Daily ema
emathdailyhigh  = request.security(syminfo.tickerid, "D", emathhigh) // Daily ema High
emathdailylow   = request.security(syminfo.tickerid, "D", emathlow) // Daily ema Low
ema21yest       = request.security(syminfo.tickerid, "D", emaLyest) // Daily 21ema 1 day ago
ema21yest1      = request.security(syminfo.tickerid, "D", emaLyest1) // Daily 21ema 2 days ago
ema21yest2      = request.security(syminfo.tickerid, "D", emaLyest2) // Daily 21ema 3 days ago
ema8yest        = request.security(syminfo.tickerid, "D", emaHyest) // Daily 8ema 1 day ago
ema8yest1       = request.security(syminfo.tickerid, "D", emaHyest1) // Daily 8ema 2 days ago
ema8yest2       = request.security(syminfo.tickerid, "D", emaHyest2) // Daily 8ema 3 days ago


// Prices
monthopen       = request.security(syminfo.tickerid, 'M', open, barmerge.gaps_off, barmerge.lookahead_on)
monthclose      = request.security(syminfo.tickerid, 'M', close, barmerge.gaps_off, barmerge.lookahead_on)
weekopen        = request.security(syminfo.tickerid, 'W', open, barmerge.gaps_off, barmerge.lookahead_on)
weekclose       = request.security(syminfo.tickerid, 'W', close, barmerge.gaps_off, barmerge.lookahead_on)
dayopen         = request.security(syminfo.tickerid, 'D', open, barmerge.gaps_off, barmerge.lookahead_on)
dayclose        = request.security(syminfo.tickerid, 'D', close, barmerge.gaps_off, barmerge.lookahead_on)
threedayhigh    = request.security(syminfo.tickerid, 'D', high[3], barmerge.gaps_off, barmerge.lookahead_on)
twodayhigh      = request.security(syminfo.tickerid, 'D', high[2], barmerge.gaps_off, barmerge.lookahead_on)
yesthigh        = request.security(syminfo.tickerid, 'D', high[1], barmerge.gaps_off, barmerge.lookahead_on)
yestlow         = request.security(syminfo.tickerid, 'D', low[1], barmerge.gaps_off, barmerge.lookahead_on)

// Conditions 
monthlybullish          = emafastmonthly > emaslowmonthly
monthlybullishprice     = close > emafastmonthly
monthlybullishcandle    = monthclose > monthopen
weeklybullish           = emafastweekly > emaslowweekly
weeklybullishprice      = close > emafastweekly
weeklybullishcandle     = weekclose > weekopen
dailybullish1           = emafdaily > emathdaily
dailybullish2           = emafastdaily > emaslowdaily
dailybullishprice       = close > emafastdaily
dailybullishcandle      = dayclose > dayopen
ringlow                 = yestlow <= ema8yest
aggropullback           = twodayhigh < threedayhigh
pullback                = (pullbackchoice ? aggropullback : 0)
pullbackfailure         = dayclose > yesthigh and yesthigh < twodayhigh or pullback
emasetup                = ema8yest > ema21yest and ema8yest1 > ema21yest1 and ema8yest2 > ema21yest2

// Target Profit and Stop Loss Inputs
// Input parameters can be found at the beginning of the code
ProfitTarget        = (close * (TakeProfitPercent / 100)) / syminfo.mintick
StopLoss            = (close * (StopLossPercent / 100)) / syminfo.mintick

longCondition = monthlybullish and monthlybullishprice and weeklybullish and weeklybullishprice and dailybullish1 and dailybullish2 and dailybullishprice and monthlybullishcandle and weeklybullishcandle and dailybullishcandle and ringlow and pullbackfailure and emasetup

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit ("Exit", "Long", profit = ProfitTarget, loss = StopLoss)
    // strategy.close("Long", qty_percent = 100)


// -----------xxxxxxxxxxx-------------    End of Code     -----------xxxxxxxxxxx---------------