Trendfolgende Crossover-Strategie mit maximalem gleitenden Durchschnitt


Erstellungsdatum: 2023-10-17 13:05:29 zuletzt geändert: 2023-10-17 13:05:29
Kopie: 1 Klicks: 657
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgende Crossover-Strategie mit maximalem gleitenden Durchschnitt

Überblick

Die Strategie verwendet die Kreuzung von zwei unterschiedlichen Perioden von Moving Averages, um zu handeln. Sie ist eine Trendverfolgung. Die Strategie nutzt die Kreuzung von kurz- und langfristigen Moving Averages, um Kauf- und Verkaufssignale zu erhalten und in Trends zu handeln.

Strategieprinzip

Die Strategie verwendet einen 9-periodischen kurzfristigen Moving Average SMA und einen 50-periodischen langfristigen Moving Average LMA. Es wird ein Kaufsignal erzeugt, wenn der kurzfristige Moving Average den langfristigen Moving Average von unten durchquert. Es wird ein Verkaufsignal erzeugt, wenn der kurzfristige Moving Average den langfristigen Moving Average von oben durchquert.

Die Strategie enthält auch einen RSI-Indikator, der die Trendstärke beurteilt. Ein Handelssignal wird nur erzeugt, wenn der RSI größer ist als der eingestellte Schwellenwert (der Standard 55). Dies verhindert, dass ein falsches Signal erzeugt wird, wenn der RSI sich in einem Überverkauf befindet.

Strategie: Der Betrag pro Transaktion beträgt 30% des Gesamtkapitals, wobei nur ein Auftrag pro Auftrag erstellt wird.

Analyse der Stärken

  • Die Strategie nutzt Trendsignale, die durch Kreuzungen von Moving Averages erzeugt werden, um Trends effektiv zu verfolgen.
  • Die Einführung des RSI-Indikators zur Bestimmung der Trendstärke verhindert falsche Signale bei Trendstopps.
  • Die Optimierung der Standardparameter ermöglicht eine stabilere Ertragslage in mehreren Märkten.
  • Die Vermögensverwaltung ist vernünftig und verhindert, dass ein einzelner Verlust zu groß ist.

Risikoanalyse

  • Wenn die Märkte sich in einer Erschütterung befinden, kann diese Strategie leicht zu Fehlsignalen führen und keinen Gewinn bringen.
  • Trends werden nicht ohne Trends gewinnen.
  • Die falsche Einstellung der Parameter kann zu häufigen Transaktionen führen und die Transaktionsgebühren erhöhen.
  • Die Auswirkungen von Ereignissen, die nicht berücksichtigt werden, können dazu führen, dass die Schäden nicht rechtzeitig eingestellt werden.

Risiken können durch Optimierung von Parametern, Kombination von anderen Indikatoren, Gewinnchancen, strenge Geldverwaltung und Stop-Loss-Einstellungen verringert werden.

Optimierungsrichtung

  • Verschiedene Kombinationen von Moving Averages können getestet werden, um die optimale Parameter zu finden.
  • Andere Indikatoren wie MACD können Trends beurteilen.
  • Ein dynamischer Stop-Loss kann eingestellt werden, um einzelne Verluste zu kontrollieren.
  • Die Vermögensverwaltungsquote kann je nach Markt angepasst werden.
  • Die Trendstärke lässt sich anhand von Handelsvolumen ermitteln.

Zusammenfassen

Die Strategie erfasst die Trendchancen durch ein einfaches Moving-Average-Cross-System. Die Standardparameter sind optimiert, die Gewinne sind stabil und für den automatisierten Handel geeignet. Die Strategie kann durch die Einführung anderer Hilfsindikatoren, Optimierungsparameter und die Verbesserung der Stop-Loss-Parameter weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 2h
basePeriod: 15m
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/
// © relevantLeader16058

//@version=4
strategy(shorttitle='Maximized Moving Average Crossing ',title='Maximized Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
inlong=input(50, title='MA long period')
inshort=input(9, title='MA short period')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)

// RSI inputs and calculations
lengthRSI = (14)

RSI = rsi(close, lengthRSI)
RSI_Signal = input(55, title = 'RSI Trigger', minval=1)

//Entry and Exit
bullish = crossover(MAshort, MAlong)
bearish = crossunder(MAshort, MAlong)

strategy.entry(id="long", long = true, when = bullish and RSI > RSI_Signal and window())
strategy.close(id="long", when = bearish and window())

 
plot(MAshort, color=color.purple, linewidth=2)
plot(MAlong, color=color.red, linewidth=2)