Stratégie de tendance RSI

RSI SMA EMA
Date de création: 2024-06-14 15:28:38 Dernière modification: 2024-06-14 15:28:38
Copier: 0 Nombre de clics: 562
1
Suivre
1617
Abonnés

Stratégie de tendance RSI

Aperçu

La stratégie est basée sur l’indicateur de force relative (RSI) pour déterminer les signaux d’achat et de vente en jugeant si la valeur de l’indicateur RSI est supérieure ou inférieure à la valeur de basculement prédéfinie. La stratégie définit également des limites de temps de stop-loss et de tenue de position pour contrôler les risques.

Principe de stratégie

  1. Calculer le RSI
  2. Un signal d’achat est généré lorsque le RSI est inférieur au seuil de vente par défaut; un signal de vente est généré lorsque le RSI est supérieur au seuil de vente par défaut.
  3. Selon le signal d’achat, le nombre d’achats est calculé sur la base du prix de clôture actuel et les commandes sont achetées.
  4. Si le ratio de stop-loss est défini, le prix de stop-loss est calculé et le stop-loss est placé.
  5. La position de tous les détenteurs d’une position de placement est levée en fonction du signal de vente ou de la condition de stop-loss.
  6. Si le temps de détention maximal est défini, tous les détenteurs de positions sont liquidés après que le temps de détention dépasse le temps de détention maximal, quel que soit le gain ou la perte.

Avantages stratégiques

  1. L’indicateur RSI est un indicateur d’analyse technique largement utilisé pour capturer efficacement les signaux de survente et de survente du marché.
  2. La stratégie introduit des limites de stop loss et de tenue de position pour aider à contrôler les risques.
  3. La logique de la stratégie est claire, facile à comprendre et à mettre en œuvre.
  4. Il est possible de s’adapter à différentes conditions de marché en ajustant les paramètres et les seuils du RSI.

Risque stratégique

  1. L’indicateur RSI peut émettre des signaux erronés dans certains cas, ce qui entraîne des pertes pour la stratégie.
  2. La stratégie ne prend pas en compte les facteurs fondamentaux des variétés négociées et repose uniquement sur des indicateurs techniques, qui peuvent présenter un risque d’événements inattendus sur le marché.
  3. Le taux de stop-loss fixe peut ne pas s’adapter à la volatilité du marché.
  4. La performance d’une stratégie peut être influencée par les paramètres, et des paramètres inappropriés peuvent entraîner une mauvaise performance de la stratégie.

Orientation de l’optimisation de la stratégie

  1. L’introduction d’autres indicateurs techniques tels que les moyennes mobiles améliore la fiabilité de la stratégie.
  2. Optimiser les stratégies de stop loss, par exemple en utilisant des stop loss mobiles ou des stop loss dynamiques basés sur la volatilité.
  3. Les paramètres et les seuils du RSI sont ajustés en fonction de la dynamique du marché.
  4. Combiner l’analyse des fondamentaux de la variété des transactions pour améliorer la capacité de contrôle des risques de la stratégie.
  5. Les stratégies sont testées et optimisées pour trouver la meilleure combinaison de paramètres.

Résumer

La stratégie utilise l’indicateur RSI pour capturer les signaux de surachat et de survente du marché, tout en introduisant des limites de stop-loss et de temps de tenue pour contrôler les risques. La logique de la stratégie est simple, facile à mettre en œuvre et à optimiser. Cependant, la performance de la stratégie peut être affectée par les fluctuations du marché et les paramètres de réglage, ce qui nécessite une combinaison d’autres méthodes d’analyse et de gestion des risques pour améliorer la solidité et la rentabilité de la stratégie.

Code source de la stratégie
/*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)