Cette stratégie intègre les bandes de Bollinger, l'indice de force relative (RSI) et la moyenne mobile exponentielle (EMA) trois indicateurs pour mettre en œuvre une stratégie de trading automatique avec de longues périodes de détention pour les actions. Elle génère des signaux d'achat lorsque le RSI est en dessous de la ligne de survente et que le prix est proche ou touche le rail inférieur des bandes de Bollinger, et génère des signaux de vente lorsque le prix augmente pour toucher le rail supérieur des bandes de Bollinger, en utilisant les bandes de Bollinger pour déterminer les tendances du marché et le statut de survente / survente pour une double confirmation.
Cette stratégie juge principalement sur la base des bandes de Bollinger, du RSI et de trois indicateurs EMA. Le rail du milieu des bandes de Bollinger est la moyenne mobile simple du prix, et les rails supérieur et inférieur sont deux plages de déviation standard du prix. Les bandes de Bollinger peuvent juger de l'état de surachat / survente du marché. Lorsque le prix est proche du rail inférieur, il indique un état de survente, et lorsque le prix est proche du rail supérieur, il indique un état de survente. Le RSI est l'un des indicateurs importants pour juger si un stock est suracheté ou survendu.
Le signal d'achat pour cette stratégie est généré lorsque le RSI est en dessous de la ligne de survente de 30 et que, en même temps, le prix a approché ou touché le rail inférieur des bandes de Bollinger en survente.
Le signal de vente est généré lorsque le prix touche le rail supérieur des bandes de Bollinger pendant une tendance haussière.
Les solutions:
La stratégie peut être encore optimisée dans les aspects suivants:
La stratégie intègre les bandes de Bollinger, le RSI et l'EMA pour une stratégie de trading automatique de long terme avec des filtres à double confirmation. La double confirmation du statut de surachat/survente évite efficacement les faux signaux, et l'utilisation de l'EMA pour la détermination de la tendance empêche le trading contre la tendance. Pendant ce temps, les paramètres flexibles la rendent adaptable à différents stocks. Une amélioration supplémentaire des aspects des mécanismes de stop loss et de sortie peut améliorer l'efficacité et la gestion des risques de la stratégie.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by ChartArt) v1.3", shorttitle="rsi 30 min ADJ Buy", overlay=true) ///////////// RSI RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length RSIoverSold = input(30, title="RSI Oversold Level") // Adjustable RSI oversold level RSIoverBought = input(80, title="RSI Overbought Level") // Adjustable RSI overbought level price = close vrsi = rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input(231, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length BBmult = 2 BBbasis = sma(price, BBlength) BBdev = BBmult * stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev ///////////// EMA useEMA = input(true, title="Use EMA?") emaLength = input(20, title="EMA Period Length") ema = useEMA ? ema(close, emaLength) : na source = close buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band sellEntry = crossunder(source, BBupper) ///////////// Plotting plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line") plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line") plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line") plot(ema, color=color.orange, title="EMA") // Plot EMA ///////////// RSI + Bollinger Bands Strategy long = crossover(vrsi, RSIoverSold) and buyEntry close_long = close >= BBupper if (not na(vrsi)) if long strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy") else strategy.cancel(id="Buy") if close_long strategy.close("Buy")