RSI-Trendstrategie

RSI SMA EMA
Erstellungsdatum: 2024-06-14 15:28:38 zuletzt geändert: 2024-06-14 15:28:38
Kopie: 0 Klicks: 562
1
konzentrieren Sie sich auf
1617
Anhänger

RSI-Trendstrategie

Überblick

Die Strategie basiert auf einem relativ starken (RSI) Indikator, um ein Kauf- und Verkaufssignal zu ermitteln, indem sie beurteilt, ob der Wert des RSI-Indikators die vorgegebenen Auf- und Abwärtswerte überschreitet. Die Strategie setzt außerdem Stop-Loss- und Haltedauerlimits, um das Risiko zu kontrollieren.

Strategieprinzip

  1. Berechnen Sie den RSI.
  2. Ein Kaufsignal wird erzeugt, wenn der RSI-Wert unter der vorgegebenen Kauf-Trenche liegt, und ein Verkaufssignal wird erzeugt, wenn der RSI-Wert über der vorgegebenen Verkaufs-Trenche liegt.
  3. Nach dem Kaufsignal berechnen Sie die Kaufmenge zum aktuellen Schlusskurs und bestellen Sie den Kauf.
  4. Wenn die Stop-Loss-Ratio festgelegt ist, berechnet man den Stop-Loss-Preis und gibt eine Stop-Loss-Bestellung.
  5. Alle Positionen werden nach Verkaufssignalen oder Stop-Loss-Bedingungen platziert.
  6. Wenn die maximale Haltedauer eingestellt ist, werden alle Positionen, unabhängig von den Gewinnen und Verlusten, platziert, wenn die Haltedauer die maximale Haltedauer überschreitet.

Strategische Vorteile

  1. Der RSI-Indikator ist ein weit verbreiteter Indikator für die technische Analyse, der die Überkauf- und Überverkaufssignale des Marktes effektiv erfasst.
  2. Die Strategie führt Stop-Loss- und Haltungszeitbeschränkungen ein, die zur Risikokontrolle beitragen.
  3. Die Strategie ist klar, leicht zu verstehen und umzusetzen.
  4. Durch die Anpassung der Parameter und der Schwellen des RSI kann er sich an unterschiedliche Marktbedingungen anpassen.

Strategisches Risiko

  1. Der RSI-Indikator kann unter bestimmten Umständen ein falsches Signal geben, was zu Verlusten bei der Strategie führt.
  2. Die Strategie berücksichtigt nicht die grundlegenden Faktoren der gehandelten Sorten, sondern verlässt sich ausschließlich auf technische Indikatoren, die das Risiko von Marktausbrüchen bergen können.
  3. Ein festes Stop-Loss-Verhältnis kann nicht an die Volatilität des Marktes angepasst werden.
  4. Die Performance einer Strategie kann durch die Einstellung von Parametern beeinflusst werden, und unangemessene Parameter können zu einer schlechten Performance der Strategie führen.

Richtung der Strategieoptimierung

  1. Die Einführung anderer technischer Indikatoren, wie beispielsweise der Moving Averages, erhöht die Zuverlässigkeit der Strategie.
  2. Optimierung von Stop-Loss-Strategien, wie beispielsweise mobile Stop-Loss-Strategien oder dynamische Stop-Loss-Strategien auf Basis von Volatilität.
  3. Die Parameter und Schwellenwerte des RSI werden dynamisch an die Marktlage angepasst.
  4. Zusammen mit der Analyse der Fundamentaldaten der Handelsarten zur Verbesserung der Risikokontrolle der Strategie.
  5. Die Strategie wird getestet und optimiert, um die optimale Kombination von Parametern zu finden.

Zusammenfassen

Die Strategie nutzt die RSI-Indikatoren, um Überkauf- und Überverkaufsignale des Marktes zu erfassen, und führt Stop-Loss- und Haltedauerbeschränkungen ein, um das Risiko zu kontrollieren. Die Strategielogik ist einfach, einfach zu implementieren und zu optimieren. Die Strategie kann jedoch von Marktfluktuationen und Parameter-Einstellungen beeinflusst werden.

Strategiequellcode
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple RSI Strategy", overlay=true,  initial_capital=20, commission_value=0.1, commission_type=strategy.commission.percent)

// Define the hardcoded date (Year, Month, Day, Hour, Minute)
var hardcodedYear = 2024
var hardcodedMonth = 6
var hardcodedDay = 10

// Convert the hardcoded date to a timestamp
var start_date = timestamp(hardcodedYear, hardcodedMonth, hardcodedDay)

// settings
order_size_usdt = input.float(20, title="Order Size (USDT)")
rsiLength = input.int(9, title="RSI Length")
rsiBuyThreshold = input.int(30, title="RSI Buy Threshold")
rsiSellThreshold = input.int(70, title="RSI Sell Threshold")
rsibuystrat = input.int(1, title="buy strat 1=achieved,2=recross")
rsisellstrat = input.int(1, title="sell strat 1=achieved,2=recross")
stoploss = input.int(1, title="Stop loss percent")
max_duration = input(24, title="Max Position Duration (hours)")*60

// emaPeriod = input.int(50, title="EMA Period")
// smaPeriod = input.int(200, title="SMA Period")

rsi = ta.rsi(close, rsiLength) 
// ma_rsi = ta.sma(rsi, rsiLength)
// ema = ta.ema(close,emaPeriod)
// sma = ta.sma(close,smaPeriod)
// plot(sma, color=color.red, title="exp Moving Average")
// plot(smal, color=color.blue, title="Simple Moving Average")

longCondition = ((ta.crossunder(rsi, rsiBuyThreshold) and rsibuystrat==1) or (ta.crossover(rsi, rsiBuyThreshold) and rsibuystrat==2) ) and strategy.position_size == 0
shortCondition = ( (ta.crossover(rsi, rsiSellThreshold) and rsisellstrat==1) or (ta.crossunder(rsi, rsiSellThreshold) and rsisellstrat==2) ) and strategy.position_size > 0 

// Execute Buy and Sell orders
if (longCondition)
	positionSize = order_size_usdt / close
	strategy.entry("Long", strategy.long,qty=positionSize)
	if (stoploss>0)
		stopLossPrice = close * (1 - stoploss/100 )
		strategy.exit("Stop Loss", from_entry="Long", stop=stopLossPrice)
	
if (shortCondition )//or stopCondition)
	strategy.close("Long")

//add condition open time
if (strategy.position_size > 0 and max_duration >0)
	var float entry_time = na
	if (strategy.opentrades > 0)
		entry_time := nz(strategy.opentrades.entry_time(0), na)
	else
		entry_time := na

	current_time = time
	var float duration_minutes = -1
	if (not na(entry_time))
		duration_minutes := (current_time - entry_time) / 60000

	
	// Close positions after a certain duration (e.g., 60 minutes)
	// if ( duration_minutes > max_duration and close>=strategy.opentrades.entry_price(0))
	if ( duration_minutes > max_duration )
		label.new(bar_index, high, text="Duration: " + str.tostring(duration_minutes/60) + " hrs", color=color.blue, textcolor=color.white, style=label.style_label_down, size=size.small)
		strategy.close("Long")


// Plot Buy and Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
//plotshape(series=stopCondition, title="stop Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plot RSI
// hline(rsiBuyThreshold, "RSI Buy Threshold", color=color.green)
// hline(rsiSellThreshold, "RSI Sell Threshold", color=color.red)