Diese Handelsstrategie basiert auf einem einfachen gleitenden Durchschnitt und einem gleitenden Durchschnitts-Crossover-System zur Trendverfolgung. Sie verwendet das Crossover von schnellen und langsamen gleitenden Durchschnitten mit verschiedenen Perioden als Signale, um lang oder kurz zu gehen. Wenn der schnelle MA über den langsamen MA von unten geht, gehen Sie lang; wenn der schnelle MA unter den langsamen MA von oben geht, gehen Sie kurz. Diese Strategie funktioniert gut für Produkte mit offensichtlichen Trends.
Die Strategie verwendet einen schnellen einfachen gleitenden Durchschnitt wie 60 Tage und einen langsamen wie 200 Tage. Der schnelle MA reagiert schneller auf Kursänderungen und spiegelt kurzfristige Trends wider; während der langsame MA langsamer reagiert und mittelfristige bis langfristige Trends zeigt.
Wenn der kurze MA über den langen MA von unten geht, signalisiert er, dass die kurzfristigen Preise steigen und in einen Bullenmarkt eintreten, also gehen Sie lang.
Die Strategie verwendet MA-Kreuzung, um die Trendrichtung zu bestimmen. Wenn die kurzfristigen Preise schneller steigen, drückt die kurze MA die lange MA nach oben und kreuzt sie von unten. Dies bedeutet, dass ein Aufwärtstrend entsteht und eine lange Position eingenommen werden sollte. Umgekehrt, wenn die kurzfristigen Preise schneller fallen, zieht die kurze MA die lange MA nach unten und kreuzt sie von oben, was einen Abwärtstrend impliziert und eine kurze Position eingenommen werden sollte.
Durch die Erfassung der Wendepunkte der Kursentwicklung mit Hilfe von schnellen und langsamen MA-Kreuzungen kann die Strategie die Long/Short-Positionen entsprechend anpassen.
Methoden wie die Anpassung von MA-Perioden anhand der Produkte
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Schnelle und langsame MA-Perioden optimieren, um sich an Produkte mit unterschiedlichen Volatilitätsfrequenzen anzupassen.
Verbessern Sie die Einstiegsbedingungen, indem Sie mehr Filter hinzufügen, wie Lautstärken, um falsche Signale zu reduzieren.
Verbessern Sie den Stop Loss/Take Profit wie Trailing Stop oder Dynamic Take Profit, um die Rentabilität zu verbessern.
Betrachten Sie Handelskosten wie Provisionen und fügen Sie Kostenbewertungsmodule für realistischere Backtests hinzu.
Design Parameter Universe, um optimale Parameterkombinationen für verschiedene Produkte zu finden.
Hinzufügen lokaler Musteridentifizierung, um Trendwendepunkte zu bestimmen und den Zeitpunkt der Ein- und Ausstiege zu verbessern.
Durch eine systematische Optimierung der Strategie können die Rentabilität, die Stabilität erheblich verbessert und die Abzüge verringert werden.
Die Handelsstrategie bestimmt Trendverschiebungen mithilfe von MA-Crossovers, einer typischen Trendfolgestrategie. Sie verwendet Crossover zwischen schnellen und langsamen MAs, um lange/kurze Signale zu generieren und die Trendrichtung durch die Kombination der beiden zu identifizieren. Diese Strategie erfasst Trends stetig und zuverlässig und ist leicht zu verstehen und umzusetzen. Wenn sie optimiert wird, kann sie sich an die meisten Produkte anpassen und bildet eine grundlegende quantitative Handelsstrategie. Weitere Verbesserungen der Rentabilität und Gewinnrate können durch Kombination mit anderen technischen Indikatoren, Optimierung von Stop-Loss/Take-Profit-Strategien usw. erreicht werden.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 10m basePeriod: 1m 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/ // © thebearfib // //@version=5 // strategy("x-over 150d_200d_sma - Free", overlay = true) repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off) fast_length = input(title="Fast Length", defval=60) slow_length = input(title="Slow Length", defval=275) _fast = ta.sma(srcmc, fast_length) _slow = ta.sma(srcmc, slow_length) plot(_fast, title="Fast SMA", color=color.red, linewidth = 1) plot(_slow, title="Slow SMA", color=color.white, linewidth = 3) // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Calculating ————————————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01 longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01 // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Stop Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc) longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc) // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Long Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longCondition = srcmc > _slow and ta.crossover(_fast, _slow) closeCondition = ta.crossover(srcmc, _slow) if (longCondition) strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆") if (closeCondition) strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←") if (strategy.position_size > 0) strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss") // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Never the End Just the beginning ————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— //