Die Ressourcen sind geladen. Beförderung...

Strategie zur Nachverfolgung der Preisunterschiede im RSI-Kanal

Schriftsteller:ChaoZhang, Datum: 2023-12-18 17:48:24
Tags:

img

Übersicht

Die RSI Channel Price Difference Tracking-Strategie erzeugt Handelssignale, indem sie Schwankungen der RSI-Indikatoren innerhalb von Schwellenkanälen in Kombination mit Preisdurchbrüchen verfolgt.

Strategie Logik

  1. Verwenden Sie Hull Moving Average, um den RSI zu glätten und glättete RSI-Indikatoren zu erzeugen, einschließlich RSI für den Schlusskurs, den höchsten Preis, den niedrigsten Preis und den Mittelwert.

  2. Wenn der RSI in den Kanal 55-45 eintritt, zeigt er an, in eine Schockzone zu gelangen.

  3. Wenn der Schlusskurs RSI von der oberen Grenze des Kanals zurückfällt und der Schlusskurs niedriger als der Medianpreis ist, zeigt dies an, dass der Preis unter Druck steht; zu diesem Zeitpunkt ist der Medianpreis RSI jedoch immer noch über der oberen Grenze des Kanals, was darauf hindeutet, dass der Medianpreis immer noch Kaufkraft hat, die der Logik der Verfolgung von Medianpreis-Breakouts entspricht. Daher wird ein Kaufsignal generiert.

  4. Bei Schlusskurs rückt der RSI von der unteren Grenze des Kanals zurück, und der Schlusskurs ist höher als der Medianpreis. Es zeigt an, dass der Preis Unterstützung hat; aber zu diesem Zeitpunkt fällt der Medianpreis RSI unter die unteren Grenze des Kanals, was darauf hindeutet, dass der Medianpreis einen größeren Druck hat, was der Logik der Verfolgung von Medianpreis-Breakouts entspricht. Daher wird ein Verkaufssignal generiert.

  5. Der höchste Preis-RSI und der niedrigste Preis-RSI-Indikator werden verwendet, um ungültige Handelssignale umgehend zu erkennen und schnelle Stop-Losses zu realisieren.

Vorteile der Strategie

  1. Die Verwendung von Medianpreis-Breakouts zur Verfolgung der starken Richtung des Medianpreises entspricht der Idee der Trendverfolgung.

  2. Wenn der RSI innerhalb des Schwellenkanals schwankt, deutet dies auf den Eintritt in eine Schockzone hin.

  3. Der höchste Preis-RSI und der niedrigste Preis-RSI-Indikator werden verwendet, um ungültige Handelssignale schnell zu identifizieren und schnelle Stop-Losses zu realisieren, die Verluste effektiv kontrollieren können.

Risiken der Strategie

  1. Eine falsche Einstellung der RSI-Parameter kann zu empfindlichen oder langsamen Reaktionen führen.

  2. Die Bedeutung der Medianpreisbreaks ist nicht immer zuverlässig, und auch der Medianpreis selbst kann schwanken.

  3. Hohe Volatilität auf den Krypto-Märkten, zu lockere Stop-Loss-Einstellungen können zu vergrößerten Verlusten führen.

Lösungen:

  • Optimierung der RSI-Parameter, um auf Preisänderungen angemessen zu reagieren
  • Kombination mehrerer Indikatoren zur Beurteilung der Zuverlässigkeit von Medianpreisbreakouts
  • Stärken Sie die Stop-Loss-Einstellungen angemessen, um große Verluste zu vermeiden

Richtungen für die Optimierung der Strategie

  1. Kombinieren Sie mehr Indikatoren, um die Breakoutrichtung des Medianpreises zu beurteilen

Einführung von Indikatoren wie Bollinger Bands, um zu beurteilen, ob der Medianpreis in der Nähe der oberen oder unteren Bands liegt, wodurch die Genauigkeit der Beurteilung der Ausbruchrichtung des Medianpreises verbessert wird.

  1. Einführung von Modellen des maschinellen Lernens zur Unterstützung des Urteils

Verwenden Sie LSTM und andere Deep-Learning-Modelle, um zukünftige Trends des Medianpreises vorherzusagen und zu bestimmen, ob der Medianpreis erfolgreich in eine bestimmte Richtung ausbrechen kann.

  1. Verwenden Sie adaptiven Stoppverlust

Dynamische Anpassung von Stop-Loss-Positionen basierend auf der Marktvolatilität, z. B. angemessene Verschärfung von Stop-Loss-Positionen, wenn die Volatilität steigt; angemessene Lockerung von Stop-Loss-Positionen, wenn die Volatilität abnimmt.

Zusammenfassung

