Umkehr-Dual-MACD-Handelsstrategie


Erstellungsdatum: 2024-01-12 14:49:47 zuletzt geändert: 2024-01-12 14:49:47
Kopie: 0 Klicks: 690
1
konzentrieren Sie sich auf
1617
Anhänger

Umkehr-Dual-MACD-Handelsstrategie

Überblick

Die Reverse-Double-MACD-Trading-Strategie ist eine quantitative Trading-Strategie, die die MACD-Indikatoren verwendet, um Trend-Reversal-Signale zu identifizieren. Die Strategie kombiniert gleichzeitig die RVI-Indikatoren und die CCI-Indikatoren, um die Kaufzeit zu bestätigen, um einige falsche Reverses zu filtern.

Strategieprinzip

Die Strategie basiert hauptsächlich auf dem MACD-Indikator. Der MACD ist der schnellere Moving Average EMA ((12)) abzüglich des langsameren Moving Average EMA ((26), um eine schnelle Linie zu erhalten, und dann wird SIGNAL ((9) als langsame Linie verwendet. Wenn eine Langstrecke über die Schnelle ein Golden Cross erzeugt, ist es positiv; wenn eine Langstrecke unter der Schnelle ein Dead Cross erzeugt, ist es negativ.

Die Strategie nutzt die zweiperiodische MACD-Anzeige, um eine Umkehrmöglichkeit zu finden. Die Strategie verwendet die 6-Stunden-MACD, um die Richtung des Gesamttrends zu bestimmen, und die 1-Stunden-MACD, um ein Umkehrsignal zu finden. Wenn die 6-Stunden-MACD in einem Aufwärtstrend ist, zeigt die 1-Stunden-Ebene, dass der Preis möglicherweise nach oben umkehren kann, wenn ein Tot-Fork-Signal unter der kurzen Linie durchbricht.

Der RVI-Indikator misst die Relation zwischen dem Schlusskurs und dem Eröffnungskurs der neuesten K-Linien und den Höchst- und Tiefpreisen. Wenn der RVI unter 0,2 liegt, wird er als überkauft angesehen. Wenn der CCI-Indikator unter 100 liegt, ist er überkauft. Die Strategie nutzt daher die beiden Bedingungen, den RVI-Indikator unter 0,2 und den CCI-Indikator unter -95, um ein Kaufbestätigungssignal zu unterstützen.

Analyse der Stärken

Die Strategie kombiniert MACD mit RVI und CCI, um die Umkehrmöglichkeiten genauer zu identifizieren und einige falsche Umkehrsignale zu filtern, wodurch die Stabilität der Strategie verbessert wird. Die spezifischen Vorteile sind:

  1. Verwenden Sie die 6-Stunden-MACD, um die Trends zu ermitteln und vermeiden Sie den Handel in einem Umfeld mit erhöhter Unsicherheit in den Großmärkten.

  2. Der 1-Stunden-MACD erkennt die Umkehrzeit und kann die Preisanpassung innerhalb kürzerer Perioden erfassen.

  3. Die Kombination von RVI- und CCI-Indikatoren ermöglicht eine genauere Bestimmung des Zeitpunkt der Umkehrung.

  4. Die Strategie beinhaltet Stop-Loss-Punkte, um die Verluste zu reduzieren.

Risikoanalyse

Die Strategie birgt einige Risiken, die sich in folgenden Punkten widerspiegeln:

  1. Die MACD-Indikatoren selbst sind anfällig für Falschsignale, so dass Verluste nicht vollständig vermieden werden können, auch wenn die Filterung der Hilfsindikatoren besser funktioniert. Es wird empfohlen, die Positionsgröße zu reduzieren.

  2. RVI- und CCI-Indikatoren können falsche Signale abgeben, wodurch bessere Umkehrmöglichkeiten verpasst oder unnötige Verluste erhöht werden. Es wird empfohlen, die RVI- und CCI-Parameter angemessen anzupassen.

  3. Die falsche Einstellung des Stop-Loss-Punktes kann zu intensiv sein, um den Stop-Loss auszulösen, oder zu locker, um den Verlust nicht rechtzeitig zu kontrollieren. Es wird empfohlen, die Stop-Loss-Spanne entsprechend der Schwankungen des Marktes anzupassen.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Derzeit werden zwei Zeitperioden von 1 und 6 Stunden verwendet, um mehr Kombinationen von Zeitperioden zu testen und nach stabileren Parametern zu suchen.

  2. Weitere Kennzahlen wie KDJ, WR, OBV und andere können eingeführt werden, um die Kauf- und Verkaufspunkte zu bestimmen. Es sollten jedoch zu komplizierte Handelssignale vermieden werden.

  3. Die Parameterbank kann je nach Sortenparameter optimiert werden. Sorten, die für den Mittel- und Niedrigfrequenzhandel geeignet sind, können die Parameterperiode entsprechend verlängern.

  4. Es ist möglich, einen dynamischen Stop-Loss-Mechanismus einzurichten, um den Stop-Loss-Punkt nach dem Gewinn schrittweise zu verschieben oder den Stop-Loss-Wert in Echtzeit an die Marktschwankungen anzupassen.

Zusammenfassen

Eine umgekehrte MACD-Trading-Strategie berücksichtigt Trendurteile und Umkehrsignale und filtert diese mit den RVI- und CCI-Indikatoren. Die Strategie kann effektiv Short-Line-Anpassungen identifizieren und bietet einen besseren Risiko-Rendite-Verhältnis für Intraday- und Short-Line-Trading. Sie kann auch als Teil einer Multi-Strategie-Palette verwendet werden und bietet eine Vielfalt der Gesamtstrategie.

Strategiequellcode
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Bat MACD", overlay=true)

fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
h=1.05

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hmacd= aMACD>0? h*aMACD: -(1/h)*abs(MACD) 

MACDD= (request.security(syminfo.tickerid,'360',ema(close, fastLength)) - request.security(syminfo.tickerid,'360',ema(close,slowlength)))
aMACDD = (request.security(syminfo.tickerid,'360',ema(ema(request.security(syminfo.tickerid,'360',close), fastLength)-ema(request.security(syminfo.tickerid,'360',close),slowlength), MACDLength)))
deltad= MACDD-aMACDD
L= input(0.95, title="SL")
SL = L*ema(close,10)

//MACD
slow = input(26,"Short period")
fast = input(12, "Long period")
signal = input(9, "Smoothing period")
//MACD = ema(close,fast)-ema(close,slow)
dMACD= MACD<0? ema(MACD,5):0
Mcond= rising(dMACD,1)
mcount=0.0
mcount := Mcond ? nz(mcount[1]) + 1 : nz(mcount[1])
counter=0
counter := (mcount-mcount[1]==0) ? nz(counter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
pp=0.0
mc=0.0
pp:= (counter-counter[1]<0)? close[1] : nz(pp[1])
mc:= (counter-counter[1]<0)? MACD[1] : nz(mc[1])

bull = (pp-pp[1]<-close*0.005 and mc-mc[1]>0.02*abs(MACD) and MACD<0 and MACD[1]<0)? 1:0

//bgcolor(bull?green:white)
//RVI
p=10
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
rvi=denom!=0?num/denom:0

//RVI
drvi= (rvi<0.2)? ema(rvi-0.20,3):0
RVcond= rising(drvi,1)
rvcount=0.0
rvcount := RVcond ? nz(rvcount[1]) + 1 : nz(rvcount[1])
rvcounter=0
rvcounter := (rvcount-rvcount[1]==0) ? nz(rvcounter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
rvpp=0.0
rvmc=0.0
rvpp:= (rvcounter-rvcounter[1]<0)? close[1] : nz(rvpp[1])
rvmc:= (rvcounter-rvcounter[1]<0)? drvi[1] : nz(rvmc[1])
rvbull = (rvpp-rvpp[1]<-close*0.005 and rvmc-rvmc[1]>0.02 and drvi<0 and drvi[1]<0)? 1:0

//VolCCI
length1 = input(10, minval=1)
xMAVolPrice = ema(volume * close, length1)
xMAVol = ema(volume, length1)
src1 = xMAVolPrice / xMAVol
map = sma(src1, length1)
cci = (src1 - map) / (0.015 * dev(src1, length1))
cfi= (cci<0)? ema(cci,3) :0
CCcond= rising(cfi,1)
cccount=0.0
cccount := CCcond ? nz(cccount[1]) + 1 : nz(cccount[1])
cccounter=0
cccounter := (cccount-cccount[1]==0) ? nz(cccounter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
ccpp=0.0
ccmc=0.0
ccpp:= (cccounter-cccounter[1]<0)? close[1] : nz(ccpp[1])
ccmc:= (cccounter-cccounter[1]<0)? cci[1] : nz(ccmc[1])
ccbull = (ccpp-ccpp[1]<-close*0.003 and ccmc-ccmc[1]>20 and cci<-95 and cci[1]<-95)? 1:0

A= bull+ccbull+rvbull
if ((MACD>hmacd)  and deltad>0 and delta>delta[1])
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
if (crossunder(delta, 0) or crossunder(close,SL))
    strategy.close("Long")
if(crossover(low,SL) and SL-SL[1]<close*0.005 and SL-SL[1]>-close*0.005)    
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
if A 
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
plot(SL)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)