Automatische Long/Short-Handelsstrategie auf Basis von täglichen Pivotpoints

Schriftsteller:ChaoZhang, Datum: 2024-01-23 14:24:22
Tags:

img

Übersicht

Diese Strategie zeichnet zwei Linien, die auf den höchsten und niedrigsten Preisen der täglichen Kerzen für die Beurteilung von langen / kurzen Trends basieren. Sie geht lang, wenn der Preis die höchste Preislinie durchbricht, und geht kurz, wenn der Preis die niedrigste Preislinie durchbricht. Sie kann automatisch zwischen langen und kurzen Positionen wechseln.

Strategie Logik

Diese Strategie verwendet hauptsächlich die Drehpunkte der täglichen Kerzen, um lange/kurze Trends zu bestimmen. Die sogenannten Pivot-Punkte beziehen sich auf die höchsten und niedrigsten Preise von gestern. Diese beiden Linien bilden eine Handelsspanne. Wenn der heutige Preis durch einen von ihnen bricht, zeigt dies eine Umkehr des Trends an.

Insbesondere ist die Hauptlogik wie folgt:

  1. Höchste Preislinie: Zeichnet die höchste Preislinie von gestern.
  2. Niedrigste Preislinie: Zeichnet die niedrigste Preislinie von gestern.
  3. Long-Entry: Eröffnen Sie eine Long-Position, wenn der Schlusskurs die höchste Preislinie durchbricht.
  4. Short-Entry: Eröffnen Sie eine Short-Position, wenn der Schlusskurs die niedrigste Preislinie durchbricht.
  5. Stop-Loss: Langer Stop-Loss in der Nähe der niedrigsten Preislinie, kurzer Stop-Loss in der Nähe der höchsten Preislinie.

Durch die Erfassung von Trends durch Durchbrüche der höchsten/niedrigsten Preise wird automatisch zwischen Long und Short gewechselt.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Einfache Logik, leicht zu verstehen und umzusetzen
  2. Auf der Grundlage von täglichen Stäben, langen Zyklus, weniger anfällig für Kurzzeitgeräusche
  3. Automatischer Wechsel zwischen Long und Short, Vermeidung von nicht-trendigen Märkten
  4. Klarer Stop-Loss, vorteilhaft für die Risikokontrolle

Risikoanalyse

Einige Risiken:

  1. Tägliche Bars haben eine niedrigere Frequenz, nicht in der Lage, den Verlust rechtzeitig zu stoppen
  2. Falsche Durchbrüche können zu unnötigen Verlusten führen
  3. Langes Halten kann zu erhöhten Verlusten führen

Verbesserungen

  1. Hinzufügen anderer höherer Frequenzindikatoren zur Bestätigung
  2. Optimieren Sie die Parameter, um gefälschte Durchbrüche auszufiltern
  3. Einführung progressiver Stop-Loss-Methoden für rechtzeitige Stop-Loss-Methoden

Optimierungsrichtlinien

Einige Anweisungen:

  1. Mehr Backtesting für verschiedene Produkte und längere Datensätze zur Stabilitätsprüfung
  2. Erforschen Sie andere Durchbruchsindizes wie Kanäle, Bollinger Bands usw.
  3. Einbeziehen des Handelsvolumens, um falsche Breaks ohne Volumen zu vermeiden
  4. Hinzufügen von mehr Filtern zur Verringerung von Fehlbrüchen
  5. Nutzen Sie maschinelles Lernen für die Optimierung von Parametern

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese einfache Strategie automatisch Long/Short realisiert, basierend auf täglichen Pivots. Die Logik ist klar und leicht verständlich. Weitere Optimierungen können die Stabilität verbessern. Anleger können sie auf Basis persönlicher Risikopräferenzen auf Live-Handel anwenden.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's DEX Strategy", shorttitle = "DEX str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
showlines = input(true, title = "Show lines")
showbg = input(false, title = "Show background")
showday = input(false, title = "Show new day")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//New day trand
bar = close > open ? 1 : close < open ? -1 : 0
newday = request.security(syminfo.tickerid, 'D', time)

//Lines
uplevel = request.security(syminfo.tickerid, 'D', high)
dnlevel = request.security(syminfo.tickerid, 'D', low)
upcolor = uplevel == uplevel[1] and showlines ? lime : na
dncolor = dnlevel == dnlevel[1] and showlines? red : na
plot(uplevel, offset = 1, linewidth = 2, color = upcolor)
plot(dnlevel, offset = 1, linewidth = 2, color = dncolor)

//Background
size = strategy.position_size
col = time == newday + 86400000 and showday ? blue : showbg and size > 0 ? lime : showbg and size < 0 ? red : na
bgcolor(col)

//Orders
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong ? lot : 0, stop = uplevel, when = truetime)
    strategy.entry("Close", strategy.short, needshort ? lot : 0, stop = dnlevel, when = truetime)

Mehr