Handelsstrategie zur Verfolgung verpasster Signale basierend auf dem umgekehrten RSI


Erstellungsdatum: 2023-09-28 10:54:24 zuletzt geändert: 2023-09-28 10:54:24
Kopie: 1 Klicks: 693
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Diese Strategie ermöglicht einen Umkehrhandel, indem sie ein Überkauf-Überverkauf-Signal verfolgt, das der RSI-Indikator verpasst hat. Wenn der RSI-Indikator aus dem Überkauf-Bereich zurückfällt, erzeugt er ein Tracking-Multi-Signal, und wenn er aus dem Überverkauf-Bereich zurückprallt, erzeugt er ein Tracking-Blocking-Signal, um eine Umkehrmöglichkeit zu erfassen.

Strategieprinzip

Signal bestimmt

Der RSI-Indikator wird verwendet, um zu überkaufen und zu verkaufen. Wenn der RSI die überkaufte Linie überschreitet, ist dies ein Überkaufsignal. Wenn er die überverkaufte Linie überschreitet, ist dies ein Überverkaufsignal.

overbought = rsi > uplimit 
oversold = rsi < dnlimit

Wenn ein vorheriger K-Line RSI-Indikator überkauft ist, wird der aktuelle K-Line RSI-Indikator aus dem Überkauf aussteigen und ein Tracking-Multi-Signal erzeugenup1Wenn ein vorheriger K-Line-RSI-Indikator überverkauft ist, wird der aktuelle K-Line-RSI-Indikator aus dem Überverkauf aussteigen und ein Tracking-Lose-Signal erzeugendn1

up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false 

Entlassung der Verurteilung

Ein Ausstiegssignal wird erzeugt, wenn die Richtung der Positionshaltung mit der der K-Line-Einheit übereinstimmt und die Einheit die Hälfte ihres 10-Zyklus-Durchschnitts überschreitet.

exit = (((strategy.position_size > 0 and bar == 1) or 
         (strategy.position_size < 0 and bar == -1)) and 
        body > abody / 2)

Strategische Vorteile

  1. Die RSI-Indikatoren sind in der Lage, die fehlenden Umkehrsignale zu verfolgen, um die Schwierigkeiten zu vermeiden, die Überkauf- und Überverkaufspunkte rechtzeitig zu erfassen.

  2. Der RSI nutzt seine Umkehr-Eigenschaften, um Umkehr-Chancen zu erfassen.

  3. Aussteigen kann in Kombination mit der Richtung und Größe der K-Linien-Einheit vermieden werden.

Risiken und Lösungen

  1. Risiko für falsche Signale im RSI

    • Die Lösung: Bestätigung in Verbindung mit anderen Indikatoren, um Missverständnisse zu vermeiden.
  2. Wenn Sie die Signale verfolgen, könnte es bereits zu einer Rückführung kommen, und es besteht ein hohes Verlustrisiko.

    • Die Lösung: Eintrittspositionen reduzieren oder Eintrittszeiten optimieren.
  3. Ein Teil des Aufschwungs ist nicht rentabel und birgt die Gefahr eines Ausstiegssignals.

    • Die Lösung: Optimierung der Logik der Ausstiegsentscheidung und Verbesserung der Gewinnchancen der Positionen.

Optimierung

  1. Optimierungsparameter, wie Überkauf-Überverkauf-Linien, Rückblick-Zyklen usw., werden für verschiedene Märkte eingestellt.

  2. Anpassung der Positionsverwaltung, z. B. Positionssenkung bei der Nachverfolgung von Signalen.

  3. Optimierung der Eintrittszeit, zusätzliche Einschränkungen auf der Grundlage von Signalverfolgung.

  4. Optimierung der Ausstiegsmethoden, um die Gewinnwahrscheinlichkeit zu erhöhen, z. B. durch die Einführung einer mobilen Stop-Off.

  5. Optimierung von Stop-Loss-Methoden zur Verringerung des Verlustrisikos, wie die Einführung von mobile Stop-Losses, Schenkel-Stop-Losses usw.

Zusammenfassen

Diese Strategie basiert auf dem RSI-Indikator und ermöglicht die Verfolgung von Umkehr-Trading. Die Strategie hat die Vorteile der Verfolgung von Umkehr-Signalen, aber es besteht auch ein gewisses Risiko von Falschsignalen und Verlustrisiken. Durch kontinuierliche Optimierung kann die Stabilität und Ertragsrate der Strategie weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Anti RSI Strategy v1.0", shorttitle = "Anti RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
rsiperiod1 = input(14, defval = 14, minval = 2, maxval = 50, title = "RSI Period")
rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI
uprsi1 = rma(max(change(close), 0), rsiperiod1)
dnrsi1 = rma(-min(change(close), 0), rsiperiod1)
rsi = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1))
uplimit = 100 - rsilimit1
dnlimit = rsilimit1

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overbought = rsi > uplimit
oversold = rsi < dnlimit

up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false
up2 = bar == -1 and strategy.position_size > 0 and overbought == false
dn2 = bar == 1 and strategy.position_size < 0 and oversold == false

norma = overbought == false and oversold == false
exit = (((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2)

//Arrows
col = exit ? black : up1 or dn1 or up2 or dn2 ? blue : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()