Handelsstrategie mit doppeltem gleitenden Durchschnitt und Umkehrung


Erstellungsdatum: 2023-10-16 15:50:35 zuletzt geändert: 2023-10-16 15:50:35
Kopie: 1 Klicks: 671
1
konzentrieren Sie sich auf
1617
Anhänger

Handelsstrategie mit doppeltem gleitenden Durchschnitt und Umkehrung

Überblick

Die Binär-Gleichgewichts-Umkehr-Handelsstrategie erzeugt Handelssignale, indem sie einfache Moving Averages für zwei verschiedene Perioden in der kurzfristigen und langfristigen Periode berechnet und auf der Grundlage der Beziehung zwischen dem Preis und dem Moving Average erstellt. Wenn Sie den langfristigen Durchschnitt über dem kurzfristigen Durchschnitt durchbrechen, machen Sie mehr; wenn Sie den langfristigen Durchschnitt unter dem kurzfristigen Durchschnitt durchbrechen, machen Sie weniger.

Strategieprinzip

Die Strategie setzt durch Eingabeparameter einfache Moving Averages mit zwei unterschiedlichen Periodenlängen ein. Kurze Periodenlinien werden als schnelle und lange als langsame bezeichnet. Die schnelle Linie reagiert schneller auf Preisänderungen, um kurzfristige Trends zu erfassen. Die langsame Linie reagiert langsamer auf Preisänderungen, um kurzfristige Marktgeräusche zu filtern und die Hauptrends zu erfassen.

Konkret berechnet die Strategie die beiden Mittellinien mit der Funktion sma () und weist die Berechnungsergebnisse auf xSMA (langsam) und schnelle Linien zurück. Die Strategie berechnet die Mittellinie mit dem Close-Preis. Wenn der Close-Preis die xSMA überschreitet, macht man einen Plus; wenn der Close-Preis die xSMA unterschreitet, macht man einen Minus.

Die Strategie setzt für jeden Handel einen Stop-Loss-Punkt ein und stoppt sofort, wenn der Stop-Loss-Punkt erreicht wird. Gleichzeitig zeigt die Strategie die Beziehung zwischen dem Preis und der langsamen Linie über die Barcolor-Funktion auf der K-Linie an: Wenn es zu viel ist, ist die K-Linie grün; wenn es leer ist, ist die K-Linie rot; wenn es leer ist, ist die K-Linie blau.

Analyse der Stärken

  • Die Verwendung eines Dual-Equal-Line-Systems ermöglicht es, Trends effizient zu verfolgen und von kurzfristigen Marktgeräuschen abzulenken.
  • Schnell- und langsam-lineare Kombination verbessert die Signalqualität
  • Setzen Sie einen Stop-Loss-Punkt, um das Risiko eines einzelnen Handels zu kontrollieren
  • Eine begrenzte Zeitspanne für den Handel verhindert große Schwankungen bei großen Ereignissen.
  • Markierung von Handelssignalen in K-Linien als visuelle Hilfsmittel zur Verbesserung der Intuition

Risikoanalyse

  • Bei einem Doppel-Einheit-System werden leicht mehr Falschsignale erzeugt, und die Häufigkeit der Transaktionen führt zu Druck auf die Transaktionskosten
  • Die Parameter für die Gleichung müssen vernünftig eingestellt werden, da dies zu schlechten Gleitwirkungen oder zu hohen Wartezeiten führen kann
  • Einheitliche Linie-Systeme sind zeitlich verzögert und könnten einen Trendwendepunkt verpassen
  • Der Fixed Stop-Loss-Punkt ist möglicherweise zu arbiträr und kann nicht dynamisch angepasst werden.
  • Eine begrenzte Zeitspanne kann zu verpassten Handelschancen in anderen Zeitabschnitten führen

Risiken können reduziert werden, indem die Parameter der Durchschnittslinie angepasst, die Stop-Loss-Strategie optimiert, die Zeitbeschränkung aufgehoben oder ein vernünftigerer Handelszeitraum festgelegt wird. Die Kombination anderer Indikatoren kann auch als Filterbedingungen in Betracht gezogen werden, um zu viele falsche Signale zu vermeiden.

Optimierungsrichtung

  • Verschiedene Kombinationen von Gleichlaufperioden können getestet werden, um die optimalen Parameter zu finden
  • Es kann in Erwägung gezogen werden, den Stop Loss in eine dynamische Verfolgung umzuwandeln, z. B. mit ATR-Anbindung.
  • Andere Indikatoren wie MACD, KD und andere können als Filtersignale eingeführt werden
  • Die Optimierung der Handelszeiten ermöglicht es, mehr Handelschancen zu erfassen
  • Durchbruchssignale in der Nähe der Mittellinie können in Kombination mit Durchbruchsstrategien gesucht werden
  • Dynamische Ausstiegsmechanismen können eingerichtet werden, um einen aktiven Stop-Loss zu erzeugen, wenn der Preis in die Bandbreite eintritt

Zusammenfassen

Die Strategie ist einfach umzusetzen, ist klar im Kopf und ist für Anfänger geeignet. Sie kann jedoch durch Parameteroptimierung und die Einführung von Hilfsindikatoren verbessert werden, um die Strategie stabiler und zuverlässiger zu machen. Wenn die Strategie verwendet wird, kann sie einen stabilen Gewinn erzielen.

Strategiequellcode
/*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)