Dynamischer gleitender Durchschnittsrückgang Martin-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-24 10:19:21
Tags:

img

Übersicht

Die Dynamic Moving Average Retracement Martin-Strategie ist eine häufige Handelsstrategie, die bewegliche Durchschnitts-Crossovers und Pullback-Signale kombiniert, um Ein- und Ausstiegssignale zu generieren.

Strategie Logik

Die Strategie verwendet 3-tägige und 8-tägige einfache gleitende Durchschnitte und ihre Crossover-Signale. Ein langes Signal wird erzeugt, wenn der 3-tägige MA über den 8-tägigen MA überschreitet, und ein kurzes Signal wird erzeugt, wenn der 3-tägige MA unter den 8-tägigen MA überschreitet. Lange Signale lösen einen langen Eintritt aus und kurze Signale lösen einen kurzen Eintritt aus.

Wenn es keine Position gibt, bestimmt die Strategie den Einstieg auf der Grundlage von Crossover-Signalen. Nach dem Einstieg wird der Stop-Loss-Preis und der Take-Profit-Preis anhand des letzten Schlusskurses, des Stop-Loss-Prozentsatzes und des Take-Profit-Prozentsatzes berechnet. Zum Beispiel, wenn eine Long-Position gehalten wird, ist der Stop-Loss-Preis der letzte Schlusskurs minus der Stop-Loss-Prozentsatz multipliziert mit dem 8-Tage-MA; der Take-Profit-Preis ist der letzte Schlusskurs plus der Take-Profit-Prozentsatz multipliziert mit dem 8-Tage-MA.

Wenn es eine bestehende Long-Position gibt, wenn der Preis den Take-Profit oder den Stop-Loss auslöst, wenn ein Pullback-Signal des 8-Tage-MA auftritt, wird die Position geschlossen. Zu diesem Zeitpunkt werden der Stop-Loss-Preis und der Take-Profit-Preis auf 0 zurückgesetzt.

Die Strategie zeichnet auch Ein- und Ausstiegspunkte auf dem Diagramm. Zum Beispiel wird ein langer Eintrag als Aufwärtsdreieck und ein langer Ausgang als Abwärtsdreieck gezeichnet. Dies hilft, Ein- und Ausgänge visuell zu beurteilen.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Erfasst kurzfristige Trends unter Verwendung von gleitenden Durchschnitts-Crossover-Signalen, so dass häufiger Handel möglich ist.
  2. Der Stop-Loss-Mechanismus kann Einzelverluste steuern.
  3. Die Einrichtung von Gewinnspielen kann teilweise Gewinne einbringen.
  4. Handelsrichtungen können für verschiedene Phasen ausgewählt werden.
  5. Zeigt die Ein- und Ausstiegspunkte für Klarheit auf dem Diagramm an.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Kurzfristige MA-Strategien werden meistens geschnitten.
  2. Möglichkeit, dass sich Signale von gleitenden Durchschnitten zurückhalten.
  3. Folgende Verluste können zu verschärften Verlusten führen.
  4. Der falsch eingestellte Stop-Loss-Prozentsatz kann zu locker oder zu eng sein.

Die Risiken können durch eine angemessene Erhöhung des Stop-Loss-Prozentsatzes, die Optimierung der MA-Parameter, die Einführung zusätzlicher Filterbedingungen usw. verringert werden.

Optimierungsrichtlinien

Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Testen Sie mehr MA-Kombinationen, um optimale Parameter zu finden.
  2. Hinzufügen anderer Indikatoren wie RSI, KD usw. zur Verbesserung der Signalqualität.
  3. Anpassung des Stop-Loss-Prozentsatzes je nach verschiedenen Produkten und Zeitrahmen.
  4. Hinzufügen von Positionsgrößenkontrollen wie Festmenge oder Festkapital.
  5. Hinzufügen von Eintrittsordnung.
  6. Optimieren und bewerten Sie Stop-Loss- oder Take-Profit-Niveaus.

Zusammenfassung

Die Dynamic Moving Average Retracement Martin-Strategie ist eine kurzfristige Handelsstrategie. Sie erfasst kurzfristige Trends, die durch gleitende Durchschnittsüberschreitungen gebildet werden, und verwaltet Risiken mit angemessenen Stops und Gewinnen. Der häufige Handelscharakter gibt ihr sowohl Gewinnchancen als auch Risiken. Durch die Optimierung von Parametern, das Filtern von Signalen und die Kontrolle von Risiken kann diese Strategie für mehr Zuverlässigkeit weiter verbessert werden.


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
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/
// © blackcat1402
//@version=5
strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5)

// Define input variables
takeProfit = input(1.03, title='Take Profit')
stopLoss = input(0.95, title='Stop Loss')
inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode')

//The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'.
strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all)

// Define strategy logic
entryPrice = 0.0
stopPrice = 0.0
takeProfitPrice = 0.0
stopLossPrice = 0.0

// Define SMA crossover and crossunder signals
sma3 = ta.sma(close, 3)
sma8 = ta.sma(close, 8)
plot(sma3, color=color.yellow)
plot(sma8, color=color.fuchsia)
crossoverSignal = ta.crossover(sma3, sma8)
crossunderSignal = ta.crossunder(sma3, sma8)
crossoverState = sma3 > sma8
crossunderState = sma3 < sma8

if strategy.position_size == 0
    if crossoverState
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss * sma8[1]
        takeProfitPrice := close + takeProfit * sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice
    if crossunderState
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size > 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossunderState
        strategy.close('Buy')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss *  sma8[1]
        takeProfitPrice := close + takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size < 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossoverState
        strategy.close('Sell')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

// Plot entry and exit points
plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)
plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)



Mehr