
Eine Dynamische Durchschnittsbrechstrategie ist eine Aktienhandelsstrategie, bei der ein Signal des Durchschnittsbrechens mit einem Dynamischen Indikator kombiniert wird. Die Strategie verwendet mehrere technische Indikatoren wie den Index Moving Average (EMA), den einfachen Moving Average (SMA), den Moving Average Clustered Index (MACD) und den modifizierten relativ schwachen Index (StockRSI), um ein Kaufsignal zu erzeugen, wenn ein langfristiger Trend als aufwärts bestätigt wird.
Die Strategie besteht aus folgenden Komponenten:
EMA/SMA Durchschnittsschnitt: Setzen Sie eine EMA-Schnelllinie mit 9 Zyklen und eine SMA-Schnelllinie mit 21 Zyklen, um ein Kaufsignal zu erzeugen, wenn die Schnelllinie die Schnelllinie durchbricht.
MACD-IndikatorenDer MACD-Indikator enthält MACD-Linien, Signallinien und MACD-Spalten. Als zusätzliche Bestätigung, wenn die Säulen positiv sind und mit dem Kaufsignal, das von der EMA/SMA erzeugt wird, synchronisiert werden.
StockRSI-Indikator: Der StockRSI erzeugt ein Kaufsignal, wenn die Indikatorlinie über der OVERBOUGHT-Linie ((80)) oder unter der OVERSOLD-Linie ((20) liegt.
Brin-BandDie Brin-Mitte ist ein 20-Tage-SMA mit einer Bandbreite, die sich von den beiden Standards unterscheidet. Der Preis muss innerhalb der Brin-Band sein, um ein Handelssignal zu erzeugen.
Stop Losses und Stop PositionsDie Stop-Loss- und Stop-Stop-Preise sind auf der Grundlage der ATR für die letzten 14 Tage berechnet.
Die Strategie erfordert, dass mindestens 2 der oben genannten Indikatoren gleichzeitig ein Kaufsignal senden, und der Aktienpreis befindet sich in der Brin-Band und die langfristige Tendenz ist nach oben, um ein endgültiges Kaufsignal zu erzeugen. Wenn der MACD-Indikator nach unten umkehrt, erzeugt der StockRSI ein Verkaufsignal, nachdem er in die Überkaufszone getreten ist.
Die Strategie kombiniert die Vorteile von Linear-Crossing, Dynamometer und Volatilitätsindikator mit folgenden Hauptvorteilen:
Die Rückmeldung war gut.Es gibt mehrere Indikatoren, die alle ausgereift sind, und die Strategie hat bessere Ergebnisse als die großen und die einzelnen Indikatoren.
Optimierte ParameterWichtige Parameter wie EMA-Zyklen und Brin-Band-Kanäle wurden optimiert, um die Systemstabilität zu verbessern.
Automatische Verlust-/StoppschaltungDer Brinband und der ATR können die Stop-Loss-Position in Echtzeit anpassen, was zur Risikokontrolle beiträgt.
Nicht sehr schwierigDas Programm wurde von der japanischen Regierung in den letzten Jahren entwickelt, um die Nutzung der Software zu erleichtern.
Obwohl die Strategie gut funktioniert, bestehen folgende Hauptrisiken:
Der Indikator gibt falsche Signale.Wenn der Markt ungewöhnlich schwankt oder der Indikator ausfällt, kann es zu falschen Signalen kommen. Dabei sollte man die langfristigen Trends berücksichtigen.
Die Parameter sind falsch.Unzureichende Parameter-Einstellungen können zu häufigen Transaktionen oder unsensiblen Reaktionen führen. Die Einstellungen sollten für verschiedene Sorten und Marktbedingungen angepasst werden.
Zu wenig oder zu viel Stop LossDie Verluste sind zu hoch, wenn der Stop-Loss zu klein ist, und zu hoch, wenn der Stop-Loss zu groß ist.
Gegen diese Risiken können folgende Maßnahmen ergriffen werden:
Handwerkliche Interventionen und VeränderungenIn Ausnahmefällen kann das Signal manuell bestätigt, die Parameter geändert oder die Strategie ausgesetzt werden.
Optimierte Parameter-EinstellungenDie Optimierung der Parameter durch wissenschaftlichere und objektivere Methoden wie genetische Algorithmen.
Stop-Loss in Kombination mit SchwankungsrateanpassungDie Stop-Loss-Marge kann automatisch an die Schwankungsrate angepasst werden, z. B. 1 bis 3 mal ATR.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Erhöhung der Stabilität der Stop-Loss-Mechanismen: Kann mit einem Tracking-Stop oder einem Index-Moving-Average-Stop verbunden werden.
In Kombination mit einem Filter für die TransaktionsvolumenDas ist eine sehr wichtige Entscheidung, die wir alle treffen müssen, um die Zukunft zu verbessern.
Dynamische Anpassungsparameter: Automatische Optimierung der Durchschnittslinie-Periode, der Durchschnittsbreite usw. entsprechend der Marktumgebung.
Einführung von Algorithmen für maschinelles Lernen: Dynamische Optimierung von Parametern mit Algorithmen wie RNN, LSTM usw.
Die Dynamik durchbricht die Vorteile der integrierten Anwendung der technischen Indikatoren der Gleichgewichtsstrategie. In der Kombination von Lang- und Kurzstrecken werden gute Gewinne erzielt. Die Strategie ist in der Lage, den Verlust zu stoppen, und die Implementierung ist nicht sehr schwierig.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)
// Volatility
volatility = ta.atr(14)
// EMA/MA Crossover
fast_length = 9
slow_length = 21
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)
// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal and (macdHistogram > 0)
// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
// Fractal-based Support and Resistance levels
isFractalHigh = high[2] < high[1] and high[1] > high[0]
isFractalLow = low[2] > low[1] and low[1] < low[0]
resistance = ta.valuewhen(isFractalHigh, high[1], 0)
support = ta.valuewhen(isFractalLow, low[1], 0)
// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 80
oversold = 20
stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought))
// Buy and sell conditions
mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0)
// Long-term Trend Check
long_term_ma = ta.sma(close, 200)
long_term_bullish = close > long_term_ma
long_term_bearish = close < long_term_ma
// Plot the long-term MA for visual clarity
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
// Simplified Buy and Sell conditions
buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper)
sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought)
// Potential SL and TP based on volatility
potential_SL = close - volatility
potential_TP = close + 2 * volatility
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)
// ... (rest of your code above)
// State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting
var bool inPosition = false
var tradeCounter = 0
var tradeCounterDelayed = 0 // Declaration of the variable
// Buy logic: Check if tradeCounter is 0 and the buy condition is met
if tradeCounter == 0 and buy_condition
strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
inPosition := true
tradeCounter := tradeCounter + 1
// Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position
if tradeCounter == 1 and inPosition and sell_condition
strategy.close("BUY")
inPosition := false
tradeCounter := tradeCounter - 1
// Update the delayed trade counter:
tradeCounterDelayed := tradeCounter
// Plotting
bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
// ... (rest of your code if any)