Trendfolgestrategie basierend auf dualem gleitendem Durchschnitt und MACD-Indikator


Erstellungsdatum: 2023-11-02 16:09:08 zuletzt geändert: 2023-11-02 16:09:08
Kopie: 2 Klicks: 474
1
konzentrieren Sie sich auf
1182
Anhänger

Trendfolgestrategie basierend auf dualem gleitendem Durchschnitt und MACD-Indikator

Überblick

Die Kernidee dieser Strategie besteht darin, die Richtung des Trends in Kombination mit der MACD und der MACD zu bestimmen. Wenn die kurzfristige Durchschnittslinie die langfristige Durchschnittslinie durchbricht, wird dies als bullish beurteilt. Wenn die kurzfristige Durchschnittslinie die langfristige Durchschnittslinie unterbricht, wird dies als bullish beurteilt.

Strategieprinzip

  1. Berechnen Sie die schnelle EMA (12), die langsame EMA (26 und die Signalleitung (9).

  2. Berechnen Sie die MACD-Säulen (Fast-Slow-Line) und MACD-Signal-Linien (MACD-Neuntägige-Line).

  3. Die 50er- und 200er-Tage-Linien werden als Mittellinien für große Trends berechnet.

  4. Die MACD-Säulen zeigen als bullish und als bearish die 0-Achse.

  5. Die Kurz- und die Langzeit-Gewinnlinien werden als Positionszeichen verwendet.

  6. Die schnelle Linie durchbricht die langsame Linie und die kurzfristige Durchschnittslinie durchbricht die langfristige Durchschnittslinie.

  7. Jedes Mal, wenn sich die Richtung der Durchschnittslinie ändert, werden mehrere Eintrittsgeschäfte erlaubt, die durch Max trades after EMA cross-Parameter gesteuert werden.

  8. Nach dem Eintritt wird die Position durch Stop Loss ausgeglichen.

Strategische Vorteile

  1. Es ist wichtig, dass Sie die Trends in der Binärwährung beurteilen, um einen negativen Handel zu vermeiden.

  2. Die MACD ermittelt die Kauf- und Verkaufspunkte, um die Trendwende zeitnah zu erfassen.

  3. In Kombination mit der Doppel-Gleichgewicht-Linie und dem MACD-Indikator kann eine bessere Einstiegsmomente in Trends erfasst werden.

  4. Setzen Sie eine maximale Anzahl von Transaktionen, um die Verfolgung von Abstumpfungen zu vermeiden.

  5. Das Risiko wird durch die Verhinderung von Verletzungen und die Kontrolle des Bremsmechanismus kontrolliert.

  6. Durch die Optimierung der Parameter kann eine bessere Parameterkombination erzielt werden.

Strategisches Risiko

  1. Bei Fehlbeurteilungen bei großen Trends, die zu Verlusten bei Abwärtstransaktionen führen, können die Anforderungen für die Durchschnittslinie-Gefälle entsprechend gelockert werden, um sicherzustellen, dass die großen Trends erfasst werden.

  2. MACD-Kauf- und Verkaufssignale sind verspätet und können zu früh oder zu spät eingegeben werden. Die MACD-Parameter können angepasst werden und können auch mit anderen Indikatoren kombiniert werden.

  3. Die Dämpfungssperre ist falsch eingestellt und kann zu locker oder zu eng sein, was zu einer Überdämpfung oder zu einer Unterdämpfung führt. Parameteroptimierungstests für verschiedene Sorten sind erforderlich.

  4. Die Parameteroptimierung ist schwierig, verschiedene Sorten und Zeiträume erfordern unterschiedliche Parameterkombinationen und erfordern eine große Anzahl von Vorabtests.

Richtung der Strategieoptimierung

  1. Versuchen Sie es mit anderen mittleren Indikatoren, wie dem KD-Indikator.

  2. Versuchen Sie, MACD-Filtersignale mit anderen Indikatoren zu kombinieren, z. B. Brinband, ATR-Stopp.

  3. Optimierung der Stop-Loss-Stop-Parameter, um die optimale Kombination von Parametern für verschiedene Sorten zu finden.

  4. Mit schrittweisen Optimierungs- und Zufallsoptimierungsmethoden suchen Sie nach einer besseren Kombination von Parametern.

  5. Die Einführung von Mechanismen zur Verringerung der Häufigkeit von Transaktionen, wie z. B. die Einrichtung von Sperrzonen in der Nähe der MACD-Null-Achse.

  6. Automatische Optimierung von Parametern und Kombinationen für mehrere Sorten.

Zusammenfassen

Diese Strategie kombiniert die Vorzüge der Big Trend-Bilanz mit der MACD-Bilanz, um eine stärkere Trendverfolgungsstrategie zu bilden. Durch die Optimierung der Parameter und die Kombination von Indikatoren kann die Strategie noch weiter verbessert werden. Insgesamt hat die Strategie eine starke Risiko- und Gewinnspanne, die es wert ist, in der Praxis zu berücksichtigen.

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

//@version=5
strategy(title="ComiCo - Joel on Crypto - MACD Scalping", shorttitle="ComiCo - Joel on Crypto - MACD Scalping")
// Getting inputs
slow_length1 = input(title="EMA Trend 1", defval=50)
slow_length2 = input(title="EMA Trend 2 ", defval=200)
fast_length = input(title="MACD Fast Length", defval=12)
slow_length = input(title="MACD Slow Length", defval=26)
signal_length = input.int(title="MACD Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
src = input(title="MACD Source", defval=close)

i_switch = input.string(title="Tick Highlight", defval="Moving average" ,options=["Moving average","Fixed value" ])
i_switch2 = input.string(title="Tick Source", defval="Highest bar" ,options=["Highest bar","Average","Last bar"])

signal_lengthup = input.int(title="Upticks Avg. Length",  minval = 1, maxval = 5000, defval = 72)
signal_lengthdown = input.int(title="Downticks Avg. Length",  minval = 1, maxval = 5000, defval = 72)

signal_lengthMA = input.float(title="Ticks Avg. Multiplier",  minval = 0, maxval = 5000, defval = 2, step = 0.1)

sma_source = "EMA"
sma_signal = "EMA"
// Plot colors

col_grow_above = #26A69A
col_fall_above =#B2DFDB
col_grow_below = #FFCDD2
col_fall_below = #FF5252
// Calculating

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)

time_macd=timeframe.period=="1"?"1": timeframe.period=="3"?"1": timeframe.period=="5"?"1": timeframe.period=="15"?"3":timeframe.period=="30"?"5":timeframe.period=="60"?"15":timeframe.period=="120"?"30":timeframe.period=="240"?"60":timeframe.period=="D"?"240":timeframe.period=="W"?"D":timeframe.period=="M"?"W":timeframe.period=="12M"?"M":timeframe.period



macd = fast_ma - slow_ma
macd1=request.security(syminfo.tickerid, time_macd, macd)
signal = sma_signal == "SMA" ? ta.sma(macd1, signal_length) : ta.ema(macd1, signal_length)

ema50=ta.ema(close,slow_length1)
ema200=ta.ema(close ,slow_length2)

var TradeCounter = 0
MaxCount = input.int(title = "Max trades after EMA cross", minval = 0, maxval = 1000, defval = 3)
bull = ema50>ema200
if bull != bull[1]
    TradeCounter := 0


hist = request.security(syminfo.tickerid, time_macd, macd1 - signal)


f() => [hist[4],hist[3],hist[2],hist[1], hist]
ss=request.security(syminfo.tickerid, time_macd, hist, barmerge.gaps_on,barmerge.lookahead_off)



[ss5,ss4,ss3,ss2,ss1]=request.security(syminfo.tickerid, time_macd, f(), barmerge.gaps_on,barmerge.lookahead_off)



a = array.from(ss5,ss4,ss3,ss2,ss1)

s3=i_switch2=="Highest bar"?(ss>0? array.max(a, 0) : array.min(a, 0)):i_switch2=="Average"?array.avg(a):i_switch2=="Last bar"?ss1:0

saa=timeframe.period == '1'? ss:s3

saa2=timeframe.period == '1'? ss:s3*signal_lengthMA


colorss=(s3>=0 ? (s3[1] < s3 ? col_grow_above : col_fall_above) : (s3[1] < s3 ? col_grow_below : col_fall_below))


saadown = saa2
saaup = saa2

saadown:=saa>=0? saa2:saadown[1]

saaup:=saa<0? saa2:saaup[1]



verr=ta.ema(saadown,signal_lengthup)
dowww=ta.ema(saaup,signal_lengthdown)

ss22=plot(verr, title="Avg. Cloud Upper 1", color=color.new(color.white, 100))
ss33=plot(dowww, title="Avg. Cloud Lower 1", color=color.new(color.white, 100))

fill(ss22, ss33, color.new(color.white, 93), title="Avg. Cloud Background")

fixeduptick = input(title="Fixed Uptick Value", defval=30)
fixeddowntick = input(title="Fixed Downtick Value", defval=-30)
minl = i_switch=="Fixed value"? fixeduptick  :  verr
maxl = i_switch=="Fixed value"? fixeddowntick : dowww 

plot(minl, title="Avg. Cloud Upper 2", color=color.new(color.white, 81))
plot(maxl, title="Avg. Cloud Lower 2", color=color.new(color.white, 81))


colors2= s3<=minl and s3>=maxl ? #2a2e39 : colorss

coro2=s3>0? ema50>ema200 ? #2a2e39 :  colors2 : ema50<ema200 ? #2a2e39: colors2
plot(saa, title="Histogram", style=plot.style_columns, color=coro2)

LimitDiff = input.float(title="Limit Price Difference",  minval = 0, maxval = 0.1, defval = 0.005, step = 0.0005)
TP = input.float(title="Take Profit",  minval = 0, maxval = 0.1, defval = 0.005, step = 0.0005)
SL = input.float(title="Stop Loss",  minval = 0, maxval = 0.1, defval = 0.004, step = 0.0005)

minEMAdiff = input.float(title = "Min EMA difference", defval = 100, step = 10)

if #2a2e39 != coro2
    a22 = 0
    if ema50<ema200 and TradeCounter < MaxCount and math.abs(ema50-ema200) > minEMAdiff
        LimitPrice = close * (1 + LimitDiff)
        strategy.entry("enter short", strategy.short, limit = LimitPrice)
        strategy.exit("exit short", "enter short", limit = LimitPrice * (1 - TP), stop = LimitPrice * (1 + SL))
        TradeCounter := TradeCounter + 1
    if ema50>ema200 and TradeCounter < MaxCount and math.abs(ema50-ema200) > minEMAdiff
        LimitPrice = close * (1 - LimitDiff)
        strategy.entry("enter long", strategy.long, limit = LimitPrice)
        strategy.exit("exit long", "enter long", limit = LimitPrice * (1 + TP), stop = LimitPrice * (1 - SL))
        TradeCounter := TradeCounter + 1

//alertcondition(#2a2e39 != coro2 , title='MACD Tick Alert', message='Joel on Crypto - MACD Tick Alert')