MACD-Indikator-Ausbruchshandelsstrategie


Erstellungsdatum: 2023-09-12 15:32:12 zuletzt geändert: 2023-09-12 15:32:12
Kopie: 1 Klicks: 789
1
konzentrieren Sie sich auf
1617
Anhänger

Diese Strategie nutzt die Differenzkursbrechung der MACD-Indikator für die Handelsentscheidung. Die MACD besteht aus schnellen und langsamen EMAs, die ein Handelssignal erzeugen, wenn die Differenzkursbrechung die Null-Achse überschreitet. Diese Strategie gehört zu den typischen Tracking-Quantitative-Handelsstrategien.

Die Strategie:

  1. Berechnen Sie die schnelle EMA und die langsame EMA, deren Differenz die MACD-Kurve bildet.

  2. Eine EMA-Gleichung der MACD-Kurve ergibt eine MACD-Signallinie.

  3. Wenn MACD über die Signalleitung geht, macht es mehr, wenn es unter die Signalleitung geht, macht es nichts.

  4. Setzen Sie einen prozentualen Stop-Loss-Stop-Point und führen Sie Risikomanagement durch.

Die Vorteile der Strategie:

  1. Der MACD-Indikator ist besser als ein einzelner EMA und kann Trends besser beurteilen.

  2. Das ist eine sehr gute Gelegenheit, um zu handeln und die Umkehrung zu ergreifen.

  3. Die Stop-Loss-Stopp-Mechanismen helfen bei der Kontrolle des Handelsrisikos.

Die Risiken dieser Strategie:

  1. Falsche Durchbrüche können in der Nähe der Null-Achse der MACD-Kurve auftreten.

  2. Die Parameter müssen optimiert werden, um die verschiedenen Handelsarten zu berücksichtigen.

  3. Trending-Trading ist anfällig für unvorhergesehene Ereignisse und muss mit einem Stop-Loss versehen werden.

Zusammenfassend lässt sich sagen, dass die Strategie die Breakout-Beziehung der MACD-Differenzkurve nutzt, um zu beurteilen. Die Vorteile des MACD-Indikators sind für die Verbesserung der Wirksamkeit von Vorteil, aber es ist erforderlich, auf das Risiko eines falschen Breakouts zu achten und geeignete Risikomanagementmaßnahmen zu ergreifen, um langfristige stabile Renditen zu erzielen.

Strategiequellcode
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3 
strategy("uray MACD", overlay=false, pyramiding = 0, calc_on_every_tick=true, precision=2, currency="USD", default_qty_value=10, default_qty_type=strategy.cash,initial_capital=100,commission_type=strategy.commission.percent,commission_value=0.1) 

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
inTimeframe()  => true


isPosLong    = strategy.position_size > 0
isPosShort   = strategy.position_size < 0
isNoMarginPos= strategy.position_size == 0

fastLength    = input(12, minval = 1, title = "MACD fast")
slowlength    = input(26, minval = 1, title = "MACD slow")
MACDLength    = input( 9, minval = 1, title = "MACD length")
stopLoss      = input( 10, minval = 1, title = "Stop Loss (price %)", type=float)
takeProfit    = input( 50, minval = 1, title = "Take Profit (price %)", type=float)
src           = close   // Source of Calculations (Close of Bar)

MACD  = ta.ema(src, fastLength) - ta.ema(src, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD
stopLossValue      = close*(stopLoss/100)/syminfo.mintick
takeProfitValue    = close*(takeProfit/100)/syminfo.mintick
switchLongTrigger  = ta.crossover(delta, 0)
switchShortTrigger = ta.crossunder(delta, 0)
closeLongTrigger   = ta.crossunder(delta, 0)
closeShortTrigger  = ta.crossover(delta, 0)
entryLongTrigger   = ta.crossover(delta, 0)
entryShortTrigger  = ta.crossunder(delta, 0)

// if inTimeframe()
//     if isNoMarginPos
//         if entryLongTrigger
//             strategy.entry("Long", strategy.long,  comment="Entry Long")
//             strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//         if entryShortTrigger
//             strategy.entry("Short", strategy.short, comment="Entry Short")  
//             strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//     if isPosShort
//         if switchLongTrigger
//             strategy.close_all()    
//             strategy.entry("Long", strategy.long, comment="switch Long")
//             strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//         if closeLongTrigger
//             strategy.close_all()    
//     if isPosLong 
//         if switchShortTrigger
//             strategy.close_all()   
//             strategy.entry("Short", strategy.short, comment="switch Short")
//             strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue) 
//         if closeShortTrigger
//             strategy.close_all()   

if inTimeframe()
    strategy.entry("Long", strategy.long,  comment="Entry Long", when=entryLongTrigger)
    strategy.close("Long", when=entryShortTrigger)
    strategy.entry("Short", strategy.short,  comment="Entry Short", when=entryShortTrigger)
    strategy.close("Short", when=entryLongTrigger)
    strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryShortTrigger) 
    strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryLongTrigger)