Strategie zur Nachverfolgung der Umkehrung des bewegten Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-12-07 17:40:12
Tags:

img

Die Hauptidee dieser Strategie besteht darin, das goldene Kreuz und das tote Kreuz von gleitenden Durchschnitten als Handelssignale zu verwenden, kombiniert mit dem Preisbruch von doppelten gleitenden Durchschnitten, um Einträge und Stops zu machen. Es erzeugt ein Kaufsignal, wenn der kurze Zeitraum gleitende Durchschnitt über den langen Zeitraum gleitenden Durchschnitt überschreitet; ein Verkaufssignal wird erzeugt, wenn der kurze Zeitraum gleitende Durchschnitt unter den langen Zeitraum gleitenden Durchschnitt überschreitet. Somit hat die Strategie sowohl Trend-nachfolgende als auch mittlere Reversionsmerkmale.

Die Einzelheiten des Betriebs sind wie folgt:

  1. Berechnen Sie kurzfristigen einfachen gleitenden Durchschnitt (SMA) und langfristigen einfachen gleitenden Durchschnitt.

  2. Vergleichen Sie, ob der Preis über oder unter den gleitenden Durchschnitten liegt. Der Preis über den gleitenden Durchschnitten zeigt eine Long-Position an, während der Preis darunter eine Short-Position zeigt.

  3. Wenn die kurze SMA die lange SMA überschreitet, gehen Sie lang; wenn die kurze SMA die lange SMA überschreitet, gehen Sie kurz.

  4. Wechseln zwischen Long- und Short-Positionen.

Die wichtigsten Vorteile dieser Strategie sind:

  1. Die doppelte gleitende Durchschnittsstrategie kombiniert sowohl Trendverfolgung als auch Mittelumkehrung, wodurch Markttrends verfolgt und Umkehrchancen erfasst werden.

  2. Das goldene Kreuz und das tote Kreuz von gleitenden Durchschnitten haben eine gewisse Persistenz, was hilft, falsche Ausbrüche zu filtern.

  3. Auf der Grundlage der Theorie des gleitenden Durchschnitts ist es vorteilhaft, Gewinne in Trending- und Rangebound-Märkten zu erzielen.

Die wichtigsten Risiken dieser Strategie sind:

  1. Die Strategie des doppelten gleitenden Durchschnitts ist parametersensitiv.

  2. Ein erfolgloser Ausbruch kann zu Verlusten führen.

  3. Eine Umkehrung des Trends ist nicht garantiert, und der ursprüngliche Trend kann sich fortsetzen und zu Verlusten führen.

Die wichtigsten Optimierungsrichtungen:

  1. Testen und optimieren Sie die gleitenden Durchschnittsparameter, um die beste Parameterkombination zu finden.

  2. Hinzufügen eines Trendindikators zur Unterscheidung zwischen Trending- und Ranging-Märkten.

  3. Einführung eines effektiven Stop Loss zur Kontrolle von Risiken, wie zum Beispiel Trailing Stop Loss, Stop Order Loss usw.

  4. Kombination mit anderen Indikatoren zur Verbesserung der Robustheit der Strategie.

Als doppelte gleitende Durchschnittsumkehrverfolgungsstrategie berücksichtigt sie sowohl Trendverfolgung als auch Umkehrhandel. Mit angemessener Parameteroptimierung und Risikokontrolle kann sie gute Ergebnisse erzielen. Jede Strategie ist jedoch mit Risiken wie Richtungsfehlern, Stop-Loss-Fehlern usw. konfrontiert.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
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)
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)
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(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos))
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
if (possig == 0)
    strategy.close_all()
nColor = BarColors ? possig == -1 ? color.red : possig == 1 ? color.green : color.blue : na 
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Mehr