Dies ist eine quantitative Handelsstrategie, die die Vorteile der Umkehrung des Drehpunkts und der am wenigsten quadratischen gleitenden Durchschnittsstrategien kombiniert. Sie folgt dem Haupttrend während eines Bullenmarktes und bestimmt Umkehrsignale nach Beobachtung der oberen Schiene des Drehpunkts, um lang zu gehen. Gleichzeitig erfordert sie, dass der Schlusskurs über dem Least Squares Moving Average liegt, bevor die Long-Positionen geöffnet werden, um die Strategie stabiler zu machen.
Die Strategie integriert Pivot Point Reversal und Least Square Moving Average Strategien. Die Pivot Point Reversal Strategie berechnet die höchsten und niedrigsten Preise über eine bestimmte Anzahl von Handelstagen, um die oberen und unteren Schienen zu erhalten.
Die Strategie berechnet zunächst den höchsten Preis der letzten 3 Balken und den niedrigsten Preis der letzten 16 Balken, um die oberen und unteren Drehpunkt-Schienen zu erhalten. Es geht lang, wenn die obere Schiene gebildet wird. Wenn die nächste untere Schiene gebildet wird, schließt es Positionen. Gleichzeitig erfordert es, dass der Schlusskurs höher ist als der 20-tägige Least Squares Moving Average, bevor man lange Positionen eröffnet.
Kombination der Stärken zweier Strategien für stabilere und zuverlässigere Handelsentscheidungen
Die Pivot-Point-Strategie beurteilt Umkehrpunkte, während die LSMA falsche Ausbrüche filtert, wodurch Handelsrisiken verringert werden
Es dauert nur lange, entsprechend den psychologischen Erwartungen der meisten Menschen.
Einfache und klare Strategielogik, leicht zu verstehen und zu optimieren
Moderate Handelsfrequenz, geeignet für mittel- bis langfristige Geschäfte
Nicht in der Lage, die schnell rückläufigen Chancen zu nutzen
Ein gewisser Rückstand besteht, kann einige Aufstiegschancen verpassen
Größere Verluste bei Umkehr der Marktentwicklung
Lösungen:
Um die Verzögerung zu verringern, sollte der Berechnungszyklus angemessen verkürzt werden
Anpassung der MA-Parameter zur Optimierung der Teilnahme
Hinzufügen von Stop-Loss zur Verringerung von Einzelverlusten
Hinzufügen mehrerer Trendindikatoren zur Verbesserung der Genauigkeit
Einbeziehung von Vorhersagen durch maschinelles Lernen zur Entscheidungsführung
Kombination von Volatilitätsindikatoren zur Steuerung der Positionsgröße
Optimieren von Parametern zur Verbesserung der Gewinnrate
Testen Sie längerfristige Daten zur Überprüfung der Stabilität
Diese Strategie integriert die Stärken der Drehpunktumkehrung und der LSMA-Strategien zur Risikokontrolle bei der Beurteilung von Trendumkehrungen. Mit einer einfachen Struktur für ein einfaches Verstehen und Testen ist sie perfekt für Anfänger, die lernen und üben möchten.
/*backtest start: 2022-12-18 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author exlux99 strategy(title = "Pivot Reversal Upgraded long only", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1) ///////////// //time fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2010, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2031, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // length = input(title="Length MA", type=input.integer, defval=20) offset = 0//input(title="Offset", type=input.integer, defval=0) src = input(close, title="Source") lsma = linreg(src, length, offset) //LSMA leftBars = input(3) rightBars = input(16) swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond and time_cond? true : (le[1] and high > hprice ? false : le[1]) //leverage multiplier=input(1.0, step=0.5) g(v, p) => round(v * (pow(10, p))) / pow(10, p) risk = input(100) leverage = input(1.0, step = 0.5) c = g((strategy.equity * leverage / open) * (risk / 100), 4) //entry strategy.entry("long", strategy.long,c, when=le and close > lsma, comment="long", stop=(hprice + syminfo.mintick) * multiplier) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) strategy.close("long", when=se)