Multi-Time-Frame-Handelsstrategie basierend auf Preiskanälen und MACD


Erstellungsdatum: 2023-12-08 15:15:37 zuletzt geändert: 2023-12-08 15:15:37
Kopie: 0 Klicks: 616
1
konzentrieren Sie sich auf
1621
Anhänger

Multi-Time-Frame-Handelsstrategie basierend auf Preiskanälen und MACD

Überblick

Die Strategie kombiniert die Preiskanal-Indikatoren mit den MACD-Indikatoren, um Trends zu verfolgen und Überkauf-Überverkäufe in mehreren Zeitrahmen zu beurteilen, um Kauf- und Verkaufsentscheidungen zu treffen. Die Strategie kombiniert gleichzeitig eine Stop-Loss-Stop, um das Risiko zu verwalten.

Strategieprinzip

Der Preiskanal-Indikator basiert auf einer EMA-Gleichlinie zwischen dem höchsten und dem niedrigsten Preis und beurteilt die Trendentwicklung durch den Preisbruch; der MACD-Indikator beurteilt die Mehrwertsituation und bezeichnet den Markt über der Null-Achse als Mehrwertsteigerung und den Markt unterhalb als Leerwertsteigerung.

Die Handelssignale für diese Strategie stammen aus folgenden Aspekten:

  1. MACD-Histogramm umgedreht

  2. Wenn der Preis nahe an der Unterseite des Kanals liegt und der MACD unterhalb der Null-Achse ist, geben Sie eine leere Position ein

  3. Wenn der Preis nahe an der Spitze des Kanals liegt und der MACD über der Null-Achse liegt

  4. Die MACD ist auf der Null-Achse mehr als ein Enter und auf der Null-Achse weniger als ein Enter.

Das Exit-Signal stammt aus der Stop-Loss-Stopp-Einstellung.

Strategische Vorteile

  1. Mehrfache Kombinationsprüfung, um falsche Durchbrüche zu vermeiden

  2. Eine Kombination von Indikatoren in verschiedenen Zeitrahmen, um die Richtung der Trends zu bestimmen

  3. Einführung eines Stop-Loss-Stopp-Mechanismus, um Einzelschäden wirksam zu kontrollieren

Strategisches Risiko

  1. Parameteroptimierungsmöglichkeiten sind begrenzt und leicht zu optimieren

  2. Die Preiskanalparameter sind zu niedrig eingestellt, was zu großen Verlusten führt.

  3. Die Stop-Loss-Punkte sind zu klein, um größere Verluste zu erleiden.

Die Lösung:

  1. Die Walk-Forward-Methode verhindert überoptimierte Parameter

  2. Setzen Sie die Preiskanal-Parametern auf Anpassungs-Parametern

  3. Einführung von Volatilitätsstopps zur dynamischen Anpassung der Stop-Distanz

Richtung der Strategieoptimierung

  1. Optimierung der MACD-Parameterkombination

  2. Optimierte Preiskanalparameter werden selbständig berechnet

  3. Mehr Filterbedingungen, um die Effizienz von False Breaks zu erhöhen

Zusammenfassen

Die Strategie integriert die Vorteile der Preiskanal- und MACD-Indikatoren, bietet einen großen Spielraum für vernünftige Parameter-Einstellungen und -Optimierung, wirkt besser bei der Trendbeurteilung und Überkauf-Überverkauf-Beurteilung, der Stop-Loss-Mechanismus steuert das Risiko eines Einmalverlusts und ist eine stabilere Handelsstrategie. Im Anschluss können Verbesserungen in Bezug auf Parameteroptimierung, Filterbedingungen hinzugefügt und Stop-Loss-Mechanismen optimiert werden.

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

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.00, title="Stop Loss Point", type=float, step=1)
rr= input(defval=0.1,title="Reward/Risk",type=float)
useTPandSL = input(defval = false, title = "Use exit order strategy?")
Stop = SL
Take=SL*rr
Q = 100
if(useTPandSL)
    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)