Pivot-Umkehrung verbessert nur lang - eine doppelte Dynamikstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-25 17:47:11
Tags:

img

Übersicht

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.

Strategie Logik

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.

Vorteile

  1. Kombination der Stärken zweier Strategien für stabilere und zuverlässigere Handelsentscheidungen

  2. Die Pivot-Point-Strategie beurteilt Umkehrpunkte, während die LSMA falsche Ausbrüche filtert, wodurch Handelsrisiken verringert werden

  3. Es dauert nur lange, entsprechend den psychologischen Erwartungen der meisten Menschen.

  4. Einfache und klare Strategielogik, leicht zu verstehen und zu optimieren

  5. Moderate Handelsfrequenz, geeignet für mittel- bis langfristige Geschäfte

Risikoanalyse

  1. Nicht in der Lage, die schnell rückläufigen Chancen zu nutzen

  2. Ein gewisser Rückstand besteht, kann einige Aufstiegschancen verpassen

  3. Größere Verluste bei Umkehr der Marktentwicklung

Lösungen:

  1. Um die Verzögerung zu verringern, sollte der Berechnungszyklus angemessen verkürzt werden

  2. Anpassung der MA-Parameter zur Optimierung der Teilnahme

  3. Hinzufügen von Stop-Loss zur Verringerung von Einzelverlusten

Optimierungsrichtlinien

  1. Hinzufügen mehrerer Trendindikatoren zur Verbesserung der Genauigkeit

  2. Einbeziehung von Vorhersagen durch maschinelles Lernen zur Entscheidungsführung

  3. Kombination von Volatilitätsindikatoren zur Steuerung der Positionsgröße

  4. Optimieren von Parametern zur Verbesserung der Gewinnrate

  5. Testen Sie längerfristige Daten zur Überprüfung der Stabilität

Zusammenfassung

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)




Mehr