Doppel gleitender Durchschnitt Supertrend Quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-05 12:05:10
Tags:

img

Übersicht

Diese Strategie kombiniert den doppelten gleitenden Durchschnitt und die Supertrend-Indikatoren, um Handelssignale zu konstruieren und die Trendrichtung durch verschiedene Zykluskombinationen zu beurteilen, um eine hohe Rentabilität zu erzielen.

Grundsätze

Diese Strategie verwendet die MACD- und Supertrend-Indikatoren, um den Markteintrittszeitpunkt zu bestimmen.

Wenn die schnelle Linie durch die langsame Linie nach oben bricht, ist es ein Kaufsignal. Wenn der mittelfristige bis langfristige Supertrend auch ein Aufwärtstrend ist, wird das endgültige Kaufsignal generiert, um lang zu gehen. Im Gegenteil, wenn die schnelle Linie durch die langsame Linie nach unten bricht, ist es ein Verkaufssignal. Wenn der mittelfristige bis langfristige Supertrend auch ein Abwärtstrend ist, wird das endgültige Verkaufssignal generiert, um kurz zu gehen.

Der Stop-Loss und der Take-Profit sind auf feste Werte festgelegt.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sowohl Doppel gleitende Durchschnitte als auch Supertrend zur Bestimmung der Marktrichtung verwendet werden, wobei mittelfristige, kurzfristige und mittelfristige Analysen kombiniert werden, um die Entscheidungswirksamkeit erheblich zu verbessern und falsche Ausbrüche zu vermeiden.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass feste Stop-Loss- und Take-Profit-Einstellungen größere Gewinnchancen verpassen können. Darüber hinaus funktioniert die Strategie nicht ordnungsgemäß, wenn zwischen mittelfristigen, kurzfristigen und mittelfristigen Urteilen Abweichungen bestehen. Wir können dieses Risiko durch schwebende Stop-Loss- und Take-Profit-Einstellungen reduzieren.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Erhöhung des dynamischen Anpassungsmechanismus für Stop-Loss und Take-Profit und Festlegung von Stop-Loss und Take-Profit entsprechend der Marktvolatilität und -Tendenzen.

  2. Optimieren Sie die MACD-Parameter, um gleitende Durchschnittsparameter für die Zielvariante zu finden.

  3. Optimierung der Supertrend-Parameter, um die Marktempfindlichkeit anzupassen.

  4. Erhöhung anderer Indikatoren für das Urteilsvermögen, um mehr Signaldimensionen zu liefern und die Strategieleistung zu verbessern.

Zusammenfassung

Diese Strategie kombiniert erfolgreich die Vorteile von doppelten gleitenden Durchschnitten und Supertrend-Indikatoren. Durch die Kombination verschiedener Zyklusurteile filtert sie falsche Signale aus und erzielt bessere Renditen in Trending-Märkten. Wir können die Stabilität und Rentabilität dieser Strategie durch Parameteroptimierung und Mechanismusanpassungen weiter verbessern.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)


Mehr