
La stratégie d’inversion de tendance croisée de SPY RSI Stochastics est une stratégie de négociation quantitative qui utilise les croisements de lignes lentes et rapides de l’indicateur RSI pour juger de la reprise des prix. Cette stratégie combine des lignes lentes, rapides et MA pour générer des signaux d’achat et de vente dans certaines conditions afin de capturer de grandes opportunités de reprise des prix.
La logique centrale de la stratégie est basée sur la croisée des lignes rapides et lentes de l’indicateur RSI. Le RSI est généralement inversé dans les zones de survente et de survente, de sorte que le moment où le prix peut être inversé peut être déterminé à l’avance en jugeant le forfait et le forfait de la ligne RSI rapide par rapport à la ligne RSI lente.
Un signal d’achat est généré lorsque le RSI rapide traverse le RSI lent (fork) et que le RSI rapide traverse le MA. Un signal de vente est généré lorsque le RSI rapide traverse le RSI lent (fork) et que le RSI rapide traverse le MA.
De plus, pour filtrer une partie de la transaction bruyante, la stratégie utilise la logique suivante:
Il y a deux conditions à remplir pour se retirer:
Le plus grand avantage de la stratégie de reprise de tendance croisée de SPY RSI Stochastics est qu’elle permet de capturer la tendance avant qu’une reprise plus évidente ne se produise. En croisant les lignes RSI plus lentement, elle peut émettre des signaux de négociation à l’avance pour créer des opportunités d’entrée.
Dans l’ensemble, cette stratégie, combinée au suivi des tendances et à l’appréciation des retournements de valeur, permet de saisir dans une certaine mesure le moment où les prix se retournent et présente une grande utilité.
Bien qu’il y ait des avantages à une stratégie de revers de tendance croisée, les principaux risques sont les suivants:
La stratégie peut être optimisée et améliorée pour ces risques en:
La stratégie de rétrogradation de la valeur croisée du SPY RSI Stochastics peut être optimisée principalement dans les domaines suivants:
Ces optimisations peuvent rendre les paramètres de la stratégie plus intelligents, les signaux plus fiables, tout en adaptant les règles de la stratégie aux changements du marché, ce qui améliore considérablement la rentabilité stable de la stratégie.
SPY RSI Stochastics a conçu une stratégie de trading quantitatif relativement simple et claire en jugeant les croisements de la ligne RSI. Elle combine les caractéristiques du suivi de la tendance et du trading inverse pour saisir dans une certaine mesure le moment de la reprise des prix. Mais la stratégie présente également des lacunes inhérentes qui nécessitent une optimisation des paramètres, des caractéristiques et des modèles pour contrôler les risques et améliorer la qualité du signal.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SPY Auto RSI Stochastics", pyramiding = 3)
// Input parameters
slowRSILength = input(64, title="SLOW RSI Length")
fastRSILength = input(9, title="FAST RSI Length")
smaRSILength = input(3, title="RSI SMA Length")
RSIUpperThreshold = input(83, title="RSI Upper")
RSILowerThreshold = input(25, title="RSI Lower")
RSIUpperDeadzone = input(61, title='RSI Upper Deadzone')
RSILowerDeadzone = input(39, title='RSI Lower Deadzone')
blockedDays = (dayofweek(time) == 1 or dayofweek(time) == 7)
sessionMarket = input("0900-0900", title="Session Start")
allowedTimes() => time(timeframe = timeframe.period, session = sessionMarket, timezone = "GMT+1")
isvalidTradeTime =true
// RSI and ATR
slowRSI = ta.rsi(close, slowRSILength)
fastRSI = ta.rsi(close, fastRSILength)
smaRSI = ta.sma(fastRSI, smaRSILength)
rsi = fastRSI
// Entry condition
RSIUptrend() => ta.crossover(fastRSI, slowRSI) and ta.crossover(fastRSI, smaRSI)
RSIDowntrend() => ta.crossunder(fastRSI, slowRSI) and ta.crossunder(fastRSI, smaRSI)
isRSIDeadzone() =>
rsi < RSIUpperDeadzone and rsi > RSILowerDeadzone
isBullishEngulfing() =>
close > high[1]
isBearishEngulfing() =>
close < low[1]
// Declare variables
var float initialSLLong = na
var float initialTPLong = na
var float initialSLShort = na
var float initialTPShort = na
//var bool inATrade = false
entryConditionLong = RSIUptrend() and not isRSIDeadzone() and isvalidTradeTime
entryConditionShort = RSIDowntrend() and not isRSIDeadzone() and isvalidTradeTime
exitConditionLong = entryConditionShort or fastRSI > RSIUpperThreshold
exitConditionShort = entryConditionLong or fastRSI < RSILowerThreshold
if (entryConditionLong)
strategy.entry(id = "Long", direction = strategy.long, alert_message = 'LONG! beep boop, all aboard the long train')
if (entryConditionShort)
strategy.entry(id = "Short", direction = strategy.short, alert_message = 'Short! beep boop, all aboard the short train')
if (exitConditionLong)
strategy.exit("Long", from_entry="Long", limit=close, alert_message = 'Stop Long, halt halt, take the profits and runnn')
if (exitConditionShort)
strategy.exit("Short", from_entry="Short", limit=close, alert_message = 'Stop Short, halt halt, take the profits and runnn')
//plot(smaRSI, "RSI MA", color=color.red)
plot(slowRSI, "Slow RSI", color=color.green)
//plot(fastRSI, "Fast RSI", color=color.white)
plot(smaRSI, "SMA RSI", color=color.white)