
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.
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.
Die Kombination der Vorteile beider Strategien ermöglicht stabilere und zuverlässigere Handelsentscheidungen
Die Pivot-Points-Strategie ermittelt die Wendepunkte, die Minimal-Doppel-Moving-Average-Filterung von Falschbrüchen und reduziert das Handelsrisiko
Es ist nur eine Überschneidung, die den psychologischen Erwartungen der meisten entspricht.
Strategie ist einfach, klar, leicht zu verstehen und zu optimieren
Handel mit mittlerer Häufigkeit, geeignet für mittlere und längere Geschäfte
Es ist nicht möglich, die Chancen eines schnellen Markteinbruchs zu nutzen.
Es gibt eine gewisse Verzögerung, man könnte einen Teil der Einnahmechancen verpassen.
Bei der Umstellung von Rindern und Bären entstehen größere Verluste
Die Lösung:
Verkürzung der Berechnungszyklen und Verzögerungen
Anpassung der Moving Average-Parameter zur Optimierung der Beteiligung
Erhöhung der Stop-Loss-Strategie und Verringerung der Einzelschäden
Mehrfache Kombinationen von Trendindikatoren zur besseren Beurteilung
Erhöhung der Vorhersagen von Machine Learning-Modellen zur Entscheidungsfindung
In Kombination mit Volatilitätsindikatoren, um die Größe der Positionen zu kontrollieren
Optimierung der Parameter und Erhöhung der Strategie-Gewinnrate
Testen von Daten über längere Zeiträume zur Stabilität
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.
/*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)