Risikokontroll-Compound-Trading-Strategie basierend auf schnellem RSI


Erstellungsdatum: 2023-11-13 11:36:34 zuletzt geändert: 2023-11-13 11:36:34
Kopie: 3 Klicks: 646
1
konzentrieren Sie sich auf
1617
Anhänger

Risikokontroll-Compound-Trading-Strategie basierend auf schnellem RSI

Überblick

Die Strategie wurde für die Live-Trading-Plattform BitMEX entwickelt, um Trends zu verfolgen, um effiziente Transaktionen durch die Analyse von Rapid RSI-Indikatoren und die Filterung von Signalen in Kombination mit mehreren technischen Indikatoren zu erzielen. Die Strategie bietet gleichzeitig eine Geldverwaltung und einen Stop-Loss-Mechanismus, um das Handelsrisiko effektiv zu kontrollieren.

Strategieprinzip

  1. Berechnen Sie den RSI mit den Parametern 7-Tage-Linie, Überkauf-Linie 25 und Überverkauf-Linie 75. Überkaufsignal beim Überkauf der Überkauf-Linie oberhalb des RSI; Überverkaufsignal beim Überverkauf der Überverkauf-Linie unterhalb des RSI.

  2. Filter für K-Linien-Einheiten. Die Festplatte muss eine Schattenlinie haben, die nicht weniger als 20% der Gestern-Durchschnittslänge beträgt.

  3. Die K-Linien-Farbeinstellungen werden gefiltert. Die letzten vier K-Linien werden als Negativ- und die letzten vier K-Linien als Positiv-Linien ausgewählt.

  4. Setzen Sie eine Stop-Loss-Logik. Wenn der Preis in eine unvorteilhafte Richtung bewegt, wird der Stop-Loss ausgeglichen.

  5. Setzen Sie einen Rückschlagschutz. Wenn der Preis in die günstige Richtung bewegt und die Stop-Line erreicht, geben Sie erneut ein Signal, um zu lagern.

  6. Setup-Finanzmanagement. Einfache Positionserhöhung mit einem Prozentsatz des festen Kapitals, mit einem Verlust von einer verdoppelten Position.

Analyse der Stärken

  1. Der schnelle RSI-Parameter ist vernünftig eingestellt, um den Trend schnell zu erfassen. Die Kombination von K-Linien-Einheiten und Farbentscheidung filtert effektiv falsche Durchbrüche.

  2. Die Mehrfachfilterung der Signale reduziert die Anzahl der Transaktionen und erhöht die Gewinnrate.

  3. Die Strategie hat eine eingebaute Stop-Loss-Mechanismus, der die Einzelschäden wirksam kontrolliert.

  4. Die Annahme einer dynamischen Positionsanpassung, um eine moderat-radikale Vermögensverwaltung zu erreichen.

  5. Die Anpassung der Handelszeiträume verhindert die Erschütterung durch wichtige Ereignisse.

Risiko und Optimierung

  1. Zu schnelle Geschwindigkeit kann zu einem Verlust von Handelsmöglichkeiten führen.

  2. Es ist unmöglich, die Endzeit des Trends zu beurteilen. Eine mögliche Umkehrung kann in Kombination mit anderen Indikatoren berücksichtigt werden.

  3. Die Positionsanpassung ist zu radikal, um die Lock-in-Methode einzuführen.

  4. Die Parameter können an die jeweiligen Märkte angepasst werden, um eine optimale Kombination von Parametern zu erreichen.

Zusammenfassen

Die Strategie ist insgesamt relativ robust und kann durch eine schnelle RSI-Bestimmung der Trendrichtung und die Kombination von mehreren technischen Indikatoren Filtersignale in den Trends zu erhalten. Die Strategie hat auch eine gewisse Optimierungsraum, durch die Anpassung der Kombination von Parametern, kann an verschiedene Marktumgebungen angepasst werden, hat eine starke Praxis.

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

//Noro
//2018

//@version=2
strategy(title = "Robot BitMEX Fast RSI v1.0", shorttitle = "Robot BitMEX Fast RSI v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(true, defval = true, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(25, defval = 25, minval = 1, maxval = 30, title = "RSI limit")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
useocf = input(true, defval = true, title = "Use Open Color Filter")
useccf = input(true, defval = true, title = "Use Close Color Filter")
openbars = input(4, defval = 4, minval = 1, maxval = 20, title = "Open Color Bars")
closebars = input(1, defval = 1, minval = 1, maxval = 20, title = "Close Color Bars")
useobf = input(true, defval = true, title = "Use Open Body Filter")
usecbf = input(true, defval = true, title = "Use Close Body Filter")
openbody = input(20, defval = 20, minval = 0, maxval = 1000, title = "Open Body Minimum, %")
closebody = input(50, defval = 50, minval = 0, maxval = 1000, title = "Close Body Minimum, %")
usecnf = input(true, defval = true, title = "Use Close Norma Filter")
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
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))
uplimit = 100 - rsilimit
dnlimit = rsilimit
rsidn = rsi < dnlimit ? 1 : 0
rsiup = rsi > uplimit ? 1 : 0
rsidnok = sma(rsidn, rsibars) == 1
rsiupok = sma(rsiup, rsibars) == 1

//Body Filter
body = abs(close - open)
abody = sma(body, 10)
openbodyok = body >= abody / 100 * openbody or useobf == false
closebodyok = body >= abody / 100 * closebody or usecbf == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 ? 1 : 0
rbar = bar == -1 ? 1 : 0
opengbarok = sma(gbar, openbars) == 1 or useocf == false
openrbarok = sma(rbar, openbars) == 1 or useocf == false
closebarok = (strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1) or useccf == false

//Norma Filter
norma = (rsi > dnlimit and rsi < uplimit) or usecnf == false

//Signals
up = openrbarok and rsidnok and openbodyok and (strategy.position_size == 0 or close < strategy.position_avg_price)
dn = opengbarok and rsiupok and openbodyok and (strategy.position_size == 0 or close > strategy.position_avg_price)
exit = ((strategy.position_size > 0 and closebarok and norma) or (strategy.position_size < 0 and closebarok and norma)) and closebodyok

//Indicator
plot(rsi, color = blue, linewidth = 3, title = "Double RSI")
plot(uplimit, color = black, title = "Upper Line")
plot(dnlimit, color = black, title = "Lower Line")
colbg = rsi > uplimit ? red : rsi < dnlimit ? lime : na
bgcolor(colbg, transp = 20)

//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 up
    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 dn
    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()