Die Ressourcen sind geladen. Beförderung...

MACD-Konvergenzstrategie mit R:R, Tageslimits und engerem Stop Loss

Schriftsteller:ChaoZhang, Datum: 2024-06-03 16:47:56
Tags:MACD

img

Übersicht

Diese Strategie verwendet die Konvergenz und Divergenz des MACD-Indikators, um Handelssignale zu generieren. Wenn die MACD-Linie die Signallinie überschreitet und der Wert der MACD-Linie größer als 1,5 oder kleiner als -1,5 ist, generiert sie Long- und Short-Signale.

Strategieprinzip

  1. Berechnung der MACD-Linie und der Signallinie des MACD-Indikators.
  2. Bestimmung der Kreuzungssituationen zwischen der MACD-Linie und der Signallinie, wobei zu prüfen ist, ob der Wert der MACD-Linie bestimmte Schwellenwerte überschreitet (1.5 und -1.5).
  3. Wenn ein Long-Signal angezeigt wird, eröffnet man eine Long-Position mit einem Take-Profit-Preis des aktuellen höchsten Preises + 600 Mindest-Tick-Einheiten und einem Stop-Loss-Preis des aktuellen niedrigsten Preises - 100 Mindest-Tick-Einheiten.
  4. Wenn ein Short-Signal angezeigt wird, eröffnet man eine Short-Position mit einem Take-Profit-Preis des aktuell niedrigsten Preises - 600 minimale Tick-Einheiten und einem Stop-Loss-Preis des aktuell höchsten Preises + 100 minimale Tick-Einheiten.
  5. Einführung einer Trailing-Stop-Loss-Logik: Wenn der Kurs mehr als 300 Mindest-Tick-Einheiten gegenüber dem Einstiegspreis steigt (Long-Position) oder fällt (Short-Position), wird der Stop-Loss-Preis auf den Einstiegspreis + (Schließpreis - Einstiegspreis - 300) für Long-Positionen oder auf den Einstiegspreis - (Einstiegspreis - Schließpreis - 300) für Short-Positionen verschoben.
  6. Festlegen von täglichen Höchstverlusten und Gewinngrenzen: Wenn der tägliche Verlust 600 Mindest-Tick-Einheiten erreicht oder der Gewinn 1800 Mindest-Tick-Einheiten erreicht, schließen Sie alle Positionen.

Analyse der Vorteile

  1. Die Kombination des MACD-Indikators mit den Preisschwellenbedingungen filtert einige Geräuschsignale effektiv aus.
  2. Das feste Risiko-Rendite-Verhältnis (R:R) macht das Risiko und die Rendite jedes Handels kontrollierbar.
  3. Die Stop-Loss-Logik schützt die Gewinne, nachdem sich ein Trend gebildet hat, und reduziert die Rückgänge.
  4. Tägliche Höchstverlust- und Gewinngrenzen helfen, das tägliche Risikopositionsrisiko zu kontrollieren und zu vermeiden, dass zu hohe Verluste oder Gewinne gefolgt von Abzügen entstehen.

Risikoanalyse

  1. Der MACD-Indikator hat einen Verzögerungseffekt, der zu verzögerten oder falschen Signalen führen kann.
  2. Festgelegte Take-Profit- und Stop-Loss-Level können sich möglicherweise nicht an unterschiedliche Marktbedingungen anpassen und können häufig in unruhigen Märkten ausgelöst werden.
  3. Die Stop-Loss-Logik kann bei Trendumkehrungen nicht in der Lage sein, Verluste rechtzeitig zu stoppen, was zu Gewinnrückgängen führt.
  4. Die täglichen maximalen Verlust- und Gewinnlimits können dazu führen, dass die Strategie Positionen vorzeitig schließt, wenn der Tagestrend klar ist, und potenzielle Gewinne verfehlt.

Optimierungsrichtung

  1. Es sollte in Erwägung gezogen werden, MACD-Indikatoren mit mehreren Zeitrahmen zu verwenden, um Signale zu bestätigen und die Signalgenauigkeit zu verbessern.
  2. Dynamische Anpassung der Take-Profit- und Stop-Loss-Level anhand der Marktvolatilität, um sich an die unterschiedlichen Marktbedingungen anzupassen.
  3. Optimierung der Stop-Loss-Logik, z. B. Einstellung der Stop-Loss-Distanz auf Basis des ATR-Indikators zur besseren Anpassung an Kursschwankungen.
  4. Optimieren Sie die Parameter der täglichen maximalen Verlust- und Gewinngrenzen, um geeignete Grenzwerte zu finden, die Risiken kontrollieren und dabei die Trendbewegungen so weit wie möglich erfassen.

Zusammenfassung

Diese Strategie nutzt die Konvergenz und Divergenz des MACD-Indikators, um Handelssignale zu generieren, während Risikokontrollmaßnahmen wie Risiko-Belohnung-Verhältnis, Trailing-Stop-Loss und Tageslimits eingeführt werden. Obwohl die Strategie Trendbewegungen erfassen und Risiken bis zu einem gewissen Grad kontrollieren kann, gibt es noch Raum für Optimierung und Verbesserung. In Zukunft kann Optimierung aus Aspekten wie Signalbestätigung, Gewinn- und Stop-Loss-Level, Trailing-Stop-Loss und Tageslimits betrachtet werden, um robustere und beträchtliche Renditen zu erzielen.


/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
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/
// © DD173838

//@version=5
strategy("MACD Convergence Strategy with R:R, Daily Limits, and Tighter Stop Loss", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// MACD settings
fastLength = input.int(12, title="Fast Length", minval=1)
slowLength = input.int(26, title="Slow Length", minval=1)
signalSmoothing = input.int(9, title="Signal Smoothing", minval=1)
source = input(close, title="Source")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)

// Plot MACD and signal line
plot(macdLine, title="MACD Line", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)

// Define convergence conditions
macdConvergenceUp = ta.crossover(macdLine, signalLine) and macdLine > 1.5
macdConvergenceDown = ta.crossunder(macdLine, signalLine) and macdLine < -1.5

// Define take profit and stop loss

        
    
takeProfit = 600
stopLoss = 100

// Plot buy and sell signals on the chart
plotshape(series=macdConvergenceDown, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
plotshape(series=macdConvergenceUp, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")

// Execute short and long orders with defined take profit and stop loss
if (macdConvergenceDown)
    strategy.entry("Short", strategy.short, qty=1, stop=high + (stopLoss / syminfo.mintick), limit=low - (takeProfit / syminfo.mintick))

if (macdConvergenceUp)
    strategy.entry("Long", strategy.long, qty=1, stop=low - (stopLoss / syminfo.mintick), limit=high + (takeProfit / syminfo.mintick))

// Trailing stop logic
var float entryPrice = na
var float trailingStopPrice = na

if (strategy.position_size != 0)
    entryPrice := strategy.opentrades.entry_price(0)

if (strategy.position_size > 0)  // For long positions
    if (close - entryPrice > 300)
        trailingStopPrice := entryPrice + (close - entryPrice - 300)

if (strategy.position_size < 0)  // For short positions
    if (entryPrice - close > 300)
        trailingStopPrice := entryPrice - (entryPrice - close - 300)

if (strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice)
    strategy.close("Long", comment="Trailing Stop")

if (strategy.position_size < 0 and not na(trailingStopPrice) and close > trailingStopPrice)
    strategy.close("Short", comment="Trailing Stop")

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 600
maxDailyProfit = 1800
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")


Verwandt

Mehr