Diese Strategie kombiniert gleitende Durchschnittsindikatoren über mehrere Zeitrahmen hinweg, um die Trendkonsistenz zu bestimmen, und nimmt während des Tages Scalping-Aktionen vor, um dem Trend zu folgen und Gewinne zu erzielen.
Diese Strategie verwendet 8-Perioden- und 20-Perioden- gleitende Durchschnitte auf den 5-Minuten-, 15-Minuten-, 30-Minuten- und 60-Minuten-Zeitrahmen, um Handelssignale zu generieren. Ein Kaufsignal wird generiert, wenn der 8-Perioden-MA über den 20-Perioden-MA überschreitet. Ein Verkaufssignal wird generiert, wenn der 8-Perioden-MA unter den 20-Perioden-MA überschreitet.
Eine Kauf- oder Verkaufsanordnung wird nur platziert, wenn sich die gleitenden Durchschnitte auf allen vier Zeitrahmen ausrichten.
Die Strategie setzt ein festes Gewinnziel, um innerhalb des Tages Gewinn zu erzielen.
Insbesondere verwendet die Strategie die Funktion security ((), um MA-Werte aus verschiedenen Zeitrahmen abzurufen.
Bei der Erstellung von Bestellungen wird die Anzahl der Bestellungen anhand der Anzahl der Bestellungen ermittelt, die in den einzelnen Zeitrahmen erfolgen.
Nach dem Eintritt in einen Handel verwendet die Strategiestrategy.exit() ein festes Gewinnziel für den Scalping festzulegen.
Zu den Vorteilen dieser Strategie gehören:
Das Multi-Timeframe-Design filtert Lärm und reduziert die Handelsfrequenz.
Der Intraday-Scalping mit Gewinnoptimierung schafft eine konstante Akkumulation kleiner Gewinne.
Eine klare Codestruktur, leicht zu verstehen und zu optimieren.
Vernünftige Bedingungen helfen, das Risiko zu kontrollieren.
Potenzielle Risiken dieser Strategie:
Mehrzeitrahmen können subtile Trendveränderungen übersehen.
Häufige Scalping-Trades erhöhen die Kosten.
Das festgelegte Gewinnziel ist nicht flexibel.
Es hängt von den Indikatoren ab, es besteht das Risiko, betrogen zu werden.
Mögliche Optimierungen:
Fügen Sie mehr Zeitrahmen für robustere Signale hinzu.
Dynamisches Gewinnziel auf Basis von ATR.
Zusätzliche Filter wie Lautstärker oder Historie Extreme.
Optimierung der MA-Perioden für die besten Parameter.
Fügen Sie maschinelles Lernen hinzu, um die Signalverlässlichkeit zu beurteilen.
Insgesamt ist dies eine typische Multi-Timeframe Trend-Tracking-Strategie mit Intraday-Scalping. Die Logik ist klar und der Code gut strukturiert. Mit der richtigen Optimierung kann es zu einer sehr praktischen 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)