Long-Short-Balance-Strategie basierend auf Pivot-Punkten und dem gleitenden Durchschnitt der kleinsten Quadrate


Erstellungsdatum: 2023-12-25 17:47:11 zuletzt geändert: 2023-12-25 17:47:11
Kopie: 0 Klicks: 597
1
konzentrieren Sie sich auf
1623
Anhänger

Long-Short-Balance-Strategie basierend auf Pivot-Punkten und dem gleitenden Durchschnitt der kleinsten Quadrate

Überblick

Dies ist eine quantitative Handelsstrategie, die nur mehrere Köpfe hat und die Vorteile der Pivot-Reversal-Strategie und der Minimum-Doppel-Moving-Average-Strategie kombiniert. Die Strategie folgt dem Hauptrend in einem Bullenmarkt und entscheidet über die Reversal-Signale, nachdem sie beobachtet hat, dass Pivot-Punkte auf der Strecke stehen.

Strategieprinzip

Die Strategie kombiniert die Pivot-Rückschlag-Strategie und die Minimal-Doppel-Moving-Average-Strategie. Die Pivot-Rückschlag-Strategie berechnet die Höchst- und Minimalpreise der letzten bestimmten Handelstage und erhält Auf- und Abgleise. Wenn der Preis die Aufgleise durchbricht, wird dies als Rückschlagsignal beurteilt.

Konkret berechnet die Strategie zunächst die Höchstpreise der letzten 3 K-Linien und die Mindestpreise der letzten 16 K-Linien und erhält die Hubpunkte Oberbahn und Unterbahn. Wenn die Oberbahn entsteht, wird eine Position erhöht; wenn die nächste Unterbahn entsteht, wird eine Position ausgeschaltet. Gleichzeitig wird verlangt, dass der Schlusskurs höher ist als der Minimum-Doppelbewegungsdurchschnitt der letzten 20 Tage.

Strategische Vorteile

  1. Die Kombination der Vorteile beider Strategien ermöglicht stabilere und zuverlässigere Handelsentscheidungen

  2. Die Pivot-Points-Strategie ermittelt die Wendepunkte, die Minimal-Doppel-Moving-Average-Filterung von Falschbrüchen und reduziert das Handelsrisiko

  3. Es ist nur eine Überschneidung, die den psychologischen Erwartungen der meisten entspricht.

  4. Strategie ist einfach, klar, leicht zu verstehen und zu optimieren

  5. Handel mit mittlerer Häufigkeit, geeignet für mittlere und längere Geschäfte

Risikoanalyse

  1. Es ist nicht möglich, die Chancen eines schnellen Markteinbruchs zu nutzen.

  2. Es gibt eine gewisse Verzögerung, man könnte einen Teil der Einnahmechancen verpassen.

  3. Bei der Umstellung von Rindern und Bären entstehen größere Verluste

Die Lösung:

  1. Verkürzung der Berechnungszyklen und Verzögerungen

  2. Anpassung der Moving Average-Parameter zur Optimierung der Beteiligung

  3. Erhöhung der Stop-Loss-Strategie und Verringerung der Einzelschäden

Optimierungsrichtung

  1. Mehrfache Kombinationen von Trendindikatoren zur besseren Beurteilung

  2. Erhöhung der Vorhersagen von Machine Learning-Modellen zur Entscheidungsfindung

  3. In Kombination mit Volatilitätsindikatoren, um die Größe der Positionen zu kontrollieren

  4. Optimierung der Parameter und Erhöhung der Strategie-Gewinnrate

  5. Testen von Daten über längere Zeiträume zur Stabilität

Zusammenfassen

Diese Strategie integriert die Vorteile der Axial-Reversal-Strategie und der Minimum-Doppel-Moving-Average-Strategie, um das Risiko zu kontrollieren, während die Trendwende beurteilt wird. Sie ist eine robuste Strategie. Sie ist einfach in der Struktur, leicht zu verstehen und zu testen und eignet sich hervorragend für das Lernen und die Praxis von Quantitative Trading-Anfängern.

Strategiequellcode
/*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)