Gradient-MACD-Quantenstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-19 16:14:50
Tags:

img

Übersicht

Diese Strategie berechnet Heikin-Ashi-Kerzen, um die Preislinien zu glätten, und kombiniert den MACD-Indikator, um Handelssignale zu generieren, und implementiert eine quantitative Strategie, die mittelfristige und langfristige Trends verfolgt.

Strategie Logik

  1. Berechnen Sie Heikin-Ashi-Offenen, Schließenden, Höhen und Tiefpreisen, um Heikin-Ashi-Kerzen und glatte Preistrends zu zeichnen.

  2. MACD-Parameter setzen: schnelle Länge 12, langsame Länge 26, Signallänge 9.

  3. Berechnen Sie DEA langsame Linie, DEA schnelle Linie und MACD Histogramm.

  4. Gehen Sie lang, wenn das MACD-Histogramm oberhalb von 0 überschreitet; Gehen Sie kurz, wenn es unter 0 überschreitet.

  5. Hinzufügen von Filtern für Jahr, Monat und Tag, um den Handel auf einen bestimmten Zeitrahmen zu beschränken.

Analyse der Vorteile

  1. Heikin-Aschi-Kerzenfilter filtern Marktgeräusche effektiv aus, um Trends zu erkennen.

  2. Der MACD liefert klare Trend-Handelssignale.

  3. Die Kombination von Heikin-Ashi und MACD verbessert die Signalqualität und die Rentabilität.

  4. Zeitfilter helfen, den Handelszeitplan basierend auf der historischen Performance zu optimieren.

Risikoanalyse

  1. Potenzielle große Verluste bei einer Trendumkehr.

  2. Unzulängliche MACD-Parameter können zu übermäßige wertlose Signale erzeugen.

  3. Starrzeitfilter können gute Handelsmöglichkeiten verpassen.

Gegenmaßnahmen:

  1. Setzen Sie Stop-Loss/Take-Profit, um Verluste zu begrenzen.

  2. Optimieren Sie die MACD-Parameter, um die beste Kombination zu bestimmen.

  3. Hinzufügen von Indikatoren zur Ermittlung lokaler Trends.

Optimierungsrichtlinien

  1. Verschiedene Parameterkombinationen testen, um das Optimum zu finden.

  2. Fügen Sie Stop-Loss-Mechanismen wie Trailing Stop-Loss hinzu.

  3. Fügen Sie Indikatoren wie EMA, KDJ hinzu, um Umkehrpunkte zu bestimmen.

  4. Um Abweichungen zu vermeiden, fügen Sie Volumenindikatoren hinzu.

Zusammenfassung

Diese Strategie erleichtert die Preisbewegung mit Heikin-Ashi-Kerzen und bestimmt die Trendrichtung und Eingangssignale mit dem MACD Tradingview-Indikator, um eine trendfolgende Quant-Strategie umzusetzen. Im Vergleich zu normalen MACD-Strategien filtert sie etwas Lärm aus, um eine klarere Trendidentifizierung zu ermöglichen. Weitere Verbesserungen bei Parameteroptimierung, Stop-Loss und Combo-Indikatoren können seine Stabilität und Rentabilität verbessern.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MACD ASHI BARS .v1 ", overlay=false,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,slippage=1)

// Calculation HA Values 
haopen  = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh  = max(high, max(haopen, haclose))
halow   = min(low,  min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red
src=haclose



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = sma(src,slowmacd)
macdslowline2 = sma(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = sma(src,fastmacd)
macdfastline2 = sma(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine = sma(MACDLine, signalmacd)

delta = MACDLine-SignalLine




swap1 = delta>0?color.green:color.red



plot(delta,color=swap1,style=plot.style_columns,title='Histo',histbase=0,transp=20)
p1 = plot(MACDLine,color=color.blue,title='MACD Line')
p2 = plot(SignalLine,color=color.red,title='Signal')
fill(p1, p2, color=color.blue)
hline(0)



yearfrom = input(2020)
yearuntil =input(2042)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(delta,0)  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(delta,0) and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


Mehr