
Die Strategie kombiniert den Durchbruchsignal des Index-Moving Averages und des MACD-Indikators mit zwei langen und kurzen Haltephasen, um durch Trend-Tracking und Umkehrhandel zu profitieren.
Die Strategie basiert auf folgenden Prinzipien:
Berechnen Sie den 200-Tage-Moving Average, um die Richtung der großen Trends zu bestimmen. Closes, die höher als der Durchschnitt sind, sind bullish, und die niedriger sind, sind bearish.
Der Indikator bewegt sich durchschnittlich auf Basis der mittleren Preise der Höchst-, Mindest- und Schlusspreise und berechnet die Differenz zwischen diesen und den Höchst- und Mindestpreisen, um eine MACD-Säulenkarte zu erstellen.
Berechnen Sie den 9-Tage-Moving Average der MACD-Spalten und bauen Sie eine MACD-Signallinie auf.
Wenn der MACD von unten nach oben durchbricht, erzeugt er ein Kaufsignal; wenn er von oben nach unten durchbricht, erzeugt er ein Verkaufsignal.
In Verbindung mit der Richtung des großen Trends kann man beurteilen, ob der Trend in einen längeren Trend eintritt oder eine Umkehrung der kurzen Linie.
Die Strategie kombiniert Trend- und Reversal-Trading, um sowohl Trends in längeren Perioden zu verfolgen als auch Reversal-Gelegenheiten auf kurzen Linien zu erfassen und flexibel auf verschiedene Marktbedingungen zu reagieren.
Zu den Vorteilen gehören:
Der 200-Tage-Moving-Average wird verwendet, um die Richtung der wichtigsten Trends zu bestimmen und um Rückschläge zu vermeiden.
Der MACD-Indikator ist empfindlicher auf kurzfristige Preisveränderungen und kann effektivere Umkehrmöglichkeiten erfassen.
MACD-Kombinationen mit unterschiedlichen Parameter-Einstellungen ermöglichen ein Handelssignal für mehrere Zeiträume.
Ein Stop-Loss-Strategien in Kombination mit einem Stop-Loss-Strategien kann die Einzelschäden wirksam kontrollieren.
Diese Strategie birgt folgende Risiken:
Wenn ein langfristiger Indikator ein Handelssignal sendet, kann ein Zeitunterschied vorhanden sein, der eine umfassende Beurteilung der großen Trends erfordert.
Der MACD ist ein Umkehrungsindikator, dessen Interpretationskraft bei starken Marktsituationen abnimmt.
Die Stop-Loss-Punkte sind falsch eingestellt und können zu früh oder zu stark eingestellt werden.
Die Durchbruchsignale wurden als zu häufig beurteilt und könnten zu weiteren Falschsignalen führen.
Entsprechende Lösungen:
Optimierung der MACD-Parameter und Anpassung der Sensitivität der Indikatoren.
In Kombination mit anderen Indikatoren sollte die MACD-Signalblindheit vermieden werden.
Test und Optimierung von Stop-Loss-Strategie-Parametern.
Es wurden weitere Filterbedingungen eingeführt, um zu vermeiden, dass zu viele Falschmeldungen auftreten.
Die Strategie kann in folgenden Richtungen optimiert werden:
Optimierung der Parameter für Moving Averages und MACDs für effizientere Handelssignale
Einige andere Indikatoren hinzufügen, um die Effektivität der Strategie zu verbessern.
Set up a position sizing strategy rather than fixed lots for each trade Set up a position sizing strategy rather than fixed lots for each trade Set up a position sizing strategy rather than fixed lots for each trade Set up a position sizing strategy rather than fixed lots for each trade Set up a position sizing strategy rather than fixed lots for each trade
Add more advanced exit rules rather than just stop loss. Such as profit target, trailing stops etc. Hinzufügen von fortgeschritteneren Ausstiegsregeln anstelle von nur Stop Loss, wie z. B. Stop Stop, Moving Stop etc.
Backtest with more complex fee settings to better simulate real trading environoment. Backtest mit komplexeren Gebühren-Einstellungen, um die reale Handelsumgebung besser zu simulieren.
Walk forward analysis, robustness test among multiple products to enhance reliability. Walk forward analysis, robustness test among multiple products to enhance reliability. Walk forward analysis, robustness test among multiple products to enhance reliability. Walk forward analysis, robustness test among multiple products to enhance reliability.
Die Strategie berücksichtigt sowohl Trends als auch Reverses. Wichtig ist die Genauigkeit der Einstellung der Indikatorparameter und des Verständnisses der großen Trends. Durch die ständige Optimierung der Parameter-Einstellungen und die Erhöhung der Ripple-Bedingungen können die Strategien die Marktsignale genauer beurteilen und die Gewinne stabiler machen.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)
// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)
var float ema200 = na
if bar_index >= ema_length
ema200 := ema(close, ema_length)
// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na
calc_smma(src, len) =>
var float smma = na
if na(smma)
smma := sma(src, len)
else
smma := (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
d = ema1 - ema2
ema1 + d
if bar_index >= lengthMA
src = hlc3
hi := calc_smma(high, lengthMA)
lo := calc_smma(low, lengthMA)
mi := calc_zlema(src, lengthMA)
impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
impulseMACDSignal := sma(impulseMACD, lengthSignal)
// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na
stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)
// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na
if not na(stopLossLong)
takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
takeProfitShort := close - (stopLossShort - close) * 1.5
// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)
// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)
// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")
// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)
// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)
// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")