Schriftsteller:ChaoZhang, Datum: 2024-01-25 12:54:16
Tags:

img

Übersicht

Diese Strategie ist eine zusammengesetzte Strategie, die auf EMA-Differenz und MACD-Indikator für den kurzfristigen BTC-Handel basiert. Sie kombiniert die Signale von EMA und MACD, um Kauf- und Verkaufssignale unter bestimmten Bedingungen zu generieren.

Strategie Logik

Durch die Kombination der Signale sowohl von EMA Differenz als auch von MACD können einige gefälschte Signale herausgefiltert und die Zuverlässigkeit der Signale verbessert werden.

Analyse der Vorteile

  1. Verwendet zusammengesetzte Indikatoren, zuverlässigere Signale
  2. Hat Stop-Loss- und Take-Profit-Einstellungen zur Risikokontrolle

Risikoanalyse

  1. Der Stop-Loss kann während großer Marktschwankungen gebrochen werden
  2. Die Parameter müssen für verschiedene Marktbedingungen optimiert werden
  3. Wirkungen müssen auf verschiedenen Münzen und Börsen getestet werden

Optimierungsrichtlinien

  1. Ergänzung von Positionsgrößen und Pyramidenstrategien zur Verbesserung der Kapitaleffizienz
  2. Hinzufügen von Stop-Loss-Methoden wie Trailing-Stop-Loss, um Risiken zu reduzieren
  3. Testeffekte auf verschiedenen Börsen und Münzen

Schlussfolgerung


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA50Diff & MACD Strategy", overlay=false)
EMA = input(18, step=1)
MACDfast = input(12)
MACDslow = input(26)
EMADiffThreshold = input(8)
MACDThreshold = input(80)
TargetValidityThreshold = input(65, step=5)
Target = input(120, step=5)
StopLoss = input(650, step=5) 
ema = ema(close, EMA)
hl = plot(0, color=white, linewidth=1)
diff = close - ema
clr = color(blue, transp=100)
if diff>0
    clr := lime
else 
    if diff<0
        clr := red

fastMA = ema(close, MACDfast)
slowMA = ema(close, MACDslow)
macd = (fastMA - slowMA)*3
signal = sma(macd, 9)
plot(macd, color=aqua, linewidth=2)
plot(signal, color=purple, linewidth=2)

macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal)
macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal)
position = 0.0
position := nz(strategy.position_size, 0.0)
long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or 
     (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong)

short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or 
      (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort)
amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10)
bgclr = color(blue, transp=100) //#0c0c0c
if long
    strategy.entry("long", strategy.long, amount)
    bgclr := green
if short
    strategy.entry("short", strategy.short, amount)
    bgclr := maroon
bgcolor(bgclr, transp=20)
strategy.close("long", when=close>strategy.position_avg_price + Target)
strategy.close("short", when=close<strategy.position_avg_price - Target)
strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss)
strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss)
//plotshape(long, style=shape.labelup, location=location.bottom, color=green)
//plotshape(short, style=shape.labeldown, location=location.top, color=red)
pl = plot(diff, style=histogram, color=clr)
fill(hl, pl, color=clr)


Mehr