
Die Strategie erzeugt ein Handelssignal, indem sie den MACD-Indikator und seine MACD-Säulen berechnet, um Abweichungen zwischen den MACD-Säulen und dem Kurs zu erkennen. Wenn ein neuer Preis hoch ist, aber die MACD-Säulen keine neuen Höhen erzeugen, erzeugt sie ein Aufwärts- und Abweichungssignal.
Das Kernprinzip der Strategie besteht darin, die MACD-Indikatoren und ihre MACD-Säulen, die die Eigenschaften von Preistrendänderungen widerspiegeln, zu nutzen, um Abweichungen zwischen MACD-Säulen und Preisen als Triggerbedingungen für Handelssignale zu erkennen.
Konkret berechnet die Strategie zunächst die MACD-Linie, die Signal-Linie und die MACD-Säulenlinie. Dann wird die maximale und minimale lokale Werte extrahiert, indem eine Fraktalfunktion definiert wird, um die Peaks und Täler der MACD-Säulenlinie zu ermitteln. Dann werden die Höchst- und Tiefstpreise der Preise kombiniert, um zu beurteilen, ob eine Abweichung zwischen der MACD-Säulenlinie und dem Preis besteht.
Regulark_bullish_div wird erzeugt, wenn der Preis ein neues hohes Niveau erreicht, aber die MACD-Säule kein neues hohes Niveau erreicht. Regulark_bullish_div wird erzeugt, wenn der Preis ein neues niedriges Niveau erreicht, aber die MACD-Säule kein neues niedriges Niveau erreicht. Regulark_bullish_div wird erzeugt, wenn der Preis ein neues niedriges Niveau erreicht, aber die MACD-Säule kein neues niedriges Niveau erreicht.
Schließlich gibt die Strategie die Befehle “Lose” und “Make More” aus, wenn die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die Beobachtungs- und die
Die Strategie hat folgende Vorteile:
Die Abweichung zwischen der MACD-Säulenlinie und dem Preis wird genutzt, um die Veränderung der Preisentwicklung im Voraus zu erfassen.
ATR Stop-Loss-Stoppschranken sind vernünftig eingestellt, um den maximalen Verlust eines einzelnen Handels effektiv zu kontrollieren.
Die Nutzung von Trend-Tracking-Methoden ermöglicht eine maximale Gewinnbindung.
Die Parameter sind vernünftig eingestellt und filtern die teilweise Geräusch-Transaktionssignale.
Die Strategie ist klar und verständlich und kann leicht in der Praxis überprüft werden.
Die Strategie birgt auch einige Risiken:
Wenn der MACD abweicht, führt dies nicht unbedingt zu einer Preisumkehr, es besteht jedoch ein gewisses Risiko für falsche Signale.
Unvernünftige Einstellungen der Stop-Loss-Stopp-Lösung können zu hohe Verluste oder zu geringe Gewinne führen.
Kurze Abweichungen von der Signalphase, möglicherweise durch Geräusche, sollten entsprechend gefiltert werden.
Nicht übereinstimmende Handelsvarianten und Parameter-Einstellungen beeinflussen die Effektivität der Strategie.
Entsprechende Lösungen:
Um falsche Signale zu filtern, müssen die Abweichungen in der Länge und Breite entsprechend vergrößert werden.
Verwenden Sie den ATR als Stop-Loss-Anzeige und passen Sie den ATR-Multiplikator an, um das Risiko eines einzelnen Handels zu kontrollieren.
Auswahl verschiedener Parameter für verschiedene Handelsarten. Optimierung der Parameter, um die optimale Kombination von Parametern zu finden.
Die Strategie kann auch in folgenden Richtungen optimiert werden:
Komplexere Abweichbestätigungen, wie z. B. die Abweichbestätigung von Volume.
Optimierung der MACD-Parameter und Suche nach der optimalen Kombination.
Optimierung der ATR-Stoppschadenmultiplizierungen.
Die Reliabilität von Abweichungen von Signalen wird durch die Einführung von Machine-Learning-Algorithmen unterstützt.
Die Modellprognosen zur Ermittlung der Wahrscheinlichkeit einer Preisumkehr werden erhöht.
Strategieparameter werden dynamisch angepasst, je nach veränderter Marktumgebung.
Allgemein betrachtet ist die MACD-Anzeige von der Trendverfolgungsstrategie abweichend, wobei die Abweichung zwischen der MACD-Säulenlinie und dem Preis genutzt wird, um die Trends zu erfassen. Die Einstellung der ATR-Stoppschwelle ist vernünftig und kann das Risiko eines einzelnen Handels kontrollieren. Die Strategie ist klar und verständlich und lohnt sich als Test.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bigwin_sun
// copyright: Tradingvue Limited
//@version = 5
strategy(title = "Demigod : CDMA histogram Divergence strategy", shorttitle = "Demigod strategy", overlay = false, pyramiding = 100)
//macd input
fastMA = input.int(13, title = "fast Length", minval = 1, group = "CDMA")
slowMA = input.int(34, title = "slow Length", minval = 1, group = "CDMA")
src = input.source(title = "source", defval = close, group = "CDMA")
signalSmooth = input.int(9, title="ma Length", minval = 1, group = "CDMA")
//Divergenc
divLength = input.int(title = "Divergenc Length", defval = 5, minval = 1, maxval = 50, inline = "ATRLength", group = "Divergence")
divStren = input.float(title="Divergenc Strength", defval = 2, minval = 1.0, maxval = 5.0, inline = "ATRLength", group = "Divergence")
//atr input
atrLength = input.int(13, title = "ATR Length", minval = 1, inline = "ATRLength", group = "ATR")
m = input.float(1.0, "ATR multyple", minval = 0.5, inline = "ATRLength", group = "ATR", step = 0.5)
collong = input.color(color.teal, title = "upper color", inline = "ATR显示", group = "ATR")
colshort = input.color(color.red, title = "under color", inline = "ATR显示", group = "ATR")
// MACD---------------------------------------------------------------------------------------------------------------------------------
DivOffset = -2
macdLine = ta.ema(src, fastMA) - ta.ema(src, slowMA)
signalLine = ta.ema(macdLine, signalSmooth)
histogram = macdLine - signalLine
histogramColor = if histogram > 0
histogram > histogram[1] ? color.lime : color.green
else
histogram < histogram[1] ? color.maroon : color.red
// cdma histogram
plot(histogram, title = "MACD histogram", linewidth = 2, style = plot.style_histogram, color = histogramColor)
plot(0, title = "zero line", linewidth = 1, color = color.gray)
// Divergenc calculation-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//peak / valley fundation
f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] and _src > 0
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] and _src < 0
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0
//peak / valley value
fractal_top1 = f_fractalize(histogram) > 0 ? true : false //histogram[2] : na
fractal_bot1 = f_fractalize(histogram) < 0 ? true : false //histogram[2] : na
//previouse peak or valley
high_prev1 = ta.valuewhen(fractal_top1, histogram[2], 0)[2]
high_price1 = ta.valuewhen(fractal_top1, high[2], 0)[2]
low_prev1 = ta.valuewhen(fractal_bot1, histogram[2], 0)[2]
low_price1 = ta.valuewhen(fractal_bot1, low[2], 0)[2]
//Divergenc : cdma histogram against candle value
regular_bearish_div1 = high[2] > high_price1 + divStren and histogram[2] < high_prev1 / divStren and ta.barssince(fractal_top1[1]) > divLength
regular_bullish_div1 = low[2] < low_price1 - divStren and histogram[2] > low_prev1 / divStren and ta.barssince(fractal_bot1[1]) > divLength
//-------------------------cdma Divergenc range------------------------------------------------
//histogramColor
col1 = regular_bearish_div1 ? color.red : na
col2 = regular_bullish_div1 ? #00FF00EB : na
//plot
plot(title='看跌背离', series= fractal_top1 ? histogram[2] : na, color=col1, linewidth=3, offset=DivOffset)
plot(title='看涨背离', series= fractal_bot1 ? histogram[2] : na, color=col2, linewidth=3, offset=DivOffset)
// calculate ATR --------------------------------------------------------------------------------------------------------------------------------------------------
atr = ta.ema(ta.tr(true), atrLength) * m
up = atr + high
dw = low - atr
//stratety : enrty and exit---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if regular_bearish_div1 and fractal_top1
//if regular_bullish_div1 and fractal_bot1
//label.new(bar_index, histogram[2], text = "Short", textcolor = color.white, color = color.gray, style = label.style_label_lower_left)
strategy.entry("Short", strategy.short, qty = 1)
strategy.exit("exitShort", "Short", stop = up, limit = dw - atr)
if regular_bullish_div1 and fractal_bot1
//if regular_bearish_div1 and fractal_top1
//label.new(bar_index, histogram[2], text = "Long", textcolor = color.white, color = color.fuchsia, style = label.style_label_upper_left)
strategy.entry("Long", strategy.long, qty = 1)
strategy.exit("exitLong", "Long", stop = dw, limit = up + atr)