Die Kernidee dieser Strategie ist es, die aktuellen Preiszonen durch die Kombination von RSI-Indikatoren aus verschiedenen Perioden zu beurteilen und bei einem Durchbruch des RSI aus den größeren Perioden entsprechende Kauf- oder Verkaufsaktionen in den kleineren Perioden durchzuführen. Die Strategie nutzt die Vorteile der verschiedenen periodischen technischen Indikatoren, um den relativen Wert des aktuellen Preises über mehrere Zeitdimensionen zu beurteilen und nach einem besseren Einstiegspunkt zu suchen.
Die Strategie basiert auf folgenden Schritten, um die Preisregionen zu ermitteln und nach Handelsmöglichkeiten zu suchen:
Zum Beispiel, wenn die Tageslinie RSI-Indikator einen neuen Höhenbruch auftritt, beurteilen wir, dass der Moment in der Mehrkopf-Betrieb, und wenn die Tageslinie RSI einen neuen Tiefbruch auftritt, beurteilen wir, dass der Moment in der Leerkopf-Betrieb, in beiden Fällen nehmen wir Kauf-und Verkaufshandlungen auf der 5-Minuten-Linie.
Im Gegensatz zu traditionellen Strategien, die sich nur auf einen Zeitrahmen konzentrieren, hat diese Strategie folgende Vorteile:
Die relative Wertigkeit der aktuellen Preise wird genauer bewertet. Größere Zyklusindikatoren wie die Tageslinie filtern die kurzfristigen Marktgeräusche aus und beurteilen die Trends der Großzyklen und die Wertbereiche.
In Kombination mit verschiedenen Zeitzyklus-Indikatoren erhöht die Reliabilität des Signals. Die Abhängigkeit von einem einzigen Zeitzyklus-Indikator ist anfällig für Fehlsignale, während mehrere Zeitzyklus-Indikatoren gleichzeitig ein Signal senden, was zuverlässiger ist.
Wir können kurzfristige Chancen effektiver nutzen. Große Durchbrüche wie die Sonnenlinie zeigen uns die Richtung, in der wir die Chancen in kurzen Zeiträumen wie 5 Minuten nutzen können.
Die Rücknahme ist kleiner. Die Kombination über die Zeiträume hindurch hilft uns, nicht eingeklemmt zu werden. Wenn sich der Big Cycle-Indikator umdreht, werden wir den Ausfall rechtzeitig stoppen.
Die Hauptrisiken dieser Strategie sind:
Große Periodische Indikatoren Fehlentscheidungen. Wenn Indikatoren wie die Tageslinie RSI nicht effektiv Wertbereiche zu bestimmen, kann das Signal zu Fehlern führen. Dies erfordert die Optimierung der RSI Parameter gesetzt.
Die kurzfristige Kursentwicklung ist nicht mit der langfristigen Kursentwicklung vereinbar. Manchmal widerspricht die kurzfristige Kursentwicklung der langfristigen Kursentwicklung, so dass ein Stop-Loss eingesetzt werden muss.
Unzureichende Vermögensverwaltung. Unzureichende Risikomanagement führt zu einem zu hohen Einmalverlust, der schwer zu erholen ist.
Es gibt noch viel Optimierungsmöglichkeiten für diese Strategie, und zwar in folgenden Bereichen:
Optimierung der Periodiparameter. Es können mehr Periodenkombinationen getestet werden, um die optimalen Parameter zu finden.
Optimierung der RSI-Parameter. Die Parameter des RSI können angepasst werden, um zu sehen, ob sie die Genauigkeit der Beurteilung verbessern können.
Hinzufügen von weiteren Kennzahlen. Weitere Kennzahlen können zur Kombination hinzugefügt werden, z. B. durch Hinzufügen von Durchschnittslinien, um die Richtung der Tendenz zu bestimmen.
Optimierung der Stop-Loss-Mechanismen. Die Stop-Loss-Punkte können dynamisch angepasst werden, je nachdem, wie die Rücknahme erfolgt.
Optimierung der Positionsverwaltung. Sie ermöglicht eine wissenschaftlichere und vernünftigere Verwaltung der einzelnen Positionen für jeden Handel.
Die Strategie nutzt die Bewertung der positiven RSI-Indikatoren über die Zeiträume hinweg, um einen Wert-Arbitrage zwischen den verschiedenen Zeitdimensionen zu erzielen. Dieses Konzept für die Überprüfung über die Zeiträume hinweg ist es wert, weiter ausgeschöpft zu werden. Wir können die Strategie durch Parameteroptimierung, Stop-Loss-Optimierung und Kombinationsoptimierung verbessern.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")
// Function to dectect a new bar
is_newbar(res) =>
t = time(res)
change(t) != 0 ? true : false
// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]
//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)
breakline=input(title="Breaks in lines", defval = true, type=bool)
so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))
final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so
final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc
barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
swing_detection(index)=>
swing_high = false
swing_low = false
start = (index*2) - 1 // -1 so we have an even number of
swing_point_high = final_otf_so[index]
swing_point_low = final_otf_sc[index]
//Swing Highs
for i = 0 to start
swing_high := true
if i < index
if final_otf_so[i] > swing_point_high
swing_high := false
break
// Have to do checks before pivot and after seperately because we can get
// two highs of the same value in a row. Notice the > and >= difference
if i > index
if final_otf_so[i] >= swing_point_high
swing_high := false
break
//Swing lows
for i = 0 to start
swing_low := true
if i < index
if final_otf_sc[i] < swing_point_low
swing_low := false
break
// Have to do checks before pivot and after seperately because we can get
// two lows of the same value in a row. Notice the > and >= difference
if i > index
if final_otf_sc[i] <= swing_point_low
swing_low := false
break
[swing_high, swing_low]
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
long = final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc
if swing_low and long
strategy.entry("My Long Entry Id", strategy.long)
if swing_high and short
strategy.entry("My Short Entry Id", strategy.short)