
Die Strategie nutzt die Kombination von Moving Average-Indikatoren für mehrere Zeiträume, um Trendkonsistenz zwischen mehreren Zeitrahmen zu ermitteln. Die Strategie verwendet Scalping-Operationen innerhalb eines Tages, um Trends zu folgen und Gewinne zu erzielen.
Diese Strategie verwendet die 8- und 20-Tage-Moving Averages in vier Zeitrahmen von 5 Minuten, 15 Minuten, 30 Minuten und 60 Minuten, um ein Handelssignal zu erstellen. Ein Kaufsignal wird erzeugt, wenn der 20-Tage-Moving Average über den kürzeren 8-Tage-Moving Average überschritten wird; ein Verkaufsignal wird erzeugt, wenn der 20-Tage-Moving Average unter dem 8-Tage-Moving Average überschritten wird.
Die Strategie verlangt, dass ein Handelssignal aus den Zeiträumen 5, 15, 30 und 60 Minuten übereinstimmen muss, um einen Handelsbefehl zu erteilen. Das heißt, ein Kauf oder Verkauf wird nur ausgeführt, wenn der Moving Average der vier Zeiträume dem Kauf- oder Verkaufssignal entspricht.
Nach dem Eintritt in die Position setzt die Strategie eine Stop-List mit einem festen Leverage-Level ein, um innerhalb eines Tages Scalping-Operationen durchzuführen.
Die Strategie bezieht die Moving-Average-Daten unter verschiedenen Zeiträumen, indem sie die security-Funktion aufruft. Berechnen Sie die Differenz zwischen dem 8-Tage- und dem 20-Tage-Durchschnittswert für 5 Minuten, 15 Minuten, 30 Minuten und 60 Minuten und zeichnen Sie eine Differenz-Kurve.
Beurteilen Sie die Kauf- und Verkaufssignale anhand der Null-Achs-Durchlässigkeit der Differenzkurve und legen Sie mehrere Islong- und Isshort-Markierungspunkte ein, um die Handelssignale für jeden Zeitrahmen zu erfassen. Schließlich werden die Ein- und Ausgangsanweisungen ausgegeben, wenn die Zustände von Islong und Isshort die Anforderungen erfüllen.
Nach dem Eintritt setzt die Strategie eine Fixpunkt-Haltestelle durch die Funktion strategy.exit, um die Scalping-Operation durchzuführen.
Diese Strategie hat folgende Vorteile:
Mehrzeit-Framework-Design, die durch die Zusammenfassung der verschiedenen Perioden-Indikatoren, um effektiv zu filtern und zu reduzieren, die Häufigkeit des Handels.
Die Scalping-Strategie, die sich auf die Gewinnoptimierung auswirkt, ermöglicht es, kontinuierlich kleine Gewinne zu erzielen.
Die Code-Struktur ist klar, jeder Teil hat eine klare Funktion, die leicht zu verstehen und zu optimieren ist.
Die Bedingungen sind vernünftig festgelegt, um die Risiken des Handels wirksam zu kontrollieren.
Es gibt einige Risiken bei dieser Strategie:
Die Mehrzeit-Framework-Design filtert zwar einen Teil des Rausches, kann aber auch Details übersehen, die zu unsichtbaren Trendwechseln führen.
Innerhalb eines Tages kann man mit Scalping häufig handeln, und es ist wichtig, die Kosten zu kontrollieren.
Die Festplatte ist nicht flexibel genug, um sich an Marktveränderungen anzupassen.
Es gibt eine Möglichkeit, getäuscht zu werden, wenn man sich auf Indizes verlässt, die Handelssignale erzeugen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Hinzu kommen weitere Indikatoren für verschiedene Periodenzeiträume, die das Signal stabiler und zuverlässiger machen.
Optimierung der Stopp-Strategie und Einstellung des Stopp-Punktes auf Basis der ATR-Dynamik.
Zusätzliche Bedingungen werden für die Eintrittszeiten, z. B. für die Erhöhung des Handelsvolumens, für die historischen Höchststände usw., eingefügt.
Optimierung der Periodizität von Moving Averages, um die optimale Kombination von Parametern zu finden.
Erhöhung der Zuverlässigkeit von Indikatorsignalen durch Machine-Learning-Modelle und Vermeidung von Arbitrage.
Diese Strategie ist eine typische Multi-Time-Frame Trend-Tracking-Strategie, die innerhalb eines Tages profitiert. Die Strategie ist klar, die Code-Struktur ist vernünftig und es lohnt sich, weiter getestet und optimiert zu werden. Mit einigen Optimierungs-Anpassungen kann diese Strategie zu einer sehr praktischen Intra-Day-Scalping-Strategie-Vorlage werden.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="PeBAS $JPY Scalper 15m ",overlay=true)
zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?")
profitwert=input(52, title="Profit")
myatr= input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001)
//Plot EMA-Differenz Aktueller Timeframe
dif=(ema(close,8)+ema(close,20))/2
mcolor=ema(close,8) > ema(close,20) ? green : red
bs = ema(close,8) > ema(close,20) ? true : false
ThisATR=atr(16)
//trans = zeigeallebars == true ? 00 : 100
//plot(dif,"dif",color=mcolor,linewidth=6,transp=trans)
//1M EMA
htf_ma1Mema8 = ema(close, 5)
htf_ma1Mema20 = ema(close, 20)
ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8)
ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20)
dif1M = (ema81m + ema201m) / 2
Close1M = request.security(syminfo.tickerid, "1", close)
color1=ema81m > ema201m ? green : red
//plot(dif1M,"dif",color1,linewidth=6)
//plotshape(1, style=shape.cross, color=color1,location=location.top)
ls1 = ema81m > ema201m ? 1 : 0
//5M EMA
htf_ma5Mema8 = ema(close, 8)
htf_ma5Mema20 = ema(close, 20)
ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8)
ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20)
dif5M = (ema85m + ema205m) / 2
color5=ema85m > ema205m ? green : red
plot(dif5M,"dif",color5,linewidth=5)
ls5 = ema85m > ema205m ? 1 : 0
alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0
islong5 = ema85m > ema205m ? 1 : 0
isshort5 = ema85m < ema205m ? 1 : 0
//15M EMA
htf_ma15Mema8 = ema(close, 8)
htf_ma15Mema20 = ema(close, 20)
ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8)
ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20)
dif15M = (ema815m + ema2015m) / 2
color15=ema815m > ema2015m ? green : red
plot(dif15M,"dif",color15,linewidth=3)
ls15= ema815m > ema2015m ? 1 : 0
alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0
islong15 = ema815m > ema2015m ? 1 : 0
isshort15 = ema815m < ema2015m ? 1 : 0
//30M EMA
htf_ma30Mema8 = ema(close, 8)
htf_ma30Mema20 = ema(close, 20)
ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8)
ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20)
dif30M = (ema830m + ema2030m) / 2
color30=ema830m > ema2030m ? green : red
ls30= ema830m > ema2030m ?1 : 0
islong30 = ema830m > ema2030m ? 1 : 0
isshort30 = ema830m < ema2030m ? 1 : 0
//60M EMA
htf_ma60Mema8 = ema(close, 8)
htf_ma60Mema20 = ema(close, 20)
ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8)
ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20)
dif60M = (ema860m + ema2060m) / 2
color60=ema860m > ema2060m ? green : red
ls60= ema860m > ema2060m ?1 : 0
islong60 = ema860m > ema2060m ? 1 : 0
isshort60 = ema860m < ema2060m ? 1 : 0
plot(dif60M,"dif",color60,linewidth=3,transp=70)
islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0
isshort = isshort5 ==1 and isshort15 ==1 and isshort60 ==1 and year > 2017 ? 1 : 0
condition2l= 0
condition2s = 0
c= alert1 == alert2 and alert1[1] != alert2[1] ? 1 : 0
alertcondition(c, title='Da tat sich was ', message='Da tat sich was!')
strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0 )
strategy.entry("enter short", strategy.short,1,when = isshort == 1 and isshort [1] == 0)
strategy.exit("close",profit=profitwert)
strategy.exit("close",profit=profitwert)