MACD-Kontrollrisikohandelstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-26
Tags:

img

Übersicht

Diese Strategie konzipiert eine langfristige Handelsstrategie, die das Risiko jedes Handels auf der Grundlage des MACD-Indikators kontrolliert. Im Vergleich zu traditionellen Long-Short-Flipping-Strategien konzentriert sich diese Strategie mehr auf die Kontrolle des Risikos jedes Handels. Durch die Berechnung angemessener Stop-Loss- und Take-Profit-Levels und die Festlegung geeigneter Positionsgrößen begrenzt sie den maximalen Verlust für jeden Handel. Dies kann die Ziehungen effektiv kontrollieren und langfristig stabile Gewinne erzielen.

Grundsätze

Die Strategie berechnet zunächst die MACD-Linie und die Signallinie des MACD-Indikators. Wenn die MACD-Linie über die Signallinie kreuzt, wird sie als Kaufsignal bestimmt. Um falsche Ausbrüche auszufiltern, benötigt die Strategie Barsince ((crossover ((macd_line, signal_line)) <= 5, was bedeutet, dass der Ausbruch innerhalb der letzten 5 Bars stattgefunden hat. Sie benötigt auch, dass sowohl die MACD- als auch die Signallinien unter 0 liegen, was eine Überverkaufszone anzeigt, und der Close über der WMA-Linie liegt, was einen Aufwärtstrend anzeigt. Wenn die oben genannten Bedingungen erfüllt sind, wird eine Long-Position eröffnet.

Für jeden Trade berechnet die Strategie einen angemessenen Stop-Loss und Take-Profit-Level. Der Stop-Loss wird auf das niedrigste der letzten 3 Bars gesetzt. Der Take-Profit wird auf den Einstiegspreis plus das Vierfache der Entfernung zwischen dem Stop-Loss und dem Einstiegspreis gesetzt.

Der Schlüssel ist, dass die Strategie die spezifische Positionsgröße anhand des maximalen erschwinglichen Risikos berechnet. Der Parameter capital_risk legt den Prozentsatz des Gesamtkapitals fest, der für jeden Handel verloren gehen kann. Die Positionsgröße in USD wird dann anhand des Stop-Loss-Bereichs berechnet. Sie wird dann in Verträge zur Ausführung umgewandelt.

Das Risiko eines jeden Handels wird innerhalb von 1% des Gesamtkapitals kontrolliert, wodurch Effektivität der Abzüge kontrolliert werden kann.

Vorteile

  • Risikokontrolle hat Vorrang, das Risiko pro Handel ist kontrollierbar
  • Optimierte Positionsgröße zur Maximierung der Kapitalnutzung
  • Die Stop-Loss-Strategie kontrolliert die Abzüge wirksam
  • Ein vernünftiger Gewinnzuwachs ermöglicht ein hohes Gewinnpotenzial

Risiken und Verbesserungen

  • MACD hat Verzögerung, kann schnelle Trendänderungen verpassen
  • Unzulässige Stop-Loss- oder Take-Profit-Einstellungen können die Gewinne verringern oder das Risiko erhöhen
  • Hohe Handelsfrequenz kann die Transaktionskosten erhöhen

Mögliche Verbesserungen:

  • Einbeziehung anderer Indikatoren zur Ermittlung des Trends, Vermeidung von MACD-Verzögerungen
  • Optimieren Sie Stop-Loss- und Take-Profit-Algorithmen, um flexibler zu sein
  • Verringerung der Handelsfrequenz zur Senkung der Transaktionskosten

Zusammenfassung

Diese Strategie bestimmt die Trendrichtung mithilfe des MACD und nimmt die Risikokontrolle als Priorität für den Handel mit einer optimierten Positionsgröße. Die Schlüssel sind die Risikokontrolle und die Positionsgröße, die langfristig stabile Gewinne erzielen können. Aber der MACD hat einige Mängel, und die Stop-Loss/Take-Profit-Mechanismen müssen weiter optimiert werden. Eine weitere Optimierung der Indikatornutzung, Stop-Loss/Take-Profit-Einstellungen und die Verringerung der Handelsfrequenz können die Strategie noch leistungsfähiger machen.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )

Mehr