
Die Strategie nutzt das Prinzip der Doppel-Even-Linien-Kreuzung, kombiniert mit der MACD-Indikator-Trendentscheidung und den Hintergrund-Beleg-Kreuzungen, unterstützt durch die Formpunkte, um die mittleren Markttrends zu erfassen. Die Hauptlogik ist, bei einer Umstellung in die Even-Linien-Richtung einzutreten.
Die Strategie nutzt die schnellen EMA und die langsamen EMA, um die Richtung der Trends zu bestimmen. Gleichzeitig werden die MACD und Signal berechnet und die Differenz als Diagramm dargestellt.
Laut Code sind die Schnelllinie 12 und die Langleine 26 für kurz- und langfristige Trends. Die Signallänge ist 9 für zusätzliche Smoothing-Verarbeitung.
Die Logik der Kreuzung:
Die Kreuzung:
Die Farbveränderung in der Querkarte zeigt die Stärke des Trends:
Verwenden Sie die doppelte Gleichungslinie, um die Richtung des mittleren Trends zu bestimmen, um von kurzfristigen Marktgeräuschen gestört zu werden
MACD-Indikatoren helfen bei der Bestimmung von kurzfristigen Trends und Stärken und erhöhen die Gewinnwahrscheinlichkeit
Die Farbänderung in der Querkarte bestimmt die Stärke und ermöglicht eine bessere Eintrittszeit.
Hintergrundfarbe der Kreuzung auf den ersten Blick
Anpassungsfähige Mittellinien-Perioden für unterschiedliche Marktumstände
Anpassbare MACD-Parameter zur Optimierung der Indikatoren
Mehrfache Eintrittsbestätigung: Gleichlaufrichtung, Kennzeichenkreuzung, Formbruch
Binäre Gleichgewichtsbeurteilungen zeigen, dass die mittleren Trends nicht auf kurzfristige Schwankungen reagieren und möglicherweise eine kurze Linie verpassen.
Die MACD-Parameter sind falsch eingestellt, der Indikator funktioniert nicht gut und gibt falsche Signale ab
Es gibt eine gewisse Blindheit, wenn man nur mit der Mittellinie und dem MACD-Signal eintritt.
Risiken einer Ausweitung der Verluste ohne Rücknahme von Ausfallmechanismen
Mangel an strenger Kapitalverwaltung und Positionskontrolle
Mögliche Lösungen:
In Kombination mit anderen Indikatoren begrenzt kurzfristige Schwankungen, um das Risiko zu kontrollieren
Optimierung von MACD-Parametern, um die Effektivität in verschiedenen Märkten zu testen
Hinzufügen von Form, Momentum und anderen Faktoren bestätigen die Signal
Ein Stop-Loss-Mechanismus, um zu verhindern, dass einzelne Verluste zu groß werden
Eingliederung in das Modul für die Vermögensverwaltung, um einzelne Positionen nach der Größe des Kapitals zu steuern
Tests zur Optimierung von Mittellinien-Parameterkombinationen für mehrere Marktbedingungen
Versuchen Sie mit verschiedenen Arten von Mittellinien, wie VWAP, Brin-Band Mittellinien und so weiter.
Erhöhung der Verkehrsbelastung und Vermeidung falscher Durchbrüche
In Verbindung mit anderen Indikatoren wie dem RSI bestätigt sich ein Überkauf
Einführung von Schadensschutzmechanismen, wie beispielsweise Bewegungs- und Erschütterungsschutz
Eintritt in eine Positionsverwaltung, die einzelne Positionen nach der Größe des Kapitals kontrolliert
Parameteroptimierung in Kombination mit maschinellen Lernalgorithmen kann in Betracht gezogen werden
Die Strategie Universe wird erweitert und die Portfolioinvestitionen vertieft
Die Strategie integriert die binäre Gleichgewichts-Trendbeurteilung und die MACD-Dynamik, ergänzt die Formfaktoren und baut eine relativ stabile mittelfristige Handelsstrategie auf. Die Kernvorteile liegen darin, die Richtung der wichtigsten Trends zu erfassen und von kurzfristigen Marktgeräuschen nicht gestört zu werden. Es gibt jedoch auch Optimierungsmöglichkeiten, z. B. in Bezug auf die Stop-Loss-Mechanismen und das Risikomanagement.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Histogram MacD MVP_V2.1", shorttitle="Histogram MacD MVP_2.1")
//Plot Inputs
res = input.timeframe("", "Indicator TimeFrame")
fast_length = input.int(title="Fast Length", defval=12)
slow_length = input.int(title="Slow Length", defval=26)
src = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Show Plots T/F
show_macd = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")
//show_trend = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd = input.color(#FF6D00, "MACD Line ", group="Color Settings", inline="CS1")
col_signal = input.color(#2962FF, "Signal Line ", group="Color Settings", inline="CS1")
col_trnd_Up = input.color(#4BAF4F, "Trend Up ", group="Color Settings", inline="CS2")
col_trnd_Dn = input.color(#B71D1C, "Trend Down ", group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above Grow", group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#FF5252, "Fall", group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow", group="Histogram Colors", inline="Hist20")
col_fall_below = input.color(#f8f524, "Fall", group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up = macd > signal
trend_dn = macd < signal
cross_UP = signal[1] >= macd[1] and signal < macd
cross_DN = signal[1] <= macd[1] and signal > macd
cross_UP_A = (signal[1] >= macd[1] and signal < macd) and macd > 0
cross_DN_B = (signal[1] <= macd[1] and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na
//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp := hist == hist[1] ? histA_IsUp[1] : hist > hist[1] and hist > 0
histA_IsDown := hist == hist[1] ? histA_IsDown[1] : hist < hist[1] and hist > 0
histB_IsDown := hist == hist[1] ? histB_IsDown[1] : hist < hist[1] and hist <= 0
histB_IsUp := hist == hist[1] ? histB_IsUp[1] : hist > hist[1] and hist <= 0
hist_col = histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver
// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd and signal ? signal : na, title="Signal", color=color.new(col_signal, 0), style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd and macd ? macd : na, title="MACD", color=color.new(trend_col, 0), style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
//Alerts
if alert_Long and cross_UP
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short and cross_DN
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short_B and cross_DN_B
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)
if (histA_IsUp)
strategy.entry("buy", strategy.long, comment="buy")
if (histA_IsDown)
strategy.entry("sell", strategy.short, comment="sell")