Die RSI Channel Price Difference Tracking Strategie erzeugt Handelssignale, indem sie RSI-Schwankungen innerhalb von Kanälen kombiniert mit Preis-Breakouts verfolgt, mit dem Ziel, schnelle Kauf-/Verkaufsprünge in Krypto-Märkten zu erfassen. Die Strategie kombiniert effektiv Trend-Tracking und Range-Identifizierungsmethoden und kann immer noch gute Handelssignale erhalten, wenn sich die Preisunterschiede verkleinern. Der schnelle Stop-Loss-Mechanismus macht die Risiken der Strategie auch kontrollierbar. Der nächste Schritt besteht darin, die Zuverlässigkeit und Rentabilität der Strategie weiter zu verbessern, indem mehr Indikatorurteile und Machine-Learning-Prognosen kombiniert werden.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA of RSI Strategy",overlay=false)
//+++++++++++++++++++++++++++++++
//++++++++++++ Setup ++++++++++++
//+++++++++++++++++++++++++++++++
// RSI 
rsi1_tt="=== RSI ==="
rsi1_len=input(13,title="Period",inline="set",group=rsi1_tt)
//Mid
mid_tt="=== Mid Channel ==="
upper=input(55.0,title="Upper",inline="set",group=mid_tt)
lower=input(45.0,title="Lower",inline="set",group=mid_tt)
//Over
over_tt="=== Over ==="
ovb=input(70.0,title="Overbought",inline="set",group=over_tt)
ovs=input(30.0,title="Oversold",inline="set",group=over_tt)
//++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Hull MA of RSI ++++++++++++
//++++++++++++++++++++++++++++++++++++++++
hma_tt="=== Hull MA ==="
hma_len=input(3,title="Period",inline="set",group=hma_tt)
rsi_c=hma(rsi(close,rsi1_len),hma_len)
rsi_h=hma(rsi(high,rsi1_len),hma_len)
rsi_l=hma(rsi(low,rsi1_len),hma_len)
rsi_hl2=hma(rsi(hl2,rsi1_len),hma_len)
//++++++++++++++++++++++++++++++++
//++++++++++++ Signal ++++++++++++
//++++++++++++++++++++++++++++++++
var order_status="None"
BuySignal=
       crossunder(rsi_c,ovb)
       and
       close<hl2
       and
       rsi_hl2>ovb
       and
       order_status=="None"
CloseBuy=
       order_status[1]=="Long"
       and
       (crossover(rsi_c,ovb)
       or
       crossunder(rsi_l,upper))
SellSignal=
       crossover(rsi_c,ovs)
       and
       close>hl2
       and
       rsi_hl2<ovs
       and
       order_status=="None"
CloseSell=
       order_status[1]=="Short"
       and
       (crossunder(rsi_c,ovs)
       or
       crossover(rsi_h,lower))
ExitSignal=
       CloseBuy
       or
       CloseSell
if BuySignal
    order_status:="Long"
if SellSignal
    order_status:="Short"
if ExitSignal
    order_status:="None"

//+++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Line ++++++++++++
//+++++++++++++++++++++++++++++++++++
rsi_c_col=
       rsi_c>upper?color.new(color.blue,0):
       rsi_c<lower?color.new(color.blue,0):
       color.new(color.orange,0)
rsi_h_col=
       rsi_h>upper?color.new(color.green,0):
       rsi_h<lower?color.new(color.green,0):
       color.new(color.orange,0)
rsi_l_col=
       rsi_l>upper?color.new(color.yellow,0):
       rsi_l<lower?color.new(color.yellow,0):
       color.new(color.orange,0)
rsi_hl2_col=
       rsi_hl2>upper?color.new(color.olive,0):
       rsi_hl2<lower?color.new(color.olive,0):
       color.new(color.orange,0)
plot(rsi_c,title="RSI Close",color=rsi_c_col,linewidth=2)
plot(rsi_h,title="RSI High",color=rsi_h_col,linewidth=1)
plot(rsi_l,title="RSI Low",color=rsi_l_col,linewidth=1)
plot(rsi_hl2,title="RSI HL2",color=rsi_hl2_col,linewidth=1)
upper_line=hline(upper,title="Upper",color=color.new(color.black,100))
lower_line=hline(lower,title="Lower",color=color.new(color.black,100))
fill(upper_line,lower_line,title="Mid Channel",color=color.silver)
ovb_line=hline(ovb,title="Overbought",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)
ovs_line=hline(ovs,title="Oversold",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)

//++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Analyzing Signals ++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++
//Color
buy_col=
       BuySignal?color.new(color.blue,70):na
sell_col=
       SellSignal?color.new(color.red,70):na
close_buy_col=
       CloseBuy and order_status[1]=="Long"?color.new(color.yellow,70):na
close_sell_col=
       CloseSell and order_status[1]=="Short"?color.new(color.yellow,70):na
//Background
bgcolor(close_buy_col, title='Close Buy', offset=0)
bgcolor(close_sell_col, title='Close Sell', offset=0)
bgcolor(sell_col, title='Sell', offset=0)
bgcolor(buy_col, title='Buy', offset=0)
//++++++++++++++++++++++++++++++++++
//++++++++++++ Backtest ++++++++++++
//++++++++++++++++++++++++++++++++++
strategy.entry("Long",strategy.long,when=BuySignal)
strategy.close("Long",when=CloseBuy)
strategy.entry("Short",strategy.short,when=SellSignal)
strategy.close("Short",when=CloseSell)
//EOF

Mehr