Die Multi-Time-Frame-RSI-Even-Line-Cross-Strategie ist eine Trend-Tracking-Strategie für mehrere Zeiträume. Die Strategie verwendet die RSI-Indikatoren für mehrere Zeiträume gleichzeitig und verarbeitet die RSI für jeden Zeitrahmen mit einem gewichteten Moving Average, der zu zwei kombinierten Signalindikatoren führt. Wenn zwei Signalindikatoren bei Gold-Fork-Treffen mehr machen und bei Dead-Fork-Treffen leer machen, gehört sie zu den typischen Doppel-Even-Line-Cross-Strategie.
Die Strategie berechnet zunächst die RSI-Indikatoren für mehrere Zeiträume (z. B. 1 Minute, 5 Minuten, 15 Minuten usw.) und bearbeitet dann den RSI für jeden Zeitrahmen mit einem gewichteten Moving Average (VMA) mit einer Länge von 15, um den RSI-Mittelwert für die einzelnen Zeitrahmen zu erhalten.
Anschließend wird der RSI-Durchschnittswert aller Zeitrahmen gleichgewichtig zusammengeführt, um die beiden Signale, die schnelle und die langsame Linie, zu kombinieren. Die EMA der schnellen Linie beträgt 100 Zyklen, die der langsamen Linie beträgt 150 Zyklen.
Wenn die schnelle Linie die langsame Linie von unten nach oben durchbricht, wird ein Kaufsignal erzeugt. Wenn die schnelle Linie die langsame Linie von oben nach unten durchbricht, wird ein Verkaufsignal erzeugt. So kann das integrierte Kreuzsignal des RSI in mehreren Zeitrahmen den Trend effektiv verfolgen und gleichzeitig den kurzfristigen Marktrauschen filtern.
Mehrfache Zeitrahmen-Synthese, die Preiskurven ausgleichen kann, um falsche Durchbrüche effektiv zu filtern.
Der RSI-Indikator kann Überkauf und Überverkauf widerspiegeln und vermeidet die Verfolgung von Hochs und Tiefs.
Eine doppelte Linearisierung hat eine bessere Positionseffekt als eine einzelne Linearisierung.
Durch die Verwendung von VMA anstelle von SMA kann die Auswirkung von kurzfristigen Schwankungen auf die Mittellinie verringert werden.
Mehrzeit-Framework-Strategie, hohe Anforderungen an die Parameter-Anpassung, falsche Einstellungen können zu früh oder zu spät eingesetzt werden.
Das Gleichlinien-System funktioniert schlecht für die Kurvenanpassung und schlechter bei Trendwendepunkten.
Der RSI ist leicht abweichend und sollte auf Umkehrsignale achten.
Lösungen: Anpassung der Zeitrahmensparameter-Einstellungen; Kombination mit anderen Indikatoren, um Trends zu beurteilen, wie MACD und andere; Warnung, dass der RSI vom Signal abweicht.
Optimierung der Anzahl und Parameter-Einstellungen für die Zeitrahmen, um Trends besser zu erfassen.
Erwägen Sie die Einbeziehung von Stop-Loss-Mechanismen zur Risikokontrolle.
In Kombination mit anderen Indikatoren zur Beurteilung von Trends und Abweichungen zur Verbesserung der Entscheidungsqualität.
Verschiedene Positionszyklusparameter werden getestet, um die optimale Positionswirkung zu ermitteln.
Die Multi-Zeitrahmen-RSI-Gleichlinie-Kreuzstrategie ist eine typische Multi-Zeitrahmen-Trendverfolgungsstrategie, die die Preiskurve durch eine umfassende Beurteilung der RSI-Indikatoren über mehrere Zeitrahmen ausgleicht und Handelssignale erzeugt. Die Strategie hat den Vorteil, dass sie den Trend effektiv verfolgen und gleichzeitig den Lärm filtern kann, wobei jedoch auf Parameteroptimierung und Risikokontrolle geachtet werden muss. Durch weitere Optimierung kann die Strategie zu einem stärkeren Trendverfolgungssystem werden.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="RSI multitimeframe SMA crossover", shorttitle="RSI multitimeframe strategy", default_qty_type= strategy.percent_of_equity, margin_long=50, default_qty_value=150)
res1 = input(title="Res 01", type=input.resolution, defval="1")
res2 = input(title="Res 0", type=input.resolution, defval="5")
res3 = input(title="Res 1", type=input.resolution, defval="15")
res4 = input(title="Res 2", type=input.resolution, defval="15")
res5 = input(title="Res 3", type=input.resolution, defval="15")
res6 = input(title="Res 4", type=input.resolution, defval="30")
res7 = input(title="Res 5", type=input.resolution, defval="45")
res8 = input(title="Res 6", type=input.resolution, defval="60")
lengthRSI = input(15, minval=1)
lengthMA = input(15, minval=1)
lengthFMA = input(100, minval=1)
lengthFMA2 = input(150, minval=1)
Long_yes = input(defval=1, title="Long trades 0 or 1", minval=0, maxval=1)
Short_yes = input(defval=0, title="Short trades 0 or 1", minval=0, maxval=1)
src = close
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// stop loss
longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) *
0.01
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) *
0.01
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
rsi1 = rsi(src, lengthRSI)
MA1 = vwma(rsi1, lengthMA)
outD1 = security(syminfo.tickerid, res1, MA1)
outD2 = security(syminfo.tickerid, res2, MA1)
outD3 = security(syminfo.tickerid, res3, MA1)
outD4 = security(syminfo.tickerid, res4, MA1)
outD5 = security(syminfo.tickerid, res5, MA1)
outD6 = security(syminfo.tickerid, res6, MA1)
outD7 = security(syminfo.tickerid, res7, MA1)
outD8 = security(syminfo.tickerid, res8, MA1)
//plot_d0 = outD0
//plot_d1 = outD1
//plot_d2 = outD2
//plot_d3 = outD3
//plot_d4 = outD4
//plot_d5 = outD5
//plot_d6 = outD6
out_multi = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA)
out_multi2 = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA2)
//out_multi1 = outD2+outD3+outD4
//out_multi2 = outD4+outD5+outD6
//col0 = outD0 < 20 ? color.lime : outD0 > 80 ? color.red : color.blue
//col1 = outD1 < 20 ? color.lime : outD1 > 80 ? color.red : color.blue
//col2 = outD2 < 20 ? color.lime : outD2 > 80 ? color.red : color.blue
//col3 = outD3 < 20 ? color.lime : outD3 > 80 ? color.red : color.blue
//col4 = outD4 < 20 ? color.lime : outD4 > 80 ? color.red : color.blue
//col5 = outD5 < 20 ? color.lime : outD5 > 80 ? color.red : color.blue
//col6 = outD6 < 20 ? color.lime : outD6 > 80 ? color.red : color.blue
// plot(plot_d0,linewidth=2, color=col0)
// plot(plot_d1, linewidth=2, color=col1)
// plot(plot_d2,linewidth=2, color=col2)
// plot(plot_d3,linewidth=2, color=col3)
// plot(plot_d4,linewidth=2, color=col4)
// plot(plot_d5,linewidth=2, color=col5)
// plot(plot_d6,linewidth=2, color=col6)
long=(out_multi/8)
short=(out_multi2/8)
plot(long, linewidth=1, color=color.green)
plot(short, linewidth=1, color=color.red)
long1=crossover(long,short)
short1=crossunder(long,short)
h0 = hline(65, "Upper Band", color=color.red, linestyle=hline.style_solid, linewidth=2 )
h1 = hline(35, "Lower Band", color=color.green, linestyle=hline.style_solid, linewidth=2)
strategy.entry("buy", strategy.long, when=long1 and window() and Long_yes > 0)
if strategy.position_size > 0
strategy.exit(id="XL STP", stop=longStopPrice)
strategy.close("buy",when=short1 )
strategy.entry("sell", strategy.short, when=short1 and window() and Short_yes > 0)
if strategy.position_size < 0
strategy.exit(id="XS STP", stop=shortStopPrice)
strategy.close("buy",when=long1 )