Die Strategie verwendet experimentell mehrere Kombinationen von Dynamikindikatoren wie den Chande-Dynamikindikator, den RMI-Indikator, den Triple HMA RSI, den Double EVW RSI und den Triple EMA RSI, um die Richtung des Trends zu bestimmen, wenn alle Indikatoren gleichzeitig signalisieren. Sie gehört zu den multifaktoralen Experimentalstrategien.
Berechnen Sie die Chande-Dynamik und legen Sie ihre Kauf- und Verkaufslinien fest.
Berechnen Sie den RMI, den Triple HMA RSI, den Double EVW RSI und den Triple EMA RSI.
Setzen Sie für jeden Indikator eine Kauf- und Verkaufslinie ein.
Wenn ein Chande-Dynamik-Indikator aufwärts über die Kauflinie kommt, überprüft, ob andere Indikatoren auch unter der jeweiligen Kauflinie liegen. Wenn alle Indikatoren gleichzeitig die Bedingungen erfüllen, wird ein Kaufsignal erzeugt.
Im Gegensatz dazu erzeugt ein Verkaufssignal, wenn die Chande-Dynamik unter der Verkaufslinie liegt und die anderen Indikatoren gleichzeitig ihre Verkaufslinien überschreiten.
Es gibt mehrere Kombinationen von Indikatoren, die sich gegenseitig verifizieren können, um Fehleinschätzungen zu vermeiden.
Der Chande-Dynamik-Indikator ist empfindlich auf Trendänderungen und kann Umschläge effektiv erfassen.
Der RMI-Indikator zeigt den Dynamik-Level an, um zu überkaufen oder zu verkaufen.
Der HMA RSI, der EVW RSI und andere Indikatoren werden mit unterschiedlichen RSI-Berechnungsmethoden getestet.
Die Kombination von mehreren Indikatoren ermöglicht eine flexible Testmethode.
Die Mehrindikator-Kombination ist schwieriger zu erfüllen, gibt weniger Signale und kann Chancen verpassen.
Es gibt keine Risikokontrollen wie Stop Loss.
Der Effekt des Indikators ist zeitlich abhängig und kann für verschiedene Perioden unempfindlich sein.
Ohne Parameteroptimierung können die Parameter des Indikators falsch eingestellt werden.
Die Rückmeldedaten sind nicht ausreichend, um die Strategie vollständig zu überprüfen.
Entsprechende Lösungen:
Der Wert der Indizes soll entsprechend gesenkt werden, um mehr Handelsmöglichkeiten zu bieten.
Ein solcher Verlust wird durch die Aufnahme von mobilen oder harten Stop-Losses kontrolliert.
Versuche in verschiedenen Zyklen und Sorten, um die optimalen Parameter zu finden.
Die Parameteroptimierung erfolgt über Methoden wie Maschinelles Lernen oder Gittersuche.
Die Strategie soll in weiteren Märkten überprüft werden, um ihre Solidität zu gewährleisten.
Tests mit verschiedenen Parameter-Einstellungen finden die optimale Konfiguration.
Die Anpassung an mehrere Zeitskala-Dynamik-Indikatoren.
Einführung von Trenddetektionen und Vermeidung von Gegenhandel.
Mit Hilfe von maschinellem Lernen verbessert sich die Gewichtung von mehreren Indikatoren.
Die Einheitliche Linie wurde mit der Zeit des Eintritts in den Platz kombiniert.
Die Strategie versucht, einen zuverlässigeren Trendwendepunkt zu finden, indem sie mehrere dynamische Indikatoren kombiniert. Diese vielfältige Strategie hat eine starke Skalierbarkeit und Optimierungsmöglichkeiten, die aus Parameterwahl, Indikatorgewicht und Risikokontrolle bestehen. So können mehr Handelsmöglichkeiten gewonnen werden, die der Systemlogik entsprechen, unter der Voraussetzung, dass die Signalqualität gewährleistet ist.
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © burgercrisis
//@version=4
strategy("RMI + Triple HMRSI + Double EVWRSI + TERSI Strategy")
//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
src = input(close, "Price", type = input.source)
CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length")
//CMO
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, CMOlength)
sm2 = sum(m2, CMOlength)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
//RMI
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
length3 = input(title="RMI Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI Momentum ", type=input.integer, minval=1, defval=25)
up3 = rma(max(change(src, momentumLength3), 0), length3)
down3 = rma(-min(change(src, momentumLength3), 0), length3)
rmi3 = (down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3)))-50
//
//
// end RMI, end Alex Orekhov copywrite
//
//
lengthMA = input(7)
lengthRSI = input(14)
thrsi = hma(hma(hma(rsi(src, lengthRSI), lengthMA), lengthMA), lengthMA)
thrsi1 = (thrsi-50)*10
lengthMA2 = input(7)
lengthRSI2 = input(14)
devwrsi = ((ema(ema(vwma(rsi(src, lengthRSI2), lengthMA2), lengthMA2), lengthMA2))-50)*5
lengthMA3 = input(7)
lengthRSI3 = input(14)
tersi = ((ema(ema(ema(rsi(src, lengthRSI3), lengthMA3), lengthMA3), lengthMA3))-50)*10
rmirsi = ((thrsi*rmi3/25))
//Boundary Lines
obLevel1 = input(0, title="Chande Sellline")
osLevel1 = input(0, title="Chande Buyline")
hline(obLevel1, color=#0bc4d9)
hline(osLevel1, color=#0bc4d9)
obLevel2 = input(0, title="Triple HMRSI Sellline")
osLevel2 = input(0, title="Triple HMRSI Buyline")
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)
obLevel3 = input(0, title="DEVWRSI Sellline")
osLevel3 = input(0, title="DEVWRSI Buyline")
hline(obLevel3, color=#5a0bd9)
hline(osLevel3, color=#5a0bd9)
obLevel4 = input(0, title="TERSI Sellline")
osLevel4 = input(0, title="TERSI Buyline")
hline(obLevel4, color=#5a0bd9)
hline(osLevel4, color=#5a0bd9)
obLevel5 = input(0, title="RMI Sellline")
osLevel5 = input(0, title="RMI Buyline")
hline(obLevel5, color=#5a0bd9)
hline(osLevel5, color=#5a0bd9)
obLevel6 = input(0, title="RMI*RSI Sellline")
osLevel6 = input(0, title="RMI*RSI Buyline")
hline(obLevel6, color=#5a0bd9)
hline(osLevel6, color=#5a0bd9)
plot((thrsi1), title="THRSI")
plot(devwrsi, color=color.red, title="DEVWRSI")
plot(tersi, color=color.yellow, title="TERSI")
plot(rmirsi, color=color.purple, title="RMI*HMRSI")
plot(rmi3, color=color.orange, title="RMI")
longcondition1 = crossover(chandeMO, osLevel1)
shortcondition1 = crossunder(chandeMO, obLevel1)
longcondition2 = rmirsi<osLevel6 and rmi3<osLevel5 and tersi<osLevel4 and devwrsi<osLevel3 and thrsi1<osLevel2 and longcondition1
shortcondition2 = rmirsi>obLevel6 and rmi3>obLevel5 and tersi>obLevel4 and devwrsi>obLevel3 and thrsi1>obLevel2 and shortcondition1
if testPeriod()
if longcondition2
strategy.entry("Buy", strategy.long)
if shortcondition2
strategy.entry("Sell", strategy.short)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")