Handelsstrategie mit doppeltem gleitendem Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2023-10-16 15:50:35
Tags:

img

Übersicht

Die doppelte gleitende Durchschnittsumkehrhandelsstrategie erzeugt Handelssignale, indem einfache gleitende Durchschnitte von zwei verschiedenen Perioden - kurzfristig und langfristig - berechnet werden. Sie geht lang, wenn der gleitende Durchschnitt der kurzen Periode über den gleitenden Durchschnitt der langen Periode überschreitet, und wird kurz, wenn der gleitende Durchschnitt der kurzen Periode unter den gleitenden Durchschnitt der langen Periode überschreitet. Diese Strategie gehört zur Kategorie der Trendfolgenden Strategie.

Strategie Logik

Diese Strategie setzt zwei einfache gleitende Durchschnitte mit unterschiedlichen Periodenlängen durch die Eingabeparameter, wobei der kurzfristige MA als die schnelle Linie bezeichnet wird und der langfristige MA als die langsame Linie bezeichnet wird. Die schnelle Linie reagiert schneller auf Preisänderungen und erfasst kurzfristige Trends, während die langsame Linie langsamer auf Preisänderungen reagiert und kurzfristige Marktgeräusche filtert und den Haupttrend erfasst. Wenn die schnelle Linie über die langsame Linie überschreitet, zeigt sie, dass sich der Aufwärtstrend stärkt und eine Long-Position eingenommen wird. Wenn die schnelle Linie unter der langsamen Linie überschreitet, zeigt sie, dass sich der Abwärtstrend stärkt und eine Short-Position eingenommen wird.

Speziell berechnet die Strategie die beiden MAs mithilfe der Funktion sma(), wobei das Ergebnis xSMA (slow line) und fast line zugeordnet wird. Die MAs werden auf der Grundlage des Schlusskurses berechnet. Wenn der Schlusskurs über xSMA geht, wird eine Long-Position eingenommen. Wenn der Schlusskurs unter xSMA geht, wird eine Short-Position eingenommen. Die Strategie legt auch ein Handelszeitbereichslimit fest, so dass Handelssignale nur innerhalb des angegebenen Zeitrahmens generiert werden.

Für jeden Handel werden Profit- und Stop-Loss-Punkte gesetzt, und Profit wird genommen oder Stop-Loss sofort ausgelöst, wenn der Preis das Take-Profit- oder Stop-Loss-Niveau erreicht.

Analyse der Vorteile

  • Die Verwendung eines Dual-MA-Systems kann Trends effektiv verfolgen und verhindern, dass man sich durch kurzfristige Marktlärm irreführt.
  • Die Kombination schneller und langsamer MAs kann die Qualität der Handelssignale verbessern
  • Risikokontrolle von Gewinn- und Stop-Loss-Punkten für jeden Handel
  • Die Begrenzung des Handelszeitraums verhindert große Schwankungen bei wichtigen Ereignissen
  • Das Zeichnen von Handelssignalen auf Balken schafft eine visuelle Hilfe und verbessert die Intuition

Risikoanalyse

  • Bei Systemen mit doppeltem MA werden tendenziell mehr falsche Signale erzeugt, was die Handelsfrequenz und die Kosten erhöht.
  • Die MA-Parameter müssen vernünftig festgelegt werden, da sonst ein Glättungseffekt oder zu viele verpasste Gelegenheiten auftreten.
  • MA-Systeme haben Verzögerungen und können Trendwendepunkte verpassen
  • Festverzinsung/Stop-Loss kann zu stumpf sein und sich nicht dynamisch anpassen
  • Eine Begrenzung des Handelszeitraums kann Gelegenheiten in anderen Perioden verpassen

Das Risiko kann durch Anpassung der MA-Parameter, Optimierung der Take-Profit-/Stop-Loss-Strategie, Beseitigung von Zeitbeschränkungen oder Festlegung vernünftigerer Handelszeiten reduziert werden.

Optimierungsrichtlinien

  • Versuche verschiedene Kombinationen von MA-Perioden, um optimale Parameter zu finden
  • Bei der Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte für die Berechnung der Vermögenswerte
  • Einbeziehung anderer Indikatoren wie MACD, KD usw. als Filtersignale
  • Optimieren Sie den Handelszeitrahmen, um mehr Chancen zu nutzen
  • Kombinieren Sie mit der Ausbruchsstrategie, suchen Sie nach Ausbruchssignalen um MAs
  • Erstellen dynamischer Ausgangmechanismen, die aktiv aussteigen, wenn der Preis in die Bandbreite eintritt

Zusammenfassung

Die doppelte gleitende Durchschnittsumkehrhandelsstrategie ist insgesamt eine einfache und praktische Trendfolgestrategie. Sie nutzt den Glättungseffekt von MAs voll aus, um die Trendrichtung zu identifizieren, und verwendet schnelle / langsame MAs, um Handelssignale zu generieren. Die Strategie ist leicht umsetzbar mit klarer Logik, die für Anfänger geeignet ist. Allerdings kann sie übermäßige falsche Signale und Verzögerungsprobleme erzeugen. Verbesserungen können durch Parameteroptimierung, Hinzufügen von Hilfsindikatoren usw. vorgenommen werden, um die Strategie robuster zu machen.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Mehr