Dies ist eine Trend-Tracking-Breakout-Strategie, die auf dem exponentiellen gleitenden Durchschnitt (EMA) basiert. Sie beurteilt die Trendrichtung in den monatlichen, wöchentlichen und täglichen Zeitrahmen und führt spezifische Ein- und Ausstiegsaktionen auf dem täglichen Chart aus.
Festlegen von Profit- und Stop-Loss-Standards für den Ausstieg.
Die Strategie hat ein sehr gutes Gewinnpotenzial, wenn der Trend richtig beurteilt wird. Man muss auf ungenaue Trendbeurteilung und übermäßigen Rückzug achten, der falsche Signale verursacht. In der Zwischenzeit ist die Optimierung der Gewinn- und Stop-Loss-Einstellungen der Schlüssel zur weiteren Verbesserung des Randes.
/*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---------------