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.
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.
Die Vorteile dieser Strategie sind:
Die wichtigsten Risiken dieser Strategie sind:
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.
Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:
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)