Demigod Candlestick MACD Divergenz Trend nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-04 15:06:58
Tags:

img

Übersicht

Diese Strategie berechnet den MACD-Indikator und sein MACD-Histogramm, um Divergenzsignale zwischen dem MACD-Histogramm und der Preisbewegung zu erkennen und somit Handelssignale zu erzeugen. Wenn ein neues Hoch im Preis, aber kein neues Hoch im MACD-Histogramm erkannt wird, wird ein bärisches Divergenzsignal erzeugt. Wenn ein neues Tief im Preis, aber kein neues Tief im MACD-Histogramm erkannt wird, wird ein bullisches Divergenzsignal erzeugt. Kombiniert mit dem ATR-Indikator für Stop-Loss und Take-Profit führt es Trends an.

Strategie Logik

Das Kernprinzip dieser Strategie besteht darin, den MACD-Indikator und sein MACD-Histogramm zu verwenden, um Veränderungen der Preisentwicklung zu reflektieren, und Abweichungssignale zwischen dem MACD-Histogramm und dem Preis als Auslöserbedingungen für Handelssignale zu erkennen.

Insbesondere berechnet die Strategie zuerst die MACD-Linie, die Signallinie und das MACD-Histogramm. Dann definiert sie die Fraktalfunktion, um Spitzen und Täler des MACD-Histogramms zu erkennen, um lokale Maxime und Minime zu extrahieren. In Kombination mit dem höchsten Preis und dem niedrigsten Preis bestimmt sie, ob eine Divergenz zwischen dem MACD-Histogramm und dem Preis besteht.

Wenn der Preis ein neues Maximum erreicht, aber das MACD-Histogramm ein neues Maximum nicht erreicht, wird ein regular_bearish_div-Ballish-Divergenzsignal generiert.

Schließlich, wenn die Abweichungssignale für die Abwärts- und die Bulleffekte generiert werden, gibt die Strategie Short- bzw. Long-Orders aus und verlässt die Positionen mit ATR-Stop Loss und Take Profit.

Analyse der Vorteile

Diese Strategie hat folgende Vorteile:

  1. Durch die Nutzung der Divergenzfunktion zwischen MACD-Histogramm und Preis kann es die Kursentwicklungen frühzeitig erfassen.

  2. Die ATR-Stop-Loss- und Take-Profit-Einstellungen sind angemessen, um den maximalen Verlust pro Handel wirksam zu kontrollieren.

  3. Die Verwendung der Trendfolge-Methode maximiert den eingeschlossenen Gewinn.

  4. Vernünftige Parameter-Einstellungen filtern einige laute Handelssignale aus.

  5. Die Strategielogik ist klar und leicht verständlich, leicht zu validieren im Live-Handel.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Die MACD-Divergenz führt nicht unbedingt zu einer Preisumkehr, es gibt einige falsche Signalrisiken.

  2. Unzumutbare Stop-Loss- und Take-Profit-Einstellungen können zu übermäßigen Verlusten oder unzureichenden Gewinnen führen.

  3. Divergenzsignale mit kurzen Zyklen können durch Lärm verursacht werden und sollten ordnungsgemäß gefiltert werden.

  4. Unvereinbare Handelsprodukte und Parameter-Einstellungen beeinflussen ebenfalls die Strategieergebnisse.

Entsprechende Lösungen

  1. Erhöhen Sie die Anforderungen an Länge und Größe der Divergenz, um falsche Signale zu filtern.

  2. Verwenden Sie ATR als Stop-Loss- und Take-Profit-Benchmark, passen Sie die ATR-Multiplikatoren an, um die Risiken pro Handel zu kontrollieren.

  3. Wählen Sie verschiedene Parameter für verschiedene Handelsprodukte aus. Führen Sie Parameteroptimierung durch, um optimale Parameterkombinationen zu finden.

Optimierungsrichtlinien

Diese Strategie kann auch in folgenden Richtungen optimiert werden:

  1. Komplexere Divergenzbestätigung, z. B. Volumendivergenzbestätigung.

  2. Optimieren Sie die MACD-Parameter, um die beste Parameterkombination zu finden.

  3. Optimieren Sie die Multiplikatoren von ATR-Stop Loss und Profit-Take.

  4. Hinzufügen von Algorithmen für maschinelles Lernen, um die Zuverlässigkeit von Divergenzsignalen zu beurteilen.

  5. Hinzufügen der Modellvorhersage, um die Wahrscheinlichkeit einer Preisumkehr zu bestimmen.

  6. Dynamische Anpassung der Strategieparameter an Veränderungen der Marktbedingungen.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Demigod Candlestick MACD Divergence Trend Following Strategie die Divergenz zwischen MACD Histogramm und Preis nutzt, um Trends zu erfassen. Die angemessene ATR Stop Loss und Take Profit-Einstellungen können Risiken pro Handel kontrollieren. Die Strategielogik ist klar und leicht zu verstehen, die es wert ist, im Live-Handel validiert zu werden. Nachfolgoptimierungen können in vielen Aspekten vorgenommen werden, um bessere Ergebnisse zu erzielen.


/*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)


Mehr