Diese Strategie beurteilt den Kurstrend, indem sie das Kreuz von doppelten gleitenden Durchschnitten berechnet und Kauf- und Verkaufssignale mit bestimmten Parameterbeschränkungen ausgibt.
Der Kern dieser Strategie liegt in der Berechnung von schnellen und langsamen gleitenden Durchschnitten. Der schnelle gleitende Durchschnitt hat eine Periode von der Hälfte der gesamten gleitenden Durchschnittsperiode, die empfindlicher auf Kursänderungen reagiert; der langsame gleitende Durchschnitt hat eine Periode der gesamten gleitenden Durchschnittsperiode, die die Preisänderungen reibungsloser widerspiegelt. Wenn der schnelle gleitende Durchschnitt über den langsamen geht, wird angenommen, dass der Preis steigt; wenn er darunter fällt, fällt er.
Darüber hinaus legt die Strategie bestimmte Parameter fest, um falsche Trades zu vermeiden. Zum Beispiel soll die Entscheidungsschwelle sicherstellen, dass Signale nur ausgegeben werden, wenn die Differenz zwischen den beiden gleitenden Durchschnitten ein bestimmtes Niveau überschreitet; der Vertrauensparameter wird verwendet, um kleine Kursschwankungen auszufiltern.
Schließlich werden Stop-Profit und Stop-Loss verwendet, um Risiken zu kontrollieren. Wenn Openprofit kleiner als Stop-Loss-Punkt oder größer als Stop-Profit-Punkt ist, werden Positionen geschlossen. Dies begrenzt effektiv den Verlust eines einzelnen Handels.
Der größte Vorteil dieser Strategie besteht darin, das Urteil über Preistrends und Volatilitätsmerkmale durch gleitende Durchschnittsindikatoren zu kombinieren. Das Kreuzung von doppelten gleitenden Durchschnitten ist ein klassischer effektiver technischer Ansatz zur Bestimmung von Preistrends. Mit Parameteroptimierung kann es Trends genau erfassen. Der Vertrauensparameter kann störende Märkte effektiv filtern und häufige falsche Trades vermeiden.
Darüber hinaus können Parameter wie Entscheidungsschwelle, Stop-Profit und Stop-Loss auch die Handelsrisiken erheblich reduzieren, indem höchste und niedrigste Preise vermieden werden.
Das Hauptrisiko dieser Strategie ist die Möglichkeit falscher Signale aus den doppelten gleitenden Durchschnitten. Sowohl schnelle als auch langsame MAs sind gewichtete gleitende Durchschnitte, die langsam auf plötzliche Ereignisse reagieren und somit kurzfristige Kursumkehrungen verpassen. Zu diesem Zeitpunkt kann der Vertrauensparameter eine doppelte Bestätigung liefern.
Darüber hinaus erhöhen auch unsachgemäße Einstellungen von Stop-Profit- und Stop-Loss-Punkten die Risiken. Zu hohes Gewinnziel und niedriger Stop-Loss-Punkt können zu Verlusten führen, die über die Erwartungen hinausgehen. Es müssen angemessene Parameter entsprechend den Eigenschaften der verschiedenen Handelsprodukte und der Volatilität festgelegt werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Optimierung der gleitenden Durchschnittsperioden, Anpassung an die Preisschwankungen verschiedener Zyklen;
Einrichtung dynamischer Nachverfolgungsmechanismen für Stop-Profit und Stop-Loss, Berechnung der Volatilität in Echtzeit basierend auf den Marktbedingungen, so dass sich die Stopppunkte dynamisch ändern können;
Maschinelle Lernmodelle verbessern, um die Kursentwicklung zu beurteilen, historische Daten nutzen, um aktuelle Kursbewegungen zu bestimmen und falsche Signale zu reduzieren.
Im Allgemeinen ist dies eine klassische einfache und effektive Trend-Handelsstrategie. Es verwendet ein doppeltes gleitendes Durchschnittskreuz, um Trends zu bestimmen, setzt Parameter zur Kontrolle von Risiken und hat eine hohe Konfigurationsfähigkeit für den Multi-Produkt-Handel. Wenn intelligentere Urteilsmittel wie maschinelles Lernen eingeführt werden können, könnte der Gesamteffekt für weitere Forschung noch besser sein.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend strategy("Trade Signal", shorttitle="Trade Alert", overlay=true ) keh=input(title="Double HullMA",defval=14, minval=1) dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001) SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=100.00, title="Target Point in $", type=float, step=1) ot=1 n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(close[1],round(keh/2)) nma1=wma(close[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) b=n1>n2?lime:red c=n1>n2?green:red d=n1>n2?red:green confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1]) conversionPeriods = input(9, minval=1, title="Conversion Line Periods") basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods") displacement = input(26, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) LS=close, offset = -displacement MACD_Length = input(9) MACD_fastLength = input(12) MACD_slowLength = input(26) MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) aMACD = ema(MACD, MACD_Length) closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD if (shortCondition) strategy.entry("Short",strategy.short) //alerts alertcondition(closelong, title='Close Buy Position', message='Close Buy Position') alertcondition(closeshort, title='Close Short Position', message='Close Short Position') alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert') alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert') //a1=plot(n1,color=c) //a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4) //plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4) plot(conversionLine, color=#0496ff, title="Conversion Line") plot(baseLine, color=#991515, title="Base Line") plot(close, offset = -displacement, color=#459915, title="Lagging Span") p1=plot (leadLine1, offset = displacement, color=green, title="Lead 1") p2=plot (leadLine2, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) // remove the "//" from before the plot script if want to see the indicators on chart