Die Summe der ausfallenden Risikopositionen wird in den folgenden Zahlen angegeben:

Schriftsteller:ChaoZhang, Datum: 2023-10-27 11:20:50
Tags:

img

Übersicht

Diese Strategie nutzt den kumulativen RSI-Indikator, um Trends zu identifizieren und Kauf- und Verkaufsentscheidungen zu treffen, wenn der kumulative RSI-Wert die wichtigsten Schwellenwerte durchbricht.

Strategie Logik

Die Strategie basiert hauptsächlich auf dem kumulativen RSI-Indikator für Handelsentscheidungen. Der kumulative RSI-Indikator ist die Akkumulation von RSI-Werten. Durch die Einstellung des Cumlen-Parameters werden die RSI-Werte der letzten Cumlen-Tage addiert, um den kumulativen RSI-Indikator abzuleiten. Dieser Indikator kann kurzfristiges Marktlärm filtern.

Wenn der kumulative RSI-Indikator über die oberen Bollinger-Band-Schienen geht, wird eine Long-Position eröffnet. Wenn der kumulative RSI unter die unteren Bollinger-Band-Schienen geht, wird die offene Position geschlossen. Die Bollinger-Band-Schienen werden dynamisch berechnet, basierend auf historischen Daten über viele Jahre.

Darüber hinaus wird eine Trendfilteroption hinzugefügt. Long Trades werden nur geöffnet, wenn der Preis über dem 100-tägigen gleitenden Durchschnitt liegt, was bedeutet, dass er sich in einem Aufwärtstrendkanal befindet. Dieser Filter vermeidet fehlerhafte Trades während Marktschwankungen.

Vorteile

  • Wirksam Filtern von Lärm und Erfassen von mittelfristigen bis langfristigen Trends mithilfe des kumulativen RSI
  • Vermeiden Sie unzumutbare Trades mit dem Trendfilter
  • Verwendung dynamischer Referenzniveaus anstelle von festen Werten für die Entscheidungsfindung
  • Sehr konfigurierbare Parameter für Anpassungen auf der Grundlage verschiedener Märkte
  • Ausgezeichnete Ergebnisse bei Backtests über 10 Jahre, deutlich bessere Ergebnisse als bei Buy and Hold

Risiken und Verbesserungen

  • Entscheidungen, die ausschließlich auf einem Indikator beruhen, können andere Indikatoren oder Filter hinzufügen
  • Festgelegte hohe Verschuldungsquote, die sich anhand der Abzüge anpassen kann
  • Nur lange Trades können nach Shorting-Möglichkeiten suchen
  • Optimierung von Parameterkombinationen, die auf verschiedenen Märkten erheblich variieren
  • Die Ausgangszustände mit Stop-Loss, Move-Stop-Loss usw. bereichern.
  • Erwägen Sie die Kombination mit anderen Strategien für synergistische Effekte

Zusammenfassung

Die kumulative RSI-Breakout-Strategie hat einen reibungslosen Logikfluss und identifiziert mittelfristige bis langfristige Trends durch Filtern mit kumulativem RSI und Hinzufügen von Trendbeurteilungen.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
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/
// @version=5
// Author = TradeAutomation


strategy(title="Cumulative RSI Strategy", shorttitle="CRSI Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_contract, commission_value=.0035, slippage = 1, margin_long = 75, initial_capital = 25000, default_qty_type=strategy.percent_of_equity, default_qty_value=110)


// Cumulative RSI Indicator Calculations //
rlen  = input.int(title="RSI Length", defval=3, minval=1)
cumlen = input(3, "RSI Cumulation Length")
rsi = ta.rsi(close, rlen)
cumRSI = math.sum(rsi, cumlen)
ob = (100*cumlen*input(94, "Oversold Level")*.01)
os = (100*cumlen*input(20, "Overbought Level")*.01)


// Operational Function //
TrendFilterInput = input(false, "Only Trade When Price is Above EMA?")
ema = ta.ema(close, input(100, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)


// Backtest Timeframe Inputs // 
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2010, minval=1950, maxval=2100)
endDate = input.int(title="End Date", defval=1, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=1, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2099, minval=1950, maxval=2100)
InDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))


// Buy and Sell Functions //
if (InDateRange and TrendFilterInput==true)
    strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os) and TrendisLong, comment="Buy", alert_message="buy")
    strategy.close("Long", when = ta.crossover(cumRSI, ob) , comment="Sell", alert_message="Sell")
if (InDateRange and TrendFilterInput==false)
    strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os), comment="Buy", alert_message="buy")
    strategy.close("Long", when = ta.crossover(cumRSI, ob), comment="Sell", alert_message="sell")
if (not InDateRange)
    strategy.close_all()

Mehr