Die Hauptidee dieser Strategie besteht darin, Positionen durch Umkehrungen zu nehmen, die wichtige Unterstützungs-/Widerstandsniveaus um den gewichteten gleitenden Durchschnitt testen.
Diese Strategie basiert auf dem gewichteten gleitenden Durchschnitt. Er berechnet zunächst die WMA einer bestimmten Länge und überwacht dann, ob der Preis die WMA um einen bestimmten Bereich ausbricht. Wenn die Breakout-Distanz einen Schwellenwert erreicht, zeichnet er einen Pfeil und eröffnet Positionen. Um lang zu gehen, muss der Preis zuerst um einen bestimmten Bereich abbrechen; um kurz zu gehen, muss der Preis zuerst um einen bestimmten Bereich brechen. Durch die Bildung von Umkehrsignalen durch Breakouts und die Kombination mit den WMA
Die Strategie bietet Optionen zwischen Trailing Stop Loss und Fixed Stop Loss durch den Trail-Parameter, so dass Risiken durch Anpassung des Stop Loss-Bereichs kontrolliert werden können.
Der größte Vorteil liegt in der Kombination von Umkehr-Setups mit gleitenden Durchschnitten, um wichtige Marktwendepunkte für die Eröffnung von Positionen zu erfassen. Umkehrstrategien haben oft eine gute Gewinnrate und ein gutes Risiko-Rendite-Verhältnis, wobei Risiken leicht zu kontrollieren sind. Diese Strategie ist auch mit umfassenden Stop-Loss-Mechanismen und partiellen Gewinnnahme-Methoden ausgestattet, die dazu beitragen, Risiken zu reduzieren und die Stabilität zu verbessern.
Da es auf gleitenden Durchschnitten aufbaut, steht viel Raum für die Optimierung der Parameter durch Anpassung von Werten wie WMA-Länge, Breakout-Bereich usw., um die Anpassungsfähigkeit auf verschiedenen Märkten zu testen.
Das größte Risiko sind fehlgeschlagene Umkehrungen. Wenn der Preis nach der Bildung von Umkehrsignalen keinen Stop-Loss auslöst oder keinen Gewinn erzielt und in der ursprünglichen Richtung weiterläuft, würde er erhebliche schwimmende Verluste erleiden.
Auch ist es stark auf Parameteroptimierung angewiesen. Ungehörige Parameter-Einstellungen können leicht den Preisumkehrzeitpunkt verpassen oder falsche Signale erzeugen. Durch ausreichende Backtests ist ein richtiges Verständnis des Marktverhaltens und eine umsichtige Bewertung der Parameterentscheidungen erforderlich.
Es könnten mehr Indikatoren eingeführt werden, um die Qualität und Genauigkeit der Signale zu verbessern. Zum Beispiel könnten vor Preisumkehrungen Inkrementwerte in bestimmten jüngsten Perioden überprüft werden, insbesondere kurzfristige Inkrementdaten, um Preisschwankungsmuster zu charakterisieren. Oder bestimmte quantitative Faktoren könnten hinzugefügt werden, um Preisdynamik, Volatilität usw. für die Multifaktormodellierung zu erkennen.
Maschinelle Lernmethoden könnten auch getestet werden, um kurzfristige Preisbewegungen auf der Grundlage historischer Handelssignale und Preisdaten vorherzusagen, was dazu beiträgt, falsche Signale auszufiltern und die Signalqualität zu verbessern.
Darüber hinaus könnten einige adaptive Optimierungsmechanismen implementiert werden. Gemäß den tatsächlichen Handelsergebnissen könnten Parameter oder Regelgewichte dynamisch angepasst werden, um Selbstoptimierung und ENO der Strategie zu realisieren.
Der Gesamtbetrieb dieser Strategie ist stabil. Innerhalb eines angemessenen Parameterraums und Marktumfelds kann sie beträchtliche Renditen erzielen. Der größte Vorteil liegt in den kontrollierbaren Risiken und dem Optimierungspotenzial. Der nächste Schritt konzentriert sich auf die Verbesserung der Signalqualität und die Einbeziehung anpassungsfähiger Optimierungsmöglichkeiten.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-22 08:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="WMA Breakout",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02) len = input(20, minval=1, title="Length") src = input(close, title="Source") out = wma(src, len) price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001) price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001) trail = input(true, "Trailing Stop(checked), Market stop(unchecked)") stop = input(10, "Stop (in ticks)", step=1) limit = input(5, "Limit Out", step=1) //size = input(1, "Limit Position Size (pyramiding)", minval=1) timec = input(true, "Limit Time of Day (Buying Side)") //Time Session sess = input("1600-0500", "Start/Stop trades (Est time)") t = time(timeframe.period, sess) //plots plot(wma(src,len)) z = if low+price_drop<out (out-low) plotarrow(z, colorup=red) a = if high-price_climb>out (high-out) plotarrow(a, colorup=lime) av=wma(src,len) //Orders if(timec) strategy.entry("Enterlong", long=true, when=z and t>1) else strategy.entry("Enterlong", long=true, when=z) if(trail) strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Enterlong", profit=limit, loss = stop ) if(timec) strategy.entry("Entershort", long=false, when=a and t>1) else strategy.entry("Entershort", long=false, when=a) if(trail) strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Entershort", profit=limit, loss = stop )