
Die Superdynamik-Strategie kombiniert mehrere Dynamik-Indikatoren, um zu kaufen oder zu verkaufen, wenn mehrere Dynamik-Indikatoren gleichzeitig über- oder unterlegen sind. Durch die Kombination mehrerer Dynamik-Indikatoren kann die Strategie die Preisentwicklung genauer erfassen und falsche Signale verhindern, die durch einen einzelnen Indikator verursacht werden.
Die Strategie verwendet gleichzeitig 4 RMI-Indikatoren von Everget und einen Chande-Dynamik-Schwankungs-Indikator. Der RMI-Indikator basiert auf der Berechnung der Preisdynamik und kann die Höhe und die Höhe der Preise bestimmen. Chande MO berechnet die Preisänderungen, um zu beurteilen, ob der Markt überkauft oder überverkauft ist.
Der Kaufvorgang wird ausgeführt, wenn der RMI5 seine Kauflinie durchläuft, der RMI4 seine Kauflinie durchläuft, der RMI3 seine Kauflinie durchläuft, der RMI2 seine Kauflinie durchläuft, der RMI1 seine Kauflinie durchläuft und der Chande MO seine Kauflinie durchläuft.
Wenn RMI5 seine Verkaufslinie durchbricht, RMI4 seine Verkaufslinie durchbricht, RMI3 seine Verkaufslinie durchbricht, RMI2 seine Verkaufslinie durchbricht, RMI1 seine Verkaufslinie durchbricht und Chande MO seine Verkaufslinie durchbricht, wird die Verkaufsoperation durchgeführt.
Der RMI5 ist in die entgegengesetzte Richtung zu den anderen RMI-Indikatoren eingestellt, um Trends besser zu erkennen und Pyramiden zu betreiben.
Mehrfache Indikatoren können Trends besser bestimmen und Fehlsignale in einem einzigen Indikator vermeiden
Mehrzeitindikatoren, die Trends auf größerer Ebene erkennen
Reverse-RMI-Indikatoren helfen bei der Trenderkennung und bei der Pyramidenoperation
Chande MO hilft bei der Vermeidung von Fehltransaktionen bei Überkauf und Überverkauf
Zu viele Kombinationen von Kennzahlen, komplexe Parameter-Einstellungen, sorgfältiges Testen und Optimieren
Wenn mehrere Indikatoren gleichzeitig wechseln, kann es zu falschen Signalen kommen.
Die Handelsfrequenz könnte niedriger sein, wenn man mehrere Indikatoren zusammenfasst.
Es ist wichtig zu beachten, ob die Kennzahlen für verschiedene Sorten und Marktbedingungen geeignet sind.
Testen Sie die Einstellung der Kennzahlen und optimieren Sie die Parameter, um die Strategie zu stabilisieren
Versuchen Sie, einige Indikatoren zu erhöhen oder zu reduzieren, um die Auswirkungen auf die Signalqualität zu bewerten.
Filterbedingungen können eingeführt werden, um falsche Signale in bestimmten Marktbedingungen zu vermeiden
Anpassung der Position der Kauf- und Verkaufslinien des Indikators, um die optimale Kombination von Parametern zu finden
Erwägen Sie die Einbeziehung von Stop-Loss-Mechanismen zur Risikokontrolle
Diese Strategie verbessert die Fähigkeit, Markttrends zu beurteilen, indem sie mehrere dynamische Indikatoren kombiniert verwendet. Die Parameter sind jedoch komplex und müssen sorgfältig getestet und optimiert werden. Sie müssen ständig verbessert und angepasst werden.
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Super Momentum Strat", shorttitle="SMS", format=format.price, precision=2)
//* 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)
highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=input.bool, defval=true)
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)+50
plot(chandeMO, "Chande MO", color=color.blue)
obLevel = input(75, title="Chande Sellline")
osLevel = input(25, title="Chande Buyline")
hline(obLevel, color=#0bc4d9)
hline(osLevel, color=#0bc4d9)
///
///RMIS
//
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
//RMI1
length1 = input(title="RMI1 Length", type=input.integer, minval=1, defval=8)
momentumLength1 = input(title="RMI1 Momentum ", type=input.integer, minval=1, defval=3)
up1 = rma(max(change(src, momentumLength1), 0), length1)
down1 = rma(-min(change(src, momentumLength1), 0), length1)
rmi1 = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1))
obLevel1 = input(57, title="RMI1 Sellline")
osLevel1 = input(37, title="RMI1 Buyline")
rmiColor1 = rmi1 > obLevel1 ? #0ebb23 : rmi1 < osLevel1 ? #ff0000 : #ffe173
plot(rmi1, title="RMI 1", linewidth=2, color=rmiColor1, transp=0)
hline(obLevel1, color=#0b57d9)
hline(osLevel1, color=#0b57d9)
//RMI2
length2 = input(title="RMI2 Length", type=input.integer, minval=1, defval=12)
momentumLength2 = input(title="RMI2 Momentum ", type=input.integer, minval=1, defval=3)
up2 = rma(max(change(src, momentumLength1), 0), length2)
down2 = rma(-min(change(src, momentumLength1), 0), length2)
rmi2 = down2 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))
obLevel2 = input(72, title="RMI2 Sellline")
osLevel2 = input(37, title="RMI2 Buyline")
rmiColor2 = rmi1 > obLevel1 ? #0ebb23 : rmi2 < osLevel2 ? #ff0000 : #c9ad47
plot(rmi2, title="RMI 2", linewidth=2, color=rmiColor2, transp=0)
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)
//RMI3
length3 = input(title="RMI3 Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI3 Momentum ", type=input.integer, minval=1, defval=53)
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))
obLevel3 = input(46, title="RMI3 Sellline")
osLevel3 = input(24, title="RMI3 Buyline")
rmiColor3 = rmi3 > obLevel3 ? #0ebb23 : rmi3 < osLevel3 ? #ff0000 : #967d20
plot(rmi3, title="RMI 3", linewidth=2, color=rmiColor3, transp=0)
hline(obLevel3, color=#cf0bd9)
hline(osLevel3, color=#cf0bd9)
//RMI4
length4 = input(title="RMI4 Length", type=input.integer, minval=1, defval=520)
momentumLength4 = input(title="RMI4 Momentum ", type=input.integer, minval=1, defval=137)
up4 = rma(max(change(src, momentumLength4), 0), length4)
down4 = rma(-min(change(src, momentumLength4), 0), length4)
rmi4 = down4 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up4 / down4))
obLevel4 = input(0, title="RMI4 Sellline")
osLevel4 = input(100, title="RMI4 Buyline")
rmiColor4 = rmi4 > obLevel4 ? #0ebb23 : rmi4 < osLevel4 ? #ff0000 : #7a630b
plot(rmi4, title="RMI 4", linewidth=2, color=rmiColor4, transp=0)
hline(obLevel4, color=#bd1150)
hline(osLevel4, color=#bd1150)
//RMI5
length5 = input(title="RMI5 Length", type=input.integer, minval=1, defval=520)
momentumLength5 = input(title="RMI5 Momentum ", type=input.integer, minval=1, defval=137)
up5 = rma(max(change(src, momentumLength5), 0), length5)
down5 = rma(-min(change(src, momentumLength5), 0), length5)
rmi5 = down5 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up5 / down5))
buy5 = input(0, title="RMI5 Buy Above")
sell5 = input(47, title="RMI5 Sell Below")
rmiColor5 = rmi5 > buy5 ? #0ebb23 : rmi5 < sell5 ? #ff0000 : #7a630b
plot(rmi5, title="RMI 5", linewidth=2, color=rmiColor5, transp=0)
hline(buy5, color=#bd1150)
hline(sell5, color=#bd1150)
///
///END RMIS
//
//
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
hline(50, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
//alerts
longcondition1 = crossover(chandeMO, osLevel)
shortcondition1 = crossunder(chandeMO, obLevel)
longcondition2 = rmi5>buy5 and rmi4<osLevel4 and rmi3<osLevel3 and rmi2<osLevel2 and rmi1<osLevel1 and longcondition1
shortcondition2 = rmi5<sell5 and rmi4>obLevel4 and rmi3>obLevel3 and rmi2>obLevel2 and rmi1>obLevel1 and shortcondition1
if testPeriod()
if longcondition2
strategy.entry("Buy", strategy.long)
if shortcondition2
strategy.entry("Sell", strategy.short)