
Dieser Artikel beschreibt hauptsächlich eine Strategie, die einen relativ starken Index (RSI) mit einem Fibonacci-Rückschlag kombiniert. Die Strategie berechnet zunächst einen wichtigen Fibonacci-Rückschlag basierend auf der historischen Preisentwicklung in einem bestimmten Zeitraum.
Die Strategie basiert auf folgenden Prinzipien:
Mit den Preisdaten eines bestimmten Zeitraums (z. B. 200 K-Linien) berechnen Sie den Mittelwert, die Standardabweichung und die kritischen Fibonacci-Rückschläge (z. B. 0,764) für diesen Zeitraum.
Wenn der Preis nahe an einem oberen oder unteren Wendepunkt ist, beurteilen Sie mit Hilfe des RSI, ob in diesem Wendepunkt überkauft oder überverkauft wird.
Wenn der RSI-Indikator ein Über- oder Überverkaufsignal zeigt, gibt er ein Über- oder Unter-Signal in der Nähe der Kehrtwende;
Es wird ein Stop-Loss- und Stop-Stop-Level gesetzt, um die Position zu beenden, wenn der gesetzte Preis überschritten wird oder die Stop-Loss-Bedingungen ausgelöst werden.
Das ist der grundlegende Prozess, mit dem die Strategie den Zeitpunkt des Handels bestimmen kann.
Die Kombinationsstrategie hat folgende Vorteile gegenüber dem Handel mit dem RSI oder Fibonacci:
Doppelte Filter, die falsche Signale reduzieren und die Signalqualität verbessern;
Die Umkehrung des Handels in der Nähe der Umkehrungsposition ist eine eher klassische Technik der Analyse.
Mit der Einrichtung einer Stop-Loss-Sperre kann der maximale Verlust eines einzelnen Handels effektiv kontrolliert werden.
Parameteroptimierung, Anpassung der Indikatorparameter und der Drehzahl-Einstellungen können für verschiedene Perioden und Sorten verwendet werden.
Die Strategie birgt auch einige Risiken, die zu beachten sind:
Die Wahrscheinlichkeit, dass ein Rückschlag nach der Annäherung an einen kritischen Wendepunkt eintritt, ist nicht 100%, was in Kombination mit der Einschätzung der Preisentität erforderlich ist.
Ein einzelner RSI-Zyklus kann ein falsches Signal für eine Sterbewiederholung erzeugen und kann mit einer Mehrzeitprüfung in Betracht gezogen werden.
Die Stop-Loss-Punkte sind zu locker eingestellt, was zu weiteren Verlusten führen kann.
Bei starken Preisschwankungen kann der Stop-Loss überschritten werden, und es ist erforderlich, den Stop-Loss-Punkt zu erleichtern.
Diese Risiken können durch Parameter-Anpassung, Optimierung der Kombination von Indikatoren und andere Methoden kontrolliert werden.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Erhöhung der Validierung von Transaktionsindikatoren, um falsche Durchbrüche mit geringen Mengen zu vermeiden;
Die Brin-Band-Indikatoren werden berücksichtigt, um bei Bandbrechungen zu signalisieren.
Erstellung von Modellen aus maschinellem Lernen oder Neural Networks, die automatisch hochwertige Handelsmöglichkeiten identifizieren;
Genetische Algorithmen und andere Methoden werden verwendet, um die Parameter automatisch zu optimieren und die Stop-Loss-Haltestelle anzupassen.
In diesem Artikel wird eine quantitative Handelsstrategie beschrieben, bei der der RSI und die Fibonacci-Rückkehr kombiniert werden. Diese Strategie kombiniert die Doppelindikatoranalyse mit der klassischen technischen Strategie, um die Qualität des Handelssignals zu verbessern, unter der Voraussetzung, dass das Risiko kontrolliert wird. Die Effektivität der Strategie kann durch Parameteranpassung und Modelloptimierung weiter verbessert werden.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Gab Fib + RSI", overlay=true, default_qty_type=strategy.cash, default_qty_value=100000, initial_capital=1000, currency=currency.USD, commission_type=strategy.commission.cash_per_order, commission_value=4)
// Inputs
timeFilter = year >= 2000
// Stop Loss
stop_loss = input(title="SL in % of Instrum. i.e 1.5%=150pips", minval=0, step=0.1, defval=1.5) /100
// RSI Inputs
len = input(title="[RSI] Length", minval=0, step=1, defval=14)
overSold = input(title="[RSI] Over Sold %", defval=30)
overBought = input(title="[RSI] Over Bought %", defval=70)
// Fibonacci Levels
length = input(title="[Fibonacci] Length", defval=200, minval=1)
src = input(hlc3, title="[Fibonacci] Source")
mult = input(title="[Fibonacci] Multiplier", defval=3.0, minval=0.001, maxval=50)
level = input(title="[Fibonacci] Level", defval=764)
// Calculate Fibonacci
basis = vwma(src, length)
dev = mult * stdev(src, length)
fu764= basis + (0.001*level*dev)
fu1= basis + (1*dev)
fd764= basis - (0.001*level*dev)
fd1= basis - (1*dev)
// Calculate RSI
vrsi = rsi(close, len)
// Calculate the Targets
targetUp = fd764
targetDown = fu764
// Actual Targets
bought = strategy.position_size[0] > strategy.position_size[1]
exit_long = valuewhen(bought, targetUp, 0)
sold = strategy.position_size[0] < strategy.position_size[1]
exit_short = valuewhen(sold, targetDown, 0)
// Calculate Stop Losses
sl_long = close * (1-stop_loss)
sl_short = close * (1+stop_loss)
// Conditions to Open Trades
openLong = low < fd1 and crossover(vrsi[1], overSold)
openShort = high > fu1 and crossunder(vrsi[1], overBought)
// Conditions to Close Trades
closeLong = high > exit_long or sl_long
closeShort = low < exit_short or sl_short
//Rounding to MinTick value
roundtargetUp = round_to_mintick(targetUp)
roundtargetDown = round_to_mintick(targetDown)
roundsllong = round_to_mintick(sl_long)
roundslshort = round_to_mintick(sl_short)
// Plots
plot(basis, color=color.blue, linewidth=2, title="[Fibonacci Level] Basis")
plot(fu764, color=color.white, linewidth=1, title="[Fibonacci Level] Short Target")
plot(fu1, color=color.red, linewidth=2, title="[Fibonacci Level] Top")
plot(fd764, color=color.white, linewidth=1, title="[Fibonacci Level] Long Target")
plot(fd1, color=color.green, linewidth=2, title="[Fibonacci Level] Bottom")
// Strategy Orders
if timeFilter
// Entry Orders
strategy.entry(id="buy", long=true, when=openLong and high < targetUp, limit=close, alert_message="buy,"+tostring(syminfo.ticker)+",tp="+tostring(roundtargetUp)+",sl="+tostring(roundsllong))
strategy.entry(id="sell", long=false, when=openShort and low > targetDown, limit=close, alert_message="sell,"+tostring(syminfo.ticker)+",tp="+tostring(roundtargetDown)+",sl="+tostring(roundslshort))
// Exit Orders
strategy.exit(id="closelong", when=closeLong and strategy.position_size > 0, limit=exit_long, stop=sl_long, alert_message="closelong,"+tostring(syminfo.ticker))
strategy.exit(id="closeshort", when=closeShort and strategy.position_size < 0, limit=exit_short, stop=sl_short, alert_message="closeshort,"+tostring(syminfo.ticker))