Gleitender Durchschnitt – Trendfolgende Handelsstrategie


Erstellungsdatum: 2023-12-11 15:05:31 zuletzt geändert: 2023-12-11 15:05:31
Kopie: 0 Klicks: 576
1
konzentrieren Sie sich auf
1621
Anhänger

Gleitender Durchschnitt – Trendfolgende Handelsstrategie

Überblick

Die Strategie ermittelt, ob sich ein Trend in einem Aufwärtstrend befindet oder in einem Abwärtstrend, indem sie einen Moving Average und die Preisänderungsrate in Verbindung mit einer K-Linie in einem bestimmten Zeitraum berechnet und entsprechend über- oder unterlegt wird.

Strategieprinzip

Die Strategie berechnet zunächst den einfachen gleitenden Durchschnitt a mit Länge l und die Preisänderungsrate r mit Länge l. Dann berechnet man die Differenz zwischen dem aktuellen K-Linienpreis und dem gleitenden Durchschnitt k.

Wenn sum > 0 ist, ist die Strategie im Aufwärtstrend und wird ausgeführt. Wenn sum < 0 ist, ist die Strategie im Abwärtstrend und wird ausgeführt.

Nach einem zusätzlichen Leerverkauf wird die Position gehalten, bis sich der Trend umkehrt (sum von positiv zu negativ oder von negativ zu positiv), und dann wird die Position platziert.

Analyse der Stärken

Der größte Vorteil dieser Strategie ist die Fähigkeit, Trends zu erfassen und für Trendhandel geeignet zu sein. Insbesondere gibt es folgende Vorteile:

  1. Die Verwendung von Moving Averages zur Beurteilung der Gesamttrendrichtung kann den Marktrauschen effektiv filtern und die wichtigsten Trends festlegen.

  2. Die Anwendung der Preisänderungsrate als Indikator zur Messung der Dynamik und zur Vermeidung von Verlusten bei starken Anlässen.

  3. Durch die Betrachtung mehrerer K-Linien innerhalb eines bestimmten Zeitraums können Trends genauer beurteilt und einzelne Ausreißer in die Irre nicht geführt werden.

  4. So lange der Trend nicht ändert, halten Sie Ihre Position und genießen Sie die Gewinne, die der Trend mit sich bringt.

Risikoanalyse

Diese Strategie birgt folgende Risiken:

  1. Es ist unmöglich, genau zu bestimmen, wann die Tendenz endet, und es kann zu einem vorzeitigen Stopp des Verlustes oder einem Verlust eines Teils des Gewinns führen.

  2. Die Größe der einzelnen Verluste kann nicht effektiv kontrolliert werden, und im Extremfall können die Verluste erheblich sein.

  3. Die falschen Strategieparameter können zu häufigen Geschäften führen oder einige Handelsmöglichkeiten verpassen.

  4. Langfristige Positionen können mit Overnight-Zinsen und Sicherungsrisiken verbunden sein.

Um das Risiko zu kontrollieren, können Sie Stop-Loss-Punkte festlegen, nur mit hochliquiden Waren handeln, Optimierungsparameter verwenden und Leverage vernünftig nutzen.

Optimierungsrichtung

Die Strategie kann vor allem in folgenden Bereichen optimiert werden:

  1. Tests mit unterschiedlichen Längen von Moving Averages und Preisänderungsraten, um die optimale Kombination von Parametern zu finden

  2. Versuchen Sie mit anderen Indikatoren wie MACD, die Trends zu beurteilen, um die Genauigkeit weiter zu verbessern.

  3. Positionsmanagementmechanismen, wie z. B. Positionsschutz nach Gewinn, werden hinzugefügt, um Einzelschäden zu kontrollieren.

  4. Dies wird in Kombination mit einem dynamischen Stop-Loss in Kombination mit einem Volatilitätsindikator verwendet, um das Risiko von Extremszenarien zu verringern.

  5. Optimierung der Logik für die Eröffnung und Beseitigung von Positionen, Filterung von falschen Durchbrüchen und Erhöhung der Effizienz des Handels.

Zusammenfassen

Die Strategie ist klar und einfach zu realisieren, und es ist relativ vernünftig, langfristige Positionen zu halten, indem Trends verfolgt werden. Die Rücknahmekontrolle ist für Investoren geeignet, die nach stabilen Erträgen streben. Wenn die Mechanismen wie Stop-Loss- und Positionsmanagement weiter optimiert werden können, wird eine bessere langfristige stabile Rendite erwartet.

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

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")
if sum<0
    strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")

strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)