RSI-Durchschnittsumkehr Quantitative Handelsstrategie auf der Grundlage des RSI-Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-12-01 16:59:26
Tags:

img

Übersicht

Diese Strategie bestimmt Kauf- und Verkaufssignale auf der Grundlage der Kreuzung zwischen dem RSI-Indikator und seinem gleitenden Durchschnitt, die zu kurzfristigen Handelsstrategien gehören. Sie kauft, wenn der RSI niedriger als sein MA ist, und verkauft, wenn der RSI höher als sein MA ist, was eine typische Low-Buy-High-Sell-Strategie ist.

Strategieprinzip

  1. Berechnung des RSI-Indikators mit einer Periode von 40 Balken
  2. Berechnung des MA des RSI-Indikators mit einer Periode von 10 Bars
  3. Erstellen Sie ein Kaufsignal, wenn der RSI niedriger ist als sein MA multipliziert mit einem Koeffizienten (1-Handelsbereich%)
  4. Erstellen Sie ein Verkaufssignal, wenn der RSI höher ist als sein MA multipliziert mit einem Koeffizienten (1+Handelsbereich%)
  5. Standardhandelsabstand ist 5, d. h. 5% über oder unter dem MA, um Signale auszulösen
  6. Bestimmung des Ausstiegs, wenn der RSI über seinem MA und über dem Niveau 50 liegt

Analyse der Vorteile

Dies ist eine typische Mittelumkehrstrategie, die die Überkauf/Überverkaufseigenschaften des RSI-Indikators zur Bestimmung von Handelssignalen nutzt.

  1. Annahme eines RSI-Indikators zur Beurteilung der Marktstruktur, der sehr zuverlässig ist
  2. Der MA-Filter verhindert unnötige Transaktionen und erhöht die Stabilität
  3. Frequenz der Steuerung des verstellbaren Handelsbereichs
  4. Einfache Logik und leicht verständlich

Zusammenfassend ist es eine einfache und praktische kurzfristige Handelsstrategie.

Risikoanalyse

Es gibt einige Risiken, die zu beachten sind:

  1. Möglichkeit, dass RSI falsche Signale gibt, müssen das Muster beobachten
  2. Eine unsachgemäße Einstellung des Handelsbereichs kann zu Überhandelungen oder fehlenden Gelegenheiten führen
  3. Hohe Handelsfrequenz, müssen Transaktionskosten berücksichtigt werden
  4. Allein auf einen Indikator beruhend, anfällig für Marktstörungen

Diese Risiken können durch Parameter-Tuning, Filter hinzufügen usw. gemindert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Fügen Sie mehr Filter wie Lautstärke hinzu, um sicherzustellen, dass Signale nur an Wendepunkten
  2. Hinzufügen von Stop Loss zur Kontrolle von Einzelhandelsverlusten
  3. Optimierung der Handelsspanne, um Frequenz und Gewinnrate auszugleichen
  4. Maschinelles Lernen nutzen, um optimale Parametermengen zu finden
  5. Ergänzung von Ensemble-Modellen zur Integration von Ergebnissen aus Teilstrategien

Eine signifikante Leistungssteigerung kann durch Multi-Indikator-Combos, Stop-Loss-Management, Parameteroptimierung usw. erreicht werden.

Zusammenfassung

Zusammenfassend ist dies eine sehr typische und praktische kurzfristige Handelsstrategie. Sie profitiert von überkauften/überverkauften RSI-Leveln, um Ein- und Ausgänge zu bestimmen, mit zusätzlichem MA-Filter. Die Logik ist einfach und klar, die Parameter flexibel, einfach umzusetzen. Es gibt bestimmte Marktrisiken, die jedoch durch die Verfeinerung von Ein-/Ausgangmechanismen, Parameter-Tuning usw. angegangen werden können.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false)
 
frequency = input.int(10)
rsiFrequency = input.int(40)
buyZoneDistance = input.int(5)
avgDownATRSum = input.int(3)
useAbsoluteRSIBarrier = input.bool(true)
barrierLevel = 50//input.int(50)

momentumRSI = ta.rsi(close,rsiFrequency)
momentumRSI_slow = ta.sma(momentumRSI,frequency)
 
isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier))
isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))
momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))

isClose = momentumRSISoftClose

plot(momentumRSI,color=isClose ? color.red :  momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white)
plot(momentumRSI_slow,color=color.gray)
plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0))
plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray)

// plot(strategy.wintrades - strategy.losstrades)

 
 
if(isBuy)
    strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1))

// if(isShort)
//     strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1))

if(isClose)
    strategy.exit("Close",limit=close)





Mehr