Dieser Artikel beschreibt eine quantitative Handelsstrategie, die auf einheitlichen MACD-Indikatoren basiert. Diese Strategie wurde auf die klassische MACD-Strategie optimiert, um die Signalqualität zu verbessern.
Die Kernidee der Strategie ist es, die herkömmlichen MACD-Indikatoren zu vereinheitlichen, um die Fehlerquote zu senken. Die konkreten Schritte sind wie folgt:
Berechnen Sie die kurz- und langfristigen Hull Moving Averages, um die Trends anhand ihrer Kreuzung zu bestimmen.
Berechnung der Differenz für den MACD-Wert;
Die MACD-Indikatoren werden innerhalb eines bestimmten Zeitraums standardisiert.
Berechnen Sie die mittlere Linie der einheitlichen MACD, um einen Handelsauslöser zu bilden;
Wenn der einheitliche MACD über den Trigger ausgerichtet ist, ist der Trigger frei.
Filterung in Kombination mit linearen Beziehungen, um zu vermeiden, dass große Trends übersehen werden.
Setzen Sie einen Stop-Loss-Stop-Stopp und kontrollieren Sie das Risiko eines einzelnen Handels.
Durch die Standardisierung kann die absolute Bandbreite der MACD-Differenz verkleinert werden, wodurch die Geräusche reduziert und die Signalqualität verbessert wird. Die Trendfilter verhindern auch die Umkehrung aufgrund lokaler Anpassungen. Der Verluststopp kontrolliert den Einzelschaden.
Der größte Vorteil dieser Strategie gegenüber der einfachen MACD-Strategie ist die Vereinheitlichungsbehandlung, die die Fehlerrate der MACD effektiv reduziert und die Signalgenauigkeit verbessert.
Ein weiterer Vorteil ist der Zusatz eines Filters, der Trends beurteilt und die Umkehrung von Trends verhindert. Dies erhöht die Stabilität der Strategie.
Schließlich ermöglicht die Einrichtung von Stop-Loss-Stop-Bedingungen, dass die Risiken und Erträge für jeden Handel kontrolliert werden können, was eine positive Geldverwaltung ermöglicht.
Obwohl die Strategie optimiert wurde, sind folgende Risiken in der Praxis zu beachten:
Zunächst ist es schwierig, die Parameter zu optimieren, und eine falsche Einstellung kann zu einer Überpassung führen.
Zweitens kann die Stop-Loss-Einstellung, die zu nahe ist, durchbrochen werden, was zu einer Vergrößerung der Verluste führt.
Letztendlich kann es zu einer Verzögerung des Signals bei einem Trendwechsel kommen, der nicht rechtzeitig reagiert werden kann.
Vier Inhalte, Zusammenfassung
Dieser Artikel beschreibt eine quantitative Handelsstrategie zur Standardisierung der MACD-Indikatoren. Die Strategie ist eine Verbesserung der klassischen MACD-Strategie, die die Signalqualität effektiv verbessert und die Risikomanagementmechanismen integriert. Allerdings ist auf die Schwierigkeit der Parameteroptimierung und die Stop-Loss-Einstellungen zu achten.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot
if (shortCondition)
strategy.entry("Short",strategy.short